Glossary

Upwind Glossary

Your hub to learn about the future of cloud security and runtime.
Feed
Grid

Code Security

Software supply chain security: risks, frameworks, and best practices
October 9, 2026

Software supply chain security: risks, frameworks, and best practices

Modern applications are assembled more than they are written. A typical service pulls in hundreds of transitive packages, a base container image, third-party GitHub Actions and cloud-managed build tools, and an attacker can use any one of them as a way in. Software supply chain security is the practice of protecting every component, tool, person…
10 best DAST tools for 2026: dynamic application scanners compared
October 8, 2026

10 best DAST tools for 2026: dynamic application scanners compared

The best DAST tools for 2026 are Upwind (for runtime validation of what scanners find), Escape, Snyk API & Web, Bright Security, StackHawk, Burp Suite DAST, Invicti, OWASP ZAP, Tenable Web App Scanning and Nikto. Each one fits a different mix of API coverage, CI/CD automation and budget. Dynamic application security testing (DAST) communicates with…
10 best SAST tools for 2026: static code scanners compared
October 8, 2026

10 best SAST tools for 2026: static code scanners compared

The 10 best SAST tools for 2026 are Upwind (for runtime context on code findings), ZeroPath, Aikido Security, Semgrep, Snyk Code, Checkmarx, Veracode, GitHub CodeQL, SonarQube and OpenText Fortify. Static application security testing (SAST) scans source code, bytecode or binaries for vulnerabilities before the application runs. Traditional SAST was built for human-paced commits and nightly…
What is ASPM? Application security posture management explained
October 8, 2026

What is ASPM? Application security posture management explained

ASPM (application security posture management) is an approach and category of tooling that consolidates findings from every application security tool into one view, correlates them to the applications and owners they affect, and prioritizes remediation by real risk across the software lifecycle. ASPM does not add another scanner. It sits above the scanners and turns…
10 best software composition analysis (SCA) tools for 2026
October 8, 2026

10 best software composition analysis (SCA) tools for 2026

The 10 best software composition analysis tools for 2026 are Upwind, Snyk Open Source, Black Duck, FOSSA, SonarQube, GitLab, Semgrep Supply Chain, OWASP Dependency-Check, Anchore Syft + Grype and OWASP Dependency-Track. Each one fits a different job. Some are developer-first scanners, some focus on license governance, some are free open-source utilities, and one, Upwind, adds…
Top 11 CI/CD security tools for 2026 to protect your pipeline
October 6, 2026

Top 12 CI/CD security tools for 2026 to protect your pipeline

The best CI/CD security tools for 2026 are Upwind, Wiz, Palo Alto Networks Cortex Cloud, Aqua Security, GitLab CI/CD, GitHub Actions, Jenkins, Argo CD, Harness, the Tekton Chains, Cosign and Rekor signing stack, Trivy and SonarQube. Each one covers a different layer of the pipeline. No single product secures code, dependencies, build runners, artifacts and…
G100-SAST-Securing-Source-Code
June 18, 2025

SAST Fundamentals for Securing Source Code

Developers use SAST (Static Application Security Testing) to safeguard code before deployment, making for better coding practices from the start. But using SAST fundamentals for securing source code isn’t a perfect solution, and apart from building team buy-in and expertise, leaders will find they’re contending with secondary challenges as well: compliance requirements, depth of coverage,…
A cartoon penguin sits on a floating piece of ice against a pale orange background, with the upwind logo in the top right corner—a playful nod to “What is the Linux Kernel.”.
May 7, 2025

What is the Linux Kernel?

As organizational infrastructures shift toward more complex hybrid cloud or containerized environments, the Linux kernel might be brought into hyperfocus. After all, its kernel-level vulnerabilities can be the most critical entry points for attackers. And with the growing adoption of microservices and containers, how the Linux kernel handles them can become a critical point of…
A circular icon with a pink background displays three symbols: a padlock, code bracket, and gear—illustrating the best DevSecOps tools for security, coding, and settings. Upwind is elegantly inscribed in the top right corner.
April 14, 2025

Best Open-Source DevSecOps Tools in 2025

In the past, security was often treated as a late-stage addition in the software development lifecycle (SDLC) — primarily as a safeguard to protect software and its underlying infrastructure. However, with development teams shifting to shorter, more frequent iterations of applications, DevSecOps rose to the fore to become a widespread and ongoing practice for ensuring…
An abstract illustration of two connected bottle shapes, one blue and one red, with a central black band and a white border, evokes the essence of balance akin to the Shared Responsibility Model. The background is a light blue gradient with the upwind logo in white at the top right corner.
January 22, 2025

Understanding the Shared Responsibility Model in Cloud Security

The fragmented nature of responsibilities in cloud security — shaped by the specific cloud service model — means CSPs may secure infrastructure, operating systems, or platforms, while customers are responsible for protecting their data, applications, and configurations. However, nuanced differences and enforcing policies across clouds often throw a wrench into this otherwise straightforward division of…
Software supply chain security: risks, frameworks, and best practices

Software supply chain security: risks, frameworks, and best practices

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
Modern applications are assembled more than they are written. A typical service pulls in hundreds of transitive packages, a base container image, third-party GitHub Actions and cloud-managed build tools, and an attacker can use any one of them as a way in. Software supply chain security is the practice of protecting every component, tool, person…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
10 best DAST tools for 2026: dynamic application scanners compared

