Free & Open Source

vex-hub

Know which vulnerabilities actually matter

Vendors
CVEs
Statements
Product mappings

Search by CVE

All vendor statements matching a CVE ID.

Upload SBOM and / or VEX

What you give it determines what you get back:

You provideYou get back
CycloneDX SBOM with vulnerabilities[]CycloneDX SBOM — annotated with the vendor verdict on each listed vulnerability.
CycloneDX SBOM components onlyCycloneDX SBOM — vulnerabilities filled in from vendor data, then annotated.
VEX only (OpenVEX or CycloneDX)OpenVEX document — your statements merged, with the vendor's view alongside.
SBOM + VEXCycloneDX SBOM — annotated, your VEX overriding the vendor verdict on collision.

Drop an SBOM, a VEX document, or both — either input is valid on its own.

Drop CycloneDX SBOM

.json — vulnerabilities + components

Drop VEX

OpenVEX 0.2.0 or CycloneDX VEX

drop at least one file
Or via API
jq '{sbom: .}' sbom.json | \
  curl -X POST https://vex.getreel.dev/v1/analyze \
  -H "Content-Type: application/json" \
  -d @-

Example

Or generate an SBOM: reel export sbom --scanners vuln --image <ref> > sbom.json

What is VEX?

Vendors publish statements saying whether a CVE actually affects their product. Scanners produce long lists of CVEs; VEX quiets the noise.

Not Affected

Vendor confirms the CVE does not affect their product. Safe to suppress.

Fixed

A fix is available. Update to the patched version.

Under Investigation

Vendor is still assessing impact. Monitor for updates.

Affected

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.

VendorCoverageFeed
Red HatRHEL plus EUS, AUS, and E4S extended-support streamsCSAF · OVAL
SUSESUSE Linux Enterprise and openSUSECSAF
Ubuntu20.04, 22.04, 24.04 LTS plus Ubuntu Pro ESM tracksOpenVEX · OVAL
Debian11 (bullseye), 12 (bookworm), 13 (trixie)OVAL
Rancher (SUSE)SUSE cloud-native product images — product-scoped suppressionsOpenVEX

More filters

POST/v1/statements

Single canonical query primitive over the VEX statements database. Returns OpenVEX 0.2.0; 204 on empty match. Omit cves and pass products (or an SBOM) to get every vendor statement touching those packages — broad mode, made to fetch once and reuse on every scan.

Filters

cvesarray of CVE IDs — required unless products or an SBOM is supplied (broad mode)
productsarray of PURL or CPE identifiers; runs through the resolver (alias + CPE-prefix expansion)
scopesarray of product @ids (image / module) — opts in product-scoped statements (Rancher) for those scopes; an SBOM's root component supplies it automatically
vendorsarray — redhat, suse, rancher, ubuntu, debian
statusesarray — not_affected, affected, fixed, under_investigation
justificationsarray — OpenVEX 0.2.0 enum (e.g. vulnerable_code_not_present)
source_formatsarray — csaf, oval, openvex
sinceRFC3339 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.

GET/v1/stats

Vendor / CVE / statement / product-mapping counts.

// /v1/statements and /v1/analyze are taught inline above — try the search and the uploader

Open Source

The VEX resolution service is free and open source under Apache 2.0.

View on GitHub