Software Bill of Materials (SBOM)

July 3, 2026 · View on GitHub

Every published Docker image is built with a Software Bill of Materials (SBOM), auto-generated at build time with Syft. This lets you see exactly what's inside an image — every package, library, and version — and feed that data into vulnerability scanners or SBOM catalogs like Dependency-Track.

Where to find it

  • Attached to the image: the SBOM is pushed alongside the image as an attestation, so it travels with whichever tag or digest you pull.
  • As a downloadable file: each Deploy Web App workflow run uploads the SBOM as an SPDX-JSON artifact you can download directly from the run summary.

Inspecting the attached SBOM

Use docker buildx imagetools inspect to pull the SPDX JSON for a given image and tag:

docker buildx imagetools inspect ghcr.io/doezer/questarr:latest --format '{{ json (index .SBOM "linux/amd64").SPDX }}'

This prints the full SPDX document, which you can redirect to a file or pipe into a tool like jq or a vulnerability scanner:

docker buildx imagetools inspect ghcr.io/doezer/questarr:latest --format '{{ json (index .SBOM "linux/amd64").SPDX }}' > sbom.spdx.json

Exploitability of reported vulnerabilities

Scanning this SBOM (or the image directly) with a tool like Grype or Trivy may surface CVEs that don't actually affect Questarr — e.g. an OS package in the node:22-alpine base image that's present but never executed. Questarr publishes exploitability assessments for exactly this scenario as an OpenVEX feed; see docs/VEX.md for the format and security/vex/questarr.openvex.json for the feed itself. Pass it to Trivy with --vex to suppress findings already assessed as not affecting the project.