Free & Open Source
Know which vulnerabilities actually affect you
Search by CVE, or upload an SBOM and / or VEX below. Output in standard OpenVEX.
All vendor statements matching a CVE ID.
Upload a CycloneDX SBOM to see which of its vulnerabilities the vendor says don't actually affect you. Optionally layer your own OpenVEX assertions on top — your statements override vendor statements on collision.
Drop an SBOM, your VEX document, or both — either input is valid on its own.
Drop CycloneDX SBOM
.json — vulnerabilities + components
Drop your VEX
OpenVEX 0.2.0 — your assertions
jq '{sbom: .}' sbom.json | \
curl -X POST https://vex.getreel.dev/v1/analyze \
-H "Content-Type: application/json" \
-d @-Need files? Drop both — the sample VEX models a user who's mitigated three CVEs internally (not_affected / fixed with justifications) and overrides the vendor view in the result table.
Or generate your own SBOM: reel export sbom --scanners vuln --image <ref> > sbom.json
Vendors publish statements saying whether a CVE actually affects their product. Scanners produce long lists of CVEs; VEX lets you quiet the noise.
Vendor confirms the CVE does not affect their product. Safe to suppress.
A fix is available. Update to the patched version.
Vendor is still assessing impact. Monitor for updates.
Vendor confirms the product is exploitable. Plan mitigation.
Where the statements come from
vex-hub aggregates vendor security feeds. Here is what is covered today.
| Vendor | Coverage | Feed |
|---|---|---|
| Red Hat | RHEL plus EUS, AUS, and E4S extended-support streams | CSAF · OVAL |
| SUSE | SUSE Linux Enterprise and openSUSE | CSAF |
| Ubuntu | 20.04, 22.04, 24.04 LTS plus Ubuntu Pro ESM tracks | OpenVEX · OVAL |
| Debian | 11 (bullseye), 12 (bookworm), 13 (trixie) | OVAL |
/v1/statementsSingle canonical query primitive over the VEX statements database. Returns OpenVEX 0.2.0; 204 on empty match.
Filters
| cves | array of CVE IDs — required, ≥1 |
| products | array of PURL or CPE identifiers; runs through the resolver (alias + CPE-prefix expansion) |
| vendors | array — redhat, suse, ubuntu, debian |
| statuses | array — not_affected, affected, fixed, under_investigation |
| justifications | array — OpenVEX 0.2.0 enum (e.g. vulnerable_code_not_present) |
| source_formats | array — csaf, oval |
| since | RFC3339 timestamp; rows updated on or after this |
AND across populated dimensions, IN within each non-empty list. An empty list (or omitted field) means no filter on that dimension.
Example
curl -X POST https://vex.getreel.dev/v1/statements \
-H "Content-Type: application/json" \
-d '{
"cves": ["CVE-2021-44228"],
"products": ["pkg:rpm/redhat/log4j"],
"vendors": ["redhat"],
"statuses": ["not_affected", "fixed"],
"source_formats": ["csaf"],
"since": "2026-01-01T00:00:00Z"
}'Full reference, response shape, and recipes: docs/api.md.
/v1/statsVendor / CVE / statement / product-mapping counts.
// /v1/statements and /v1/analyze are taught inline above — try the search and the uploader