Your RSA-2048 keys break in 2030. Find every one of them before attackers do.
BOM SuiteJune 7, 20269 min read

What Is an SBOM? A Complete Guide to the Software Bill of Materials

What a software bill of materials is, what goes in one, how to generate it, SPDX vs CycloneDX, and the regulations that now require it.

O
O3 Security Team
Research & Engineering
SBOM illustration
Key takeaways
  • An SBOM is a machine-readable list of every component inside a piece of software — like a nutrition label for code.
  • When a new vulnerability or supply-chain attack lands, an SBOM is what lets you answer 'are we affected?' in minutes instead of weeks.
  • Two formats dominate: SPDX (ISO-standardized, license-focused) and CycloneDX (OWASP, security-focused). Most tools export both.
  • Open-source tools like Syft and cdxgen generate an SBOM in seconds; the hard part is acting on what's inside it.
  • SBOMs are now mandated by US, EU, and Indian regulators — the EU CRA, India's SEBI CSCRF, and CERT-In all require them.

In March 2026, one of the most popular open-source security scanners in the world — Trivy — was itself turned into a supply-chain weapon. Attackers poisoned its release tags and shipped a malware-laced binary through every official channel. Teams that ran it in CI/CD had credential-stealing code injected into their pipelines by the very tool meant to keep them safe.

That is the question an SBOM exists to answer. When the next compromised package, vulnerable library, or poisoned dependency makes the news, can you tell — fast — whether it's running in your software? A software bill of materials is a complete, machine-readable list of every component inside an app. Think of it as a nutrition label for code. Open the box and you can see exactly what's inside, where it came from, and what it depends on.

What is an SBOM, exactly?

An SBOM (software bill of materials) is a structured inventory of every component that makes up a piece of software. That means the open-source libraries, the third-party packages, the transitive dependencies you never chose directly, and the links between them. Modern apps are mostly assembled, not written. A typical service is 80–90% open-source code by volume. An SBOM is the document that tells you what that 80–90% actually is.

The key word is machine-readable. A README listing your dependencies is not an SBOM. An SBOM is a standardized file — JSON or XML — that a tool can parse, diff, query, and cross-reference against vulnerability databases automatically. That is what makes it useful at the scale and speed real incidents demand.

Key takeaway

An SBOM doesn't make your software more secure on its own. It makes your software knowable — and you can't secure, patch, or prove anything about code you can't see.

What goes inside an SBOM?

In 2021 the US NTIA published the de facto baseline — the seven minimum data fields every SBOM should carry. It's still the cleanest way to understand what one contains:

  1. Supplier name — who produced the component.
  2. Component name — what the unit of software is called.
  3. Version — which release of it you're using (this is what most vulnerabilities key off).
  4. Other unique identifiers — machine IDs like a PURL, CPE, or SWID tag, so tools can match the component against vulnerability databases.
  5. Dependency relationship — what depends on what, including the transitive chain you didn't pick directly.
  6. Author of the SBOM — who or what generated the document.
  7. Timestamp — when it was created, in UTC.

That baseline is now being raised. In August 2025, CISA published a draft update — the 2025 Minimum Elements — that adds fields the 2021 list lacked: a component hash (so you can verify integrity, not just trust a name), license, the name of the tool that generated the SBOM, and the generation context. As of this writing the 2025 elements are a draft; the public comment period closed on 3 October 2025. The direction of travel is clear: SBOMs are expected to carry more, and to be trustworthy enough to act on without a second look.

Note

A hash is the quiet upgrade in the 2025 draft. A name and version can be spoofed; a cryptographic hash of the actual artifact can't. It's how an SBOM moves from 'this claims to be lodash 4.17.21' to 'this is provably that exact file.'

Why SBOMs suddenly matter

SBOMs aren't new as an idea — manufacturing has used bills of materials for decades. What changed is that software supply chains became the soft underbelly of security. Three forces pushed SBOMs from nice-to-have to non-negotiable.

1. A single bug can hit everyone at once

When Log4Shell broke in December 2021, the most expensive part for most companies wasn't the patch — it was the days spent just figuring out where Log4j was running. Teams with an SBOM answered that in an afternoon. Teams without one grep-ed their estate by hand for weeks. The vulnerability was the same; the SBOM decided how long you bled.

2. The tools themselves get attacked

