Back to feed
Dev.to
Dev.to
7/7/2026
Building a Trivy-consumable VEX repository with vexctl: scripts, repo spec, and edge cases

Building a Trivy-consumable VEX repository with vexctl: scripts, repo spec, and edge cases

Original: From vexctl scripts to a governed VEX platform: building vex-ui with Next.js, keyless signing, and a Trivy-consumable repo

Short summary

This tutorial demonstrates building a VEX (Vulnerability Exploitability eXchange) workflow using vexctl to suppress false-positive CVE findings in Trivy container scans, reducing 70 findings to zero through digest-pinned OpenVEX statements. It covers packaging statements into a Trivy-consumable VEX repository, documents critical edge cases like purl qualifier matching quirks and derived-image digest mismatches, and compares consumption paths for Trivy versus Wiz via OCI registry attestations. A full demo repo automates the end-to-end pipeline from baseline scan through suppression.

  • Generate per-CVE OpenVEX statements with vexctl, pinned to image digests, then merge and feed to Trivy via --vex file or --vex repo
  • Key gotcha: Trivy's VEX repo index expects repository_url qualifier in purl IDs — omitting it causes silent no-match
  • Derived images need their own VEX for their digest; base-image VEX won't suppress findings on rebuilt layers

Generated with AI, which can make mistakes.

Is this a good recommendation for you?

Comments

Failed to load comments. Please try again.

Explore more