A Software Bill of Materials (SBOM) is a machine-readable inventory of every software component, library, and dependency in your application, including their versions, suppliers, and relationships. Like an ingredients list for software, an SBOM provides transparency into what your application is actually built from, enabling faster vulnerability response, supply chain risk management, and compliance with emerging regulatory requirements.
An SBOM, or Software Bill of Materials, is a structured, machine-readable list of every component in your software. It catalogs your direct dependencies (packages you explicitly import), transitive dependencies (packages your dependencies depend on), their versions, their suppliers, and their relationships to each other.
Think of it like a nutrition label for software. Just as a food label tells you exactly what's in the product you're consuming, an SBOM tells you exactly what's in the software you're shipping or running.
Two standard formats for SBOMs include:
Both formats satisfy regulatory requirements. Which one you use typically depends on your primary use case (security-focused vs. license-focused) and what your tooling supports.
The NTIA minimum elements specify three categories:
An SBOM on its own is just an inventory. Its real value comes from what you do with it:
Fencer automatically inventories every open-source package across your connected repositories and generates SBOMs on demand in CycloneDX or SPDX formats. Beyond generation, Fencer continuously monitors your dependencies for new vulnerabilities and license risks, so your SBOM isn't just a static document. Instead, it's a live inventory that alerts you when something in your supply chain changes.
Increasingly, yes. While Executive Order 14028 directly applies to federal software vendors, the SBOM requirement is cascading into the private sector. Enterprise buyers are adding SBOM requests to their security questionnaires. The EU Cyber Resilience Act will require SBOMs from manufacturers selling into Europe. And practically speaking, having an SBOM means you can answer "what's in your software?" and "are you affected by this vulnerability?" instantly, which matters regardless of who your customers are.
Generate an SBOM as part of every release or build. Your dependencies change with each build (updated packages, new libraries, version bumps), so an SBOM from last month doesn't reflect what you're shipping today. The best practice is to integrate SBOM generation into your CI/CD pipeline so it happens automatically with every build, producing a timestamped record of exactly what went into each release.
An SBOM is the inventory: a structured list of what's in your software. SCA (Software Composition Analysis) is the analysis: scanning that inventory against vulnerability databases, checking license compliance, and flagging outdated packages. You need the SBOM to do SCA effectively, and SCA is what turns the SBOM from a compliance document into an actionable security tool. Most SCA tools generate SBOMs as a byproduct of their scanning, and most SBOM tools can cross-reference against vulnerability databases. In practice, they're closely related capabilities.