OpenVEX is a minimal, embeddable, machine-readable implementation of VEX — Vulnerability Exploitability eXchange — stewarded within the OpenSSF. Where an SBOM or CBOM tells you what components a product contains, and a scanner tells you which of those components carry known vulnerabilities, VEX answers the question that actually drives triage: is this specific product genuinely affected by this specific vulnerability, and if not, why not? A VEX document is an assertion made by a producer who knows how the component is used, expressed compactly enough to travel alongside a release.
Why it matters
Inventory and scanning tools are tuned to over-report: they flag a vulnerable component wherever it appears, whether or not the vulnerable code path is ever reached. The result is a backlog of findings that buries the few that matter. VEX lets the party who understands the product state exploitability with a justification, so downstream consumers spend remediation effort on real exposure rather than noise. For post-quantum work this is decisive — a cryptographic inventory will surface quantum-vulnerable algorithms across a large estate, and most instances are not equally urgent.
What OpenVEX asserts
VEX defines four status values, each attached to a product-and-vulnerability pair. A not_affected assertion additionally carries a justification explaining why the vulnerable component does not create real exposure — for example, that it is present in the build but not in the execution path:
- **not_affected** — the product is not exploitable by this vulnerability; the assertion must include a justification (e.g. the component is present but never called, or the vulnerable configuration is not enabled).
- **affected** — the product is exploitable; downstream consumers should act, and the statement may carry remediation guidance.
- **fixed** — a released version contains a remediation for the vulnerability.
- **under_investigation** — the producer has not yet determined status; a placeholder that stops consumers from guessing.
In a post-quantum program, OpenVEX becomes the exploitability layer over the inventory. As CBOM enumerates cryptographic assets and SARIF carries the code-scanning findings that flag quantum-vulnerable algorithms, OpenVEX communicates which of those findings are genuinely relevant in a given product context. An RSA usage that only protects an ephemeral, short-lived session key is a different risk from the same algorithm protecting long-lived secrets — VEX is where that distinction is recorded and passed downstream, focusing migration effort where data lifetime makes it count.
A not_affected claim is only as good as its justification
VEX shifts judgment to the producer, and a status of not_affected is only as trustworthy as the analysis behind it. For quantum risk this is a live trap: an algorithm judged "not affected today" can become affected once harvest-now-decrypt-later reasoning is applied to how long the data must stay secret. Treat quantum-related justifications as reviewable claims tied to data lifetime, not as permanent dispositions.
How quantakrypto helps
OpenVEX is only as good as the analysis it encodes, and quantum exploitability is exactly the kind of judgment that is easy to get wrong under time pressure. We build the cryptographic inventory and CBOM that OpenVEX statements reference, then stress-test the justifications behind each not_affected claim against data-lifetime and harvest-now-decrypt-later reasoning (audit) — so the exploitability assertions you publish hold up, and your migration roadmap is driven by real exposure rather than raw scanner counts.
Frequently asked questions
What is the difference between VEX and OpenVEX?
VEX (Vulnerability Exploitability eXchange) is the concept: a producer's assertion of whether a product is actually affected by a vulnerability. OpenVEX is a specific implementation of that concept — a minimal, embeddable, machine-readable document format stewarded within the OpenSSF. Other VEX implementations exist (e.g. CSAF profiles); OpenVEX optimizes for being small and easy to attach to a release.
How does OpenVEX relate to an SBOM or CBOM?
An SBOM or CBOM is an inventory — it lists what components or cryptographic assets a product contains. OpenVEX is a separate, complementary statement about exploitability: given that a component is present and carries a known vulnerability, is this product actually affected? You publish both. The inventory answers 'what is in it'; VEX answers 'does it matter here'.
What does a not_affected status require?
A justification. VEX does not let a producer simply declare not_affected — the assertion must explain why the vulnerable component creates no real exposure, such as the vulnerable code not being in the execution path, or the affected configuration not being enabled. The justification is what makes the claim auditable rather than a bare assurance.
Why does OpenVEX matter specifically for post-quantum migration?
Cryptographic inventory and code scanning will flag every quantum-vulnerable algorithm across an estate, but not all instances carry equal risk. OpenVEX records which findings are genuinely relevant — distinguishing, for example, ephemeral short-lived usage from protection of long-lived secrets. The caution is that 'not affected today' can flip to 'affected' once harvest-now-decrypt-later reasoning is applied to data lifetime, so quantum justifications need periodic review.
Work with us on OpenVEX
Related reading
References
- OpenVEX: the specification and reference tooling (statuses, justifications, and document structure).
- OpenSSF: the Open Source Security Foundation, which stewards the OpenVEX project.
- CISA: Minimum Requirements for Vulnerability Exploitability eXchange (VEX) — the baseline fields and status semantics.