10 best DAST tools for 2026: dynamic application scanners compared

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
The best DAST tools for 2026 are Upwind (for runtime validation of what scanners find), Escape, Snyk API & Web, Bright Security, StackHawk, Burp Suite DAST, Invicti, OWASP ZAP, Tenable Web App Scanning and Nikto. Each one fits a different mix of API coverage, CI/CD automation and budget. Dynamic application security testing (DAST) communicates with…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
10 best SAST tools for 2026: static code scanners compared

10 best SAST tools for 2026: static code scanners compared

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
The 10 best SAST tools for 2026 are Upwind (for runtime context on code findings), ZeroPath, Aikido Security, Semgrep, Snyk Code, Checkmarx, Veracode, GitHub CodeQL, SonarQube and OpenText Fortify. Static application security testing (SAST) scans source code, bytecode or binaries for vulnerabilities before the application runs. Traditional SAST was built for human-paced commits and nightly…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
What is ASPM? Application security posture management explained

What is ASPM? Application security posture management explained

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
ASPM (application security posture management) is an approach and category of tooling that consolidates findings from every application security tool into one view, correlates them to the applications and owners they affect, and prioritizes remediation by real risk across the software lifecycle. ASPM does not add another scanner. It sits above the scanners and turns…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
10 best software composition analysis (SCA) tools for 2026

10 best software composition analysis (SCA) tools for 2026

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
The 10 best software composition analysis tools for 2026 are Upwind, Snyk Open Source, Black Duck, FOSSA, SonarQube, GitLab, Semgrep Supply Chain, OWASP Dependency-Check, Anchore Syft + Grype and OWASP Dependency-Track. Each one fits a different job. Some are developer-first scanners, some focus on license governance, some are free open-source utilities, and one, Upwind, adds…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
Top 11 CI/CD security tools for 2026 to protect your pipeline

Top 12 CI/CD security tools for 2026 to protect your pipeline

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
The best CI/CD security tools for 2026 are Upwind, Wiz, Palo Alto Networks Cortex Cloud, Aqua Security, GitLab CI/CD, GitHub Actions, Jenkins, Argo CD, Harness, the Tekton Chains, Cosign and Rekor signing stack, Trivy and SonarQube. Each one covers a different layer of the pipeline. No single product secures code, dependencies, build runners, artifacts and…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
G100-SAST-Securing-Source-Code

SAST Fundamentals for Securing Source Code

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
Developers use SAST (Static Application Security Testing) to safeguard code before deployment, making for better coding practices from the start. But using SAST fundamentals for securing source code isn’t a perfect solution, and apart from building team buy-in and expertise, leaders will find they’re contending with secondary challenges as well: compliance requirements, depth of coverage,…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
A cartoon penguin sits on a floating piece of ice against a pale orange background, with the upwind logo in the top right corner—a playful nod to “What is the Linux Kernel.”.

What is the Linux Kernel?

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
As organizational infrastructures shift toward more complex hybrid cloud or containerized environments, the Linux kernel might be brought into hyperfocus. After all, its kernel-level vulnerabilities can be the most critical entry points for attackers. And with the growing adoption of microservices and containers, how the Linux kernel handles them can become a critical point of…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
A circular icon with a pink background displays three symbols: a padlock, code bracket, and gear—illustrating the best DevSecOps tools for security, coding, and settings. Upwind is elegantly inscribed in the top right corner.

Best Open-Source DevSecOps Tools in 2025

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
In the past, security was often treated as a late-stage addition in the software development lifecycle (SDLC) — primarily as a safeguard to protect software and its underlying infrastructure. However, with development teams shifting to shorter, more frequent iterations of applications, DevSecOps rose to the fore to become a widespread and ongoing practice for ensuring…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
An abstract illustration of two connected bottle shapes, one blue and one red, with a central black band and a white border, evokes the essence of balance akin to the Shared Responsibility Model. The background is a light blue gradient with the upwind logo in white at the top right corner.

Understanding the Shared Responsibility Model in Cloud Security

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
The fragmented nature of responsibilities in cloud security — shaped by the specific cloud service model — means CSPs may secure infrastructure, operating systems, or platforms, while customers are responsible for protecting their data, applications, and configurations. However, nuanced differences and enforcing policies across clouds often throw a wrench into this otherwise straightforward division of…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
An illustration of a clownfish swimming through blue sea anemones in an emblem design on a light purple background. The word upwind appears in the top right corner.

CIEM vs. CSPM: A Comprehensive Comparison

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
To what extent do organizations need fine-grained access control? Or is broader coverage over cloud infrastructure a bigger immediate risk to manage? Which aligns better with GDPR? SOC 2? To counter immediate risk? And is combining these cloud tools just a path to duplicate coverage? Those are all good questions that point to the reality…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
Illustration of a pink flower and a bee inside a blue base glass dome on a light green background, with the word upwind subtly integrated in the top right corner. Also, for those curious minds asking, What is EBPF Security? it’s not found under this dome but within tech marvels!.

Understand eBPF Security: Deep Visibility & Real-Time Threat

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
Extended Berkeley Packet Filter (eBPF) isn’t an agent. And it doesn’t exactly function like one, either. What is it? What does it do, and what security gaps does it close that agents can’t? What about performance? We’re breaking down what eBPF security includes, but then going deeper into visibility tradeoffs, operational overhead, and compliance concerns…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
Add the Upwind RSS Feed to Slack
Connect the Upwind RSS Feed to your Slack.
Follow the how-to here.
Threat RSS
Add the Upwind RSS Feed to Slack
Connect the Upwind RSS Feed to your Slack.
Follow the how-to here.
Main RSS