vex-hub/Trivy

Stop flagging CVEs the vendor already resolved

vex-hub merges CSAF and OVAL so Trivy's --vex flag sees what Red Hat CSAF alone misses.


CVE-2025-2487 on RHEL 9.6 EUS

CSAF alone
0
EUS platform CPEs
vex-hub
CSAF + OVAL merged
12
EUS platform CPEs

Two commands

1. Query vex-hubOpenVEX 0.2.0 output
curl -X POST https://vex.getreel.dev/v1/statements \
  -H "Content-Type: application/json" \
  -d '{
    "cves": ["CVE-2026-2100"],
    "products": ["pkg:rpm/redhat/p11-kit"]
  }' > vex.json
2. Scan with the VEX documenttrivy ≥ 0.50
trivy image --vex vex.json --show-suppressed \
  registry.access.redhat.com/ubi9/ubi:latest

Docs →

What you'll see

Re-scanning a UBI9 image with --vex vex.json --show-suppressed: the CVE moves out of findings and into the suppressed table, with the vendor's reasoning attached.

trivy --show-suppressed output
Suppressed Vulnerabilities (Total: 1)
=====================================
┌────────────┬───────────────┬──────────┬──────────────┬─────────────────────────────┬──────────┐
│  Library   │ Vulnerability │ Severity │    Status    │          Statement          │  Source  │
├────────────┼───────────────┼──────────┼──────────────┼─────────────────────────────┼──────────┤
│ p11-kit    │ CVE-2026-2100 │ MEDIUM   │ not_affected │ vulnerable_code_not_present │ vex.json │
└────────────┴───────────────┴──────────┴──────────────┴─────────────────────────────┴──────────┘

Same recipe, every supported distro

The flow above is distro-agnostic. Trivy emits the right PURL when it scans an image — vex-hub answers for whichever vendor it lands on.

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

For example, swap pkg:rpm/redhat/p11-kit for pkg:deb/debian/openssl?distro=debian-12 when scanning a Debian image.