The Trivy compromise wasn't an outlier. SolarWinds, the xz-utils backdoor, npm and PyPI package takeovers — attackers have learned that compromising one upstream component is a force multiplier across thousands of downstream victims. An SBOM is how you keep a current map of that upstream territory instead of rediscovering it under fire.

3. Regulators now require it

What used to be a security-team aspiration is becoming a legal obligation across the US, EU, and India. We'll get to the specifics below — but the short version is that if you sell software into any of those markets, an SBOM is moving onto your compliance checklist whether you've adopted one or not.

The vulnerability is the same for everyone. The SBOM decides whether you find out in an afternoon or a fortnight.

SPDX vs CycloneDX: the two formats you'll actually meet

You don't need to invent an SBOM format — two open standards already own the space, and most tools speak both. They were built by different communities with different priorities, and that shows in what they're good at.

SPDXCycloneDX
StewardLinux FoundationOWASP
StandardizationISO/IEC 5962:2021ECMA-424
Original focusLicense compliance, provenanceSecurity, vulnerability tracking
Data modelElement + relationship (linked-data in 3.0)Compact, component-centric
Strongest forProcurement, audit, legal reviewVuln workflows, CI/CD, container scanning
Extends toFiles, snippets, packagesVEX, CBOM, SaaSBOM, ML-BOM
SPDX vs CycloneDX — the two dominant SBOM formats.

The honest takeaway: it's not a war you need to pick a side in. Choose CycloneDX if your driver is security automation and vulnerability response. Choose SPDX if it's licensing, procurement, or formal audit trails. Better still, generate both. Most modern tools do it from a single scan, and different teams will ask for different ones — your security team and a customer's legal team rarely want the same file.

Tip

Picking a format matters far less than picking one and generating it consistently in every build. An SBOM you produce on every release beats a 'perfect' one you generate by hand once a quarter.

How to generate an SBOM: a practical walkthrough

Here's the part that surprises people: producing an SBOM is the easy bit. A handful of mature, free tools will do it in seconds. The work is in where you generate it and what you do with the result.

The tools

ToolStewardScansNotes
SyftAnchoreSource dirs, container images, archivesThe versatile default; broad ecosystem coverage, exports SPDX + CycloneDX
cdxgenOWASP / CycloneDXMany languages, transitive depsCycloneDX-first, deep dependency resolution
Microsoft SBOM ToolMicrosoftBuild outputsSPDX-focused, geared to CI pipelines
TrivyAqua SecurityCode, images, IaCCapable, but pin to a known-safe version after the March 2026 compromise
Common open-source SBOM generators (June 2026).

With Syft, generating a CycloneDX SBOM for a container image is a single command. That's genuinely all it takes to produce the file.

The steps that actually matter

  1. Generate at build time, not after. Bake SBOM generation into your CI/CD pipeline so every artifact ships with an SBOM that matches exactly what you released — not an approximation produced weeks later.
  2. Capture transitive dependencies. The library you imported is rarely where the risk lives; it's the thing that library imported. A good generator resolves the full tree, not just your direct dependencies.
  3. Store and version them. An SBOM is a point-in-time snapshot. Keep one per release so that when a vulnerability drops, you can check every version you have in production, not just the latest.
  4. Feed it into vulnerability and license scanning. The SBOM is the input; matching its components against known-vulnerability and license databases is where the value is realized.
  5. Prioritize by reachability. A raw SBOM-to-CVE match produces a flood of alerts — most for code that never actually runs. Reachability analysis cuts that noise to the vulnerabilities that are genuinely exploitable in your application.
By the numbers

Generating the SBOM is seconds of work. Studies of large codebases routinely find that the majority of flagged open-source vulnerabilities sit in code that is never reachable at runtime — which is why an SBOM without reachability buries the real risks under false ones.

The SBOM is the root of a whole family

Once you can inventory your software components, the same idea extends to everything else worth tracking. The SBOM is the trunk; the rest of the BOM family branches off it, mostly built on the same CycloneDX standard so they slot into the same tooling.

  • CBOM (Cryptographic Bill of Materials) — every algorithm, key, and certificate, so you can plan the post-quantum migration that NIST's 2030/2035 deadlines now demand.
  • AIBOM (AI Bill of Materials) — the models, datasets, and weights inside an AI system, increasingly required under the EU AI Act.
  • HBOM (Hardware Bill of Materials) — physical components and firmware.
  • SaaSBOM — the services, APIs, and data flows in a cloud application, for the parts of your stack that aren't a package you ship.

