Skip to main content
  1. Index/

SBOM (Software Bill of Materials)

Table of Contents

A Software Bill of Materials (SBOM) is a structured, machine-readable list of the components that make up a software artifact: open-source libraries, proprietary packages, operating system packages, programming language dependencies, and the transitive dependencies of all of the above. It is the software analogue of the ingredient list on packaged food — the thing that tells a consumer (or an automated system) precisely what is inside. The term and concept predate current security mandates but became a regulatory requirement in the US through Executive Order 14028 (May 2021), which directed NIST and NTIA to define minimum SBOM elements for software sold to the federal government. The NTIA’s resulting guidance specifies seven minimum data fields per component: supplier name, component name, version, component identifier (CPE or PURL), dependency relationships, SBOM author, and timestamp. The practical use cases SBOMs enable are vulnerability management (correlating component versions against CVE databases to identify affected software), licence compliance (detecting GPL or other licence obligations across the dependency graph), and incident response (determining within minutes which systems in a fleet contain a newly-disclosed vulnerable component, as organisations that had SBOMs could do during the Log4Shell response and those without could not).

Two formats dominate production use. SPDX (Software Package Data Exchange, ISO/IEC 5962:2021) originated at the Linux Foundation, focuses on licence expression and is the format most commonly produced by build tooling such as Syft, Trivy, and the Go and Java build ecosystems. CycloneDX (OWASP) takes a broader “bill of materials” framing, supports not just software components but services, hardware, and firmware, and has stronger native support for vulnerability data including embedded VEX statements and CycloneDX’s own Vulnerability Disclosure Report (VDR) format. Both formats support JSON, XML, and — in SPDX’s case — tag-value text. A third format, SWID tags (ISO/IEC 19770-2), is used primarily in firmware and enterprise software asset management contexts but sees limited use in cloud-native supply chains. The two primary formats are not automatically interoperable; tools such as CycloneDX’s cdxgen and anchore’s syft can produce either, and CISA’s SBOM sharing guidance recommends accepting both at ingestion boundaries. Component identity across formats is best addressed through PURLs (Package URLs, pkg:type/namespace/name@version), a format-neutral scheme for uniquely identifying a package across ecosystems that both SPDX and CycloneDX support.

SBOMs are most valuable when they travel with the artifact they describe and when they are verifiable. In the OCI ecosystem, SBOMs are attached to container images as OCI referrers — pushed to the same registry as the image they document, linked via the subject field, and discoverable via the referrers API with artifactType: application/spdx+json or application/vnd.cyclonedx+json. Tools such as ORAS and cosign handle the attachment and retrieval. Signing an SBOM (via cosign or Notation) with a key rooted in a PKI or Sigstore’s certificate transparency log binds the SBOM to a verified identity and makes tampering detectable. For bootc and image-based Linux systems, an OS-level SBOM attached to the OCI OS image as a referrer allows operators and automated compliance systems to know the exact package versions in a deployed OS image, query them against vulnerability databases, and verify the SBOM has not been substituted — forming the foundation of a software supply chain that is both transparent and attested. SBOM generation is increasingly automated: Tekton and GitHub Actions pipelines produce SBOMs as a build step, rpm --query --provides and dpkg-query extract OS package lists, and language-ecosystem tools like cyclonedx-gomod and syft walk dependency graphs at build time.

Relevant Red Hat blog posts
#

Related

OCI Referrers API

OCI Referrers is a mechanism introduced in the OCI Image and Distribution Specification v1.1 (finalised 2024) that allows arbitrary artifacts — signatures, SBOMs, vulnerability scan reports, attestations, provenance documents — to be attached to an existing image in a registry without modifying the image itself and without requiring out-of-band storage or tag conventions. The attachment is expressed through a subject field added to any OCI manifest: a descriptor pointing to the digest of the target image. The registry then indexes these relationships, and the referrers API makes them discoverable.

VEX (Vulnerability Exploitability eXchange)

VEX (Vulnerability Exploitability eXchange) is a machine-readable assertion format that answers the question an SBOM alone cannot: given that a product contains a component affected by a known CVE, is that vulnerability actually exploitable in this specific product? An SBOM identifies components and versions; a CVE database maps those versions to known vulnerabilities; but the intersection of the two systematically overstates actual risk. A container image built on a minimal base may include a library with a known buffer overflow in a network-parsing function — but if that function is never called by anything in the image, or the affected code path requires a configuration flag that is hardcoded off, the CVE is present but not exploitable. Without VEX, every scanner that ingests the SBOM raises an alert; with VEX, the supplier asserts the non-exploitability with a machine-readable justification that automated tooling can consume to suppress the alert without human triage. VEX originated in the same NTIA multistakeholder process that produced the SBOM minimum elements framework, and was formalised by CISA in 2021–2022.

CVSS (Common Vulnerability Scoring System)

CVSS (Common Vulnerability Scoring System) is an open framework published by FIRST (Forum of Incident Response and Security Teams) for characterising and communicating the technical severity of software vulnerabilities through a standardised numerical score. The current version is CVSS v4.0 (released November 2023), which introduced a fourth metric group and clarified nomenclature to address the persistent misuse of CVSS Base scores as standalone risk measurements. CVSS scores appear in the NVD (National Vulnerability Database), CVE entries, scanner output from Qualys, Tenable, Rapid7, Grype, and Trivy, and in compliance frameworks that specify remediation SLAs based on severity bands — “critical (9.0–10.0) within 15 days, high (7.0–8.9) within 30 days.” The score ranges from 0.0 (no impact) to 10.0 (maximum severity) and maps to five qualitative ratings: None (0.0), Low (0.1–3.9), Medium (4.0–6.9), High (7.0–8.9), and Critical (9.0–10.0).