Skip to main content
  1. Index/

VEX (Vulnerability Exploitability eXchange)

VEX (Vulnerability Exploitability eXchange) is a machine-readable assertion format that answers the question an SBOM alone cannot: given that a product contains a component affected by a known CVE, is that vulnerability actually exploitable in this specific product? An SBOM identifies components and versions; a CVE database maps those versions to known vulnerabilities; but the intersection of the two systematically overstates actual risk. A container image built on a minimal base may include a library with a known buffer overflow in a network-parsing function — but if that function is never called by anything in the image, or the affected code path requires a configuration flag that is hardcoded off, the CVE is present but not exploitable. Without VEX, every scanner that ingests the SBOM raises an alert; with VEX, the supplier asserts the non-exploitability with a machine-readable justification that automated tooling can consume to suppress the alert without human triage. VEX originated in the same NTIA multistakeholder process that produced the SBOM minimum elements framework, and was formalised by CISA in 2021–2022.

A VEX document (or VEX statement embedded in a CycloneDX SBOM) asserts one of four statuses per vulnerability-per-product pair. Not affected means the product contains the vulnerable component but the vulnerability is not exploitable in this product; this is the most common and most useful status, and it requires a mandatory justification from a defined set — including: the vulnerable code is not present (dead code, excluded at compile time), the vulnerable code cannot be reached by the attack vector (requires a code path that doesn’t exist in the product), the product has an inline mitigation (input validation upstream of the vulnerable function), or the component is protected by the product’s environment (sandboxing, SELinux, seccomp). Affected means the product is impacted and remediation is needed; this may include an action statement (update to version X, apply workaround Y). Fixed means a prior “affected” status has been resolved in the current product version. Under investigation is a time-bounded transitional status indicating the supplier is actively assessing exploitability. The combination of status and justification is what makes VEX machine-actionable: a scanner can automatically close an alert if it receives a signed not_affected VEX statement with a valid justification from the product’s supplier, without requiring a human to read a prose advisory.

Three formats implement VEX, reflecting the still-evolving standardisation landscape. CSAF VEX (Common Security Advisory Framework, OASIS standard, used by Red Hat, Microsoft, and major enterprise vendors) is a profile of the CSAF 2.0 advisory format and the most widely adopted format for large software suppliers publishing product security advisories. CycloneDX VEX embeds VEX statements directly inside a CycloneDX SBOM using the vulnerabilities section, making the SBOM itself the carrier of exploitability status — convenient for toolchains that already produce CycloneDX SBOMs and want a single document. OpenVEX (originally from Chainguard, now an independent specification) is a minimal, format-agnostic JSON-LD schema designed to be attached to OCI container images as a signed referrer via the OCI Referrers API, with vexctl as its tooling layer. All three share the same four status values and the same justification categories; the differences are in schema, tooling ecosystem, and distribution model. In practice, consumers must handle all three formats, as different suppliers use different ones. VEX documents are most useful when signed — a signed VEX statement attached to a container image as an ORAS-managed referrer, with the signature rooted in Sigstore or a private PKI, allows automated policy engines (Kyverno, OPA Gatekeeper) to verify that the exploitability assessment comes from the software supplier and has not been tampered with, making VEX part of the verifiable supply chain alongside the SBOM and cosign signature.

Related

SBOM (Software Bill of Materials)

A Software Bill of Materials (SBOM) is a structured, machine-readable list of the components that make up a software artifact: open-source libraries, proprietary packages, operating system packages, programming language dependencies, and the transitive dependencies of all of the above. It is the software analogue of the ingredient list on packaged food — the thing that tells a consumer (or an automated system) precisely what is inside. The term and concept predate current security mandates but became a regulatory requirement in the US through Executive Order 14028 (May 2021), which directed NIST and NTIA to define minimum SBOM elements for software sold to the federal government. The NTIA’s resulting guidance specifies seven minimum data fields per component: supplier name, component name, version, component identifier (CPE or PURL), dependency relationships, SBOM author, and timestamp. The practical use cases SBOMs enable are vulnerability management (correlating component versions against CVE databases to identify affected software), licence compliance (detecting GPL or other licence obligations across the dependency graph), and incident response (determining within minutes which systems in a fleet contain a newly-disclosed vulnerable component, as organisations that had SBOMs could do during the Log4Shell response and those without could not).

CVSS (Common Vulnerability Scoring System)

CVSS (Common Vulnerability Scoring System) is an open framework published by FIRST (Forum of Incident Response and Security Teams) for characterising and communicating the technical severity of software vulnerabilities through a standardised numerical score. The current version is CVSS v4.0 (released November 2023), which introduced a fourth metric group and clarified nomenclature to address the persistent misuse of CVSS Base scores as standalone risk measurements. CVSS scores appear in the NVD (National Vulnerability Database), CVE entries, scanner output from Qualys, Tenable, Rapid7, Grype, and Trivy, and in compliance frameworks that specify remediation SLAs based on severity bands — “critical (9.0–10.0) within 15 days, high (7.0–8.9) within 30 days.” The score ranges from 0.0 (no impact) to 10.0 (maximum severity) and maps to five qualitative ratings: None (0.0), Low (0.1–3.9), Medium (4.0–6.9), High (7.0–8.9), and Critical (9.0–10.0).

KEV (CISA Known Exploited Vulnerabilities Catalog)

The CISA Known Exploited Vulnerabilities (KEV) Catalog is a living database maintained by the US Cybersecurity and Infrastructure Security Agency that lists CVEs for which CISA has obtained reliable evidence of active exploitation in the wild. It was established under Binding Operational Directive 22-01 (BOD 22-01), issued in November 2021, which requires all US Federal Civilian Executive Branch (FCEB) agencies to remediate KEV-listed vulnerabilities within prescribed timeframes — typically 2 weeks for critical vulnerabilities and up to 6 months for older ones. A vulnerability must meet three criteria to be added: it must have a CVE ID, there must be reliable evidence of exploitation in the wild (not just a proof-of-concept or theoretical risk), and there must be clear remediation guidance available. CISA accepts nominations from the public and adds vulnerabilities continuously; the catalog is available in CSV and JSON formats at a stable URL, making it machine-consumable for integration into vulnerability management platforms and asset inventory tools.