The lesson is that an SBOM program is rarely the finish line. Get good at inventorying components and the same discipline answers your cryptography, AI, and hardware questions next.

SBOM compliance: who's requiring one

This is the section that turns SBOMs from optional to scheduled. Three regulatory blocs now require them, and the deadlines are close enough to plan around.

United States

Executive Order 14028 (2021) set software supply-chain security in motion for anyone selling to the US federal government, with the SBOM as a core artifact. CISA's 2025 draft Minimum Elements is the next step — raising what an SBOM must contain so it's trustworthy enough to act on.

European Union

The EU Cyber Resilience Act is the big one. From 11 September 2026, manufacturers of connected products must report vulnerabilities and incidents — which is impossible to do well without knowing your components. The full SBOM obligation lands on 11 December 2027: a machine-readable SBOM covering at least the top-level dependencies of every product with digital elements, kept current and handed to market-surveillance authorities on request. In practice, you need SBOMs in place well before the 2026 reporting date, not the 2027 one.

India

India has moved faster and broader than most. CERT-In's Technical Guidelines (version 2.0, July 2025) cover not just SBOM but CBOM, QBOM, AIBOM, and HBOM, with a detailed mandatory-field baseline and a recommendation to use SPDX or CycloneDX. In the financial sector, SEBI's Cybersecurity and Cyber Resilience Framework (CSCRF) makes SBOMs mandatory for regulated entities — banks, NBFCs, mutual funds, and more — with compliance deadlines that landed through 2025. If you build or procure software for Indian finance, the SBOM requirement is already live.

JurisdictionDriverKey date
USExecutive Order 14028 + CISA Minimum ElementsEO 2021; 2025 elements in draft
EUCyber Resilience ActReporting Sept 2026; SBOM obligation Dec 2027
India (all sectors)CERT-In Technical Guidelines v2.0July 2025
India (finance)SEBI CSCRFPhased through 2025
Where SBOMs are now required.

The bottom line

An SBOM is the foundation everything else in software supply chain security stands on. You can't patch, prove compliance, or answer 'are we affected?' for components you've never inventoried. The good news is that the standards are settled, the tools are free and fast, and you can generate your first SBOM today. The discipline is making it automatic — one per release, fed into reachability and vulnerability analysis, kept as the living record auditors and incident responders will both come asking for. Build the inventory first; everything useful comes after.

Frequently asked questions

What is a software bill of materials (SBOM)?

+
An SBOM is a machine-readable inventory of every component inside a piece of software — its open-source libraries, third-party packages, and the transitive dependencies between them. Think of it as a nutrition label for code: it tells you exactly what's inside an application so you can track vulnerabilities, licenses, and supply-chain risk across everything you ship.

What information does an SBOM contain?

+
At minimum, the seven NTIA baseline fields: supplier name, component name, version, unique identifiers (like a PURL or CPE), dependency relationships, the SBOM author, and a timestamp. CISA's 2025 draft adds component hash, license, generating-tool name, and generation context — making each entry verifiable rather than just a claimed name and version.

What is the difference between SPDX and CycloneDX?

+
They're the two dominant SBOM formats. SPDX, from the Linux Foundation, is ISO-standardized and built for license compliance and procurement. CycloneDX, from OWASP, is security-focused and built for vulnerability workflows and CI/CD. Most modern tools export both, so many teams generate both from a single scan rather than choosing.

How do I generate an SBOM?

+
Use an open-source generator like Syft (Anchore), cdxgen (OWASP), or the Microsoft SBOM Tool. Most produce an SBOM from a source directory or container image in a single command. The important practice is generating it automatically in your CI/CD pipeline on every build, capturing transitive dependencies, and feeding the result into vulnerability scanning.

Are SBOMs legally required?

+
Increasingly, yes. The US has driven SBOMs via Executive Order 14028 and CISA's Minimum Elements. The EU Cyber Resilience Act requires a machine-readable SBOM for products with digital elements by December 2027, with vulnerability reporting from September 2026. In India, CERT-In guidelines and SEBI's CSCRF already mandate SBOMs, including for the financial sector.

Does an SBOM make my software more secure?

+
Not by itself — it's an inventory, not a control. Its value is realized when you act on it: matching components against vulnerability databases, checking licenses, and proving compliance. Because a raw SBOM-to-CVE match floods you with alerts for code that never runs, pairing it with reachability analysis is what surfaces the vulnerabilities that are actually exploitable.

See your full attack chain.
Code, build, runtime. One platform.