What if your security and development teams are wasting over 85% of their time on vulnerabilities that pose no real threat? According to studies from organizations like Sonatype, that’s the reality. Less than 15% of vulnerabilities found in open-source libraries are actually exploitable within a specific application’s context. This flood of false positives creates massive bottlenecks, developer friction, and a culture of alert fatigue where real threats can get lost in the noise. The core problem isn’t a lack of information. It’s a lack of context. Your Software Bill of Materials (SBOM) gives you a fantastic ingredient list for your application, but it doesn’t tell you if one of those ingredients is actually toxic in your specific recipe. This is where the challenge of modern software supply chain security lies and where a new model of Automated DevSecOps Governance becomes essential.
This isn’t just about scanning more. It’s about scanning smarter. By integrating the Vulnerability Exploitability eXchange (VEX) framework alongside your SBOMs directly within the CI/CD pipeline, you can create a powerful, automated system for real-time risk triage. You shift the conversation from “Is this vulnerability present?” to “Is this vulnerability exploitable here?” This article provides a practical blueprint for building that system.
How to Practically Integrate VEX into Your CI/CD Pipeline
Integrating VEX isn’t an abstract concept. It’s a concrete set of steps you can add to your existing CI/CD workflows, whether you’re using Jenkins, GitLab CI, or GitHub Actions. The goal is to make a VEX check a required gate in your build process, right after you generate an SBOM.
A typical workflow looks like this:
- Code Commit & Build Trigger: A developer pushes code, triggering the pipeline.
- SBOM Generation: A tool like Trivy, Grype, or a vendor-specific scanner runs, generating an SBOM in a standard format like CycloneDX or SPDX. This catalogs every open-source component and its version.
- Vulnerability Scan: The SBOM is scanned against vulnerability databases to identify known CVEs.
- VEX Consumption (The New Step): This is the critical addition. The pipeline now queries a VEX data source: This could be a local file, a dedicated service, or an API. The pipeline checks each reported CVE against the VEX data to see its status:
affected,not_affected,fixed, orunder_investigation. - Policy Enforcement: The pipeline’s policy engine makes a go/no-go decision based on the VEX-enriched data, not just raw CVE scores.
For example, in a GitHub Actions workflow, this would be a new step in your YAML file. After your SBOM generation step, you would run a script that takes the SBOM as input, cross-references it with your VEX source, and outputs a simple JSON result that the next step can use to enforce your policy.
Essential Tooling for Generating and Consuming VEX and SBOMs
To implement this, you need the right tools for the job. While the VEX tooling ecosystem is still maturing, a robust stack can be built today using primarily open-source components.
- SBOM Generators: You are likely already using these. Tools like Syft, Trivy, and the CycloneDX CLI are excellent for generating accurate SBOMs from container images, file systems, or source repositories.
- VEX Generators and Managers: This is the emerging piece. OpenVEX is a promising open-source project providing specifications and tools for working with VEX. For many organizations, the initial VEX documents will be created by their security teams; They analyze a vulnerability and issue a VEX statement declaring it’s ‘not_affected’ because, for example, the vulnerable function is never called by the application. This statement is then stored in a central location, like a Git repository or an artifact manager.
- Policy Engines: Policy-as-code is the brain of your automated governance. Open Policy Agent (OPA) is the de facto standard here. OPA allows you to write declarative policies in a language called Rego. Your pipeline feeds the vulnerability and VEX data to OPA, which returns a pass or fail decision. This decouples your policy logic from your CI/CD scripting, making it easier to manage.
Think of it like this: your SBOM tool lists the ingredients. Your VEX document is a note from the security chef saying, “Don’t worry about the peanuts, this dish is never served to anyone with a peanut allergy”; OPA is the head waiter who reads the note and gives the final approval before the dish leaves the kitchen.
Building ‘Break-the-Build’ Policies with Policy-as-Code
The real power of this system comes from changing why you break a build. The old way was blunt: IF CVSS_Score > 8.0 THEN BREAK_BUILD. This simplistic rule is the source of all the false-positive pain. It ignores context completely.
The new, VEX-aware rule is far more intelligent:
BREAK_BUILD IF VEX_Status == 'affected' AND CVSS_Score > 7.0
Or, even more powerfully, you can create nuanced policies:
CREATE_P1_TICKET IF VEX_Status == 'affected'
LOG_WARNING IF VEX_Status == 'under_investigation'
PASS_BUILD IF VEX_Status == 'not_affected'
Using OPA, you can write these rules in Rego. Your CI script would package the vulnerability data and VEX status into a JSON object and send it to the OPA engine. The policy might look something like this (in simplified form):
deny[msg] {
input.vulnerability.status == "affected"
input.vulnerability.cvss_score >= 7.0
msg := "Build failed due to exploitable high-severity vulnerability"
}
This policy-as-code approach is central to achieving true Automated DevSecOps Governance. It makes your risk appetite explicit, version-controlled, and automatically enforced, removing subjective manual reviews from the critical path.
A Practical Workflow for Managing VEX Documents
A common question is, “Where do VEX documents come from, and how do we keep them current?” This requires a simple but disciplined workflow that bridges security and development.
- Initial Triage: When a new high-profile vulnerability (like Log4Shell) is announced, a security engineer performs an initial analysis to determine if your products are affected. They create a VEX document for each application, stating the initial status: perhaps
under_investigation. - Deep Dive & Attestation: The engineer or a development team confirms the context. Is the vulnerable code path reachable? Is the affected feature enabled? Based on this, they update the VEX document to
affectedornot_affected. This document is a signed attestation. - Centralized Storage: This VEX document is stored in a version-controlled repository. This creates an auditable record of every risk decision.
- Automated Consumption: The CI/CD pipeline, as described above, automatically pulls the relevant VEX document during every build. It trusts the attestation and acts accordingly.
- Continuous Monitoring: The security team must monitor for new information. If a previously ‘unexploitable’ vulnerability is found to be exploitable through a new technique, the team updates the VEX document. The next build that runs will automatically pick up the new status and fail, preventing a deployment with a newly relevant risk.
This workflow turns the chaotic, reactive process of manual triage into a proactive, auditable, and highly automated system for governance. It directly addresses the CISA directive to better secure the software supply chain by providing a machine-readable mechanism for communicating risk.
Your development teams are your greatest asset, but they are drowning in low-context security alerts. Implementing Automated DevSecOps Governance with VEX and SBOMs gives them the context they need to move fast and fix what matters. The technology allows you to automate trust, codify policy, and prove compliance, reducing vulnerability remediation times by over 50%. Looking ahead, we can expect AI-driven tools to further automate the VEX creation process itself, predicting exploitability based on code analysis. But the foundation you build today with these practical steps will position you to lead, not react, in the evolving landscape of software supply chain security.
Download our technical guide to implementing an automated VEX and SBOM workflow in your CI/CD pipeline.
