An SBOM — Software Bill of Materials — is a machine-readable inventory of every component that makes up your software. Every open source library, every third-party package, every transitive dependency, and their versions. Think of it like a nutrition label for software: it tells the consumer exactly what’s inside.

Why It Exists

The SolarWinds attack in 2020 demonstrated what security researchers had been warning about for years: software supply chain attacks are devastating, and most organizations have no idea what’s inside the software they run. A compromised build system at one vendor cascaded to 18,000 customers, including US federal agencies.

The response was Executive Order 14028 (May 2021), which mandated that software vendors selling to the US federal government must provide SBOMs. That requirement cascaded to the private sector as enterprises followed the federal government’s lead.

The logic is sound: you can’t secure what you can’t see. If a critical vulnerability is discovered in a library (like Log4Shell in Log4j), the first question is “do we use this library?” Without an SBOM, answering that question requires scanning every application, checking every dependency tree, and hoping you didn’t miss one. With an SBOM, it’s a database query.

What’s In an SBOM

A proper SBOM includes: the name and version of every component, the supplier or origin of each component, the dependency relationships between components (A depends on B version 2.3, which depends on C version 1.1), and cryptographic hashes to verify component integrity.

The two dominant formats are SPDX (maintained by the Linux Foundation) and CycloneDX (maintained by OWASP). Both are machine-readable (JSON, XML) and widely supported by tooling.

Who Needs One

If you sell software to the US federal government: you need SBOMs. It’s a procurement requirement.

If you sell to large enterprises: you increasingly need SBOMs. Enterprise procurement teams — especially in financial services, healthcare, and critical infrastructure — are adding SBOM requirements to vendor security questionnaires. This trend is accelerating, not slowing down.

If you consume open source software (which is everyone): generating SBOMs for your own applications gives you visibility into your dependency risk. When the next Log4Shell happens — and it will — you’ll be able to answer “are we affected?” in minutes instead of days.

If you’re a startup selling to SMBs: SBOMs are not yet a common requirement from smaller customers. But generating them is cheap insurance, and having the capability demonstrates security maturity to investors and future enterprise customers.

How to Generate Them

The good news: generating SBOMs is largely automated. Tools like Syft (by Anchore), Trivy, and the built-in capabilities of GitHub (dependency graph) and GitLab can generate SBOMs from your source code, container images, and build artifacts.

The typical integration point is your CI/CD pipeline. On every build, generate an SBOM, store it alongside the build artifact, and optionally scan it for known vulnerabilities. This adds minutes to your pipeline and gives you a complete inventory of what’s in every release.

For container-based deployments, generating SBOMs from your Docker images captures not just your application dependencies but the OS-level packages in the base image — which is where a surprising number of vulnerabilities hide.

Common Mistakes

Generating SBOMs without doing anything with them. An SBOM sitting in an S3 bucket is compliance theater. The value comes from actively scanning SBOMs against vulnerability databases (like the NVD or OSV), alerting when new vulnerabilities affect your components, and being able to quickly identify which applications are affected.

Only tracking direct dependencies. Your application might depend on 20 packages directly, but those 20 packages depend on 200 more. Transitive dependencies are where most supply chain vulnerabilities hide. Your SBOM tooling must resolve the full dependency tree.

Treating SBOM generation as a one-time exercise. SBOMs should be generated for every build, not once per quarter. Your dependency tree changes with every package update, and a vulnerability might be introduced by a patch release of a transitive dependency that nobody noticed.

Confusing SBOMs with vulnerability scanning. An SBOM tells you what’s in your software. A vulnerability scanner tells you which of those components have known vulnerabilities. You need both — the SBOM is the inventory, the scanner is the audit.

The Verdict

SBOMs are rapidly moving from “nice to have” to “table stakes” for any company selling to enterprises or government. The cost of generating them is minimal — a CI pipeline step and some tooling. The cost of not having them is growing — lost deals, failed security questionnaires, and the inability to respond quickly when the next major vulnerability drops. If you’re not generating SBOMs today, start. The tooling is mature, the integration is straightforward, and it’s easier to build the practice now than to retrofit it under the pressure of a customer audit.


Related: Software Supply Chain Security | Compliance Frameworks Decoded