SBOM Explained: Why Your Software Needs a Bill of Materials
A Software Bill of Materials is becoming a regulatory requirement and a security necessity. Here's what it is, why it matters, and how to create one.
What Is an SBOM?
A Software Bill of Materials (SBOM) is a formal, machine-readable inventory of every component in a piece of software, every library, framework, module, and dependency, along with their versions and relationships.
Think of it like the ingredients list on food packaging. You can look at the finished product, but without the ingredient list, you don't know what's inside. An SBOM tells you exactly what's inside your software.
Why SBOMs Matter Now
SBOMs have been discussed in security circles for years, but three forces have pushed them from "nice to have" to "essential":
1. Executive Order 14028 (2021)
The U.S. Executive Order on Improving the Nation's Cybersecurity required software vendors selling to the federal government to provide SBOMs. This created a regulatory mandate that cascaded through the supply chain.
2. Log4Shell (2021)
When CVE-2021-44228 hit, the first question every organization asked was: "Do we use Log4j?" Most couldn't answer quickly. Organizations with SBOMs could query their inventory in seconds. Organizations without them spent days or weeks auditing their software.
3. Supply Chain Attack Acceleration
As supply chain attacks increase (SolarWinds, Codecov, 3CX, MOVEit), the ability to quickly determine "are we affected?" becomes a critical capability. SBOMs provide that capability.
SBOM Formats
Two primary formats dominate:
SPDX (Software Package Data Exchange)
Created by the Linux Foundation. An ISO standard (ISO/IEC 5962:2021). Supports JSON, XML, YAML, RDF, and tag-value formats. Strong focus on licensing information alongside security data.
CycloneDX
Created by OWASP. Designed specifically for security use cases. Supports JSON and XML. Includes fields for vulnerability information, exploit data, and risk scores.
Both formats capture the essential information: component names, versions, suppliers, and dependency relationships. CycloneDX is generally preferred for security-focused SBOM use cases; SPDX for compliance and licensing.
What's In an SBOM
A quality SBOM includes:
- Component name and version,
[email protected],openssl 3.0.12 - Supplier/publisher, who maintains the component
- Dependency relationship, direct dependency vs. transitive (pulled in by another dependency)
- Hash/checksum, cryptographic verification that you're running exactly what you think
- License, relevant for compliance, less so for security
- CPE/PURL identifiers, standardized identifiers that enable CVE matching
How to Generate SBOMs
Most build ecosystems have SBOM generation tools:
- Node.js/npm:
@cyclonedx/cyclonedx-npmorsyft - Python/pip:
cyclonedx-pythonorsyft - Java/Maven:
cyclonedx-maven-plugin - Go:
cyclonedx-gomod - Containers:
syft(by Anchore) scans container images directly - Multi-language:
trivycan generate SBOMs as part of its scanning
The best practice is to generate SBOMs as part of your CI/CD pipeline, so every build produces an up-to-date inventory.
SBOMs and Vulnerability Management
Here's where SBOMs become a force multiplier for security:
Instant CVE Impact Assessment
When a new CVE drops, query your SBOM repository: "Which of our applications include this component at an affected version?" Instead of scrambling to audit every system, you get an answer in seconds.
Transitive Dependency Visibility
Your application directly depends on 50 packages. Those 50 packages depend on 500 more. A CVE in a transitive dependency six levels deep still runs in your production environment. SBOMs make this invisible supply chain visible.
Vendor Risk Management
If a supplier provides you with their SBOM, you can assess the security posture of their software before deploying it. No more black-box vendor products hiding outdated OpenSSL versions.
Regulatory Compliance
Increasingly, customers and regulators expect SBOMs. Having them ready demonstrates maturity and speeds up procurement cycles.
SBOM Challenges
Completeness: SBOMs are only as good as the tooling that generates them. Compiled binaries, dynamically loaded plugins, and vendored dependencies can be missed.
Freshness: An SBOM generated at build time is accurate at that moment. If you don't regenerate regularly, it drifts from reality.
Volume: Large organizations may have thousands of SBOMs across hundreds of applications. Managing, querying, and acting on this data requires dedicated tooling.
Action gap: Having an SBOM is step one. Using it to drive patching and risk decisions is step two, and it's where many organizations stall.
Getting Started
- Pick a format, CycloneDX for security focus, SPDX for broad compliance
- Generate SBOMs in CI/CD, Every build produces an updated inventory
- Store centrally, A searchable repository of all your SBOMs
- Query on new CVEs, When a vulnerability drops, immediately identify affected applications
- Integrate with your alerting, Our platform can ingest your stack information and cross-reference against new CVEs automatically
The organizations that weathered Log4Shell best were the ones that could answer "where is Log4j in our environment?" within hours. SBOMs give you that capability for every future vulnerability.
Stay ahead of threats
Get AI-filtered CVE alerts for your specific tech stack. Free to start.
Start for freeMore articles
VEX Explained: How to Declare Which CVEs Don't Affect You
7 min read
EducationSSVC Explained: CISA's Decision Tree for Patch Prioritization
6 min read
EducationCVSS 4.0 vs 3.1: What Changed and What It Means for Triage
7 min read
EducationUnderstanding CVSS vs EPSS: Which Score Matters More?
6 min read
EducationThe CVE Lifecycle: From Disclosure to Patch
6 min read
EducationAPI Security: The OWASP Top 10 Risks You're Probably Exposed To
9 min read