How to Read an SBOM That a Regulator Will Actually Accept
Software bills of materials are no longer optional paperwork. FDA pre-market submissions, CISA guidance, and emerging contractual requirements from federal primes all expect you to produce an SBOM - and to demonstrate that you understand what's in it. Generating the file is the easy part. Knowing whether it will satisfy a reviewer is a different skill entirely.
This article walks through what regulators and auditors actually look at when they evaluate an SBOM, and how to build the reading habit that keeps your submissions out of the "request for additional information" pile.
What a Regulator Is Looking For (and Why Most SBOMs Fall Short)
A regulator is not checking whether you ran a tool. They are checking whether you can answer three questions:
- Do you know every component in your software, including transitive dependencies?
- Do you know the provenance and integrity of those components?
- Do you have a process to act when a component becomes vulnerable after you ship?
An SBOM that was auto-generated and never reviewed often fails question two and three immediately. Common gaps include missing version fields, absent supplier names, incomplete transitive dependency chains, and SPDX or CycloneDX entries that list a package name with no associated license or hash.
FDA's guidance on cybersecurity in medical device submissions, and CISA's framing around minimum viable SBOM elements, both converge on a similar baseline: the document must be machine-readable, human-verifiable, and tied to a real inventory process - not just a snapshot artifact.
The Anatomy of an Acceptable SBOM Entry
At the component level, a regulator-acceptable entry typically requires:
- Component name and version - exact, not a range
- Supplier / author - the upstream maintainer, not your internal alias
- Package URL (PURL) or CPE - a standard identifier that maps to vulnerability databases
- Hash / integrity value - so the component can be verified against what was actually used
- License identifier - SPDX license expression preferred
- Relationship type - direct dependency vs. transitive, and how it's included (static link, dynamic, bundled)
When any of these fields are absent, the entry cannot be correlated against a CVE feed with confidence. That is the failure mode that draws follow-up questions.
Reading for Supply-Chain Completeness, Not Just First-Level Dependencies
Most SBOM generators can list the packages your code directly imports. The harder problem is transitive depth - the dependencies of your dependencies, which are frequently where critical vulnerabilities live.
When reviewing an SBOM before a submission, walk through these checks:
Depth check. Compare the component count in your SBOM against a manual package-lock inspection or build manifest. A React application with a hundred direct dependencies will typically have several hundred transitive ones. An SBOM with 110 entries almost certainly has incomplete transitive coverage.
Provenance check. For each component, can you trace it to a registry or repository with a verifiable hash? Components sourced from private mirrors, vendored directories, or forked repositories without clear upstream attribution are supply-chain risks that reviewers flag.
License consistency check. A component listed with license "UNKNOWN" is a red flag not just for legal review, but for supply-chain integrity - it suggests the component was included without adequate analysis of its origin.
Freshness. An SBOM reflects a point in time. Submissions to regulators should include the SBOM generation date, and your process documentation should clarify how frequently it is regenerated and how new vulnerabilities discovered post-submission are handled.
Connecting the SBOM to a Vulnerability Response Process
An SBOM without a connected SCA process is a static document. Regulators increasingly expect to see that the SBOM feeds into something - a VEX (Vulnerability Exploitability eXchange) workflow, a patch management policy, or at minimum a documented process for how you will respond when a component in the bill is published against in the NVD.
This is where SAST and SCA analysis becomes integral to the SBOM narrative. A component inventory alone does not tell a reviewer whether a known vulnerability in a dependency is actually reachable in your application's execution path. That determination - exploitable vs. present - is what separates a credible submission from a long list of CVEs with no triage logic.
Apona's Labrador platform covers SAST, SCA, and supply-chain analysis in a single workflow, which is useful precisely because it lets AppSec teams connect the component inventory to reachability findings before the SBOM goes into a submission package. Rather than handing a regulator a raw dependency list, you can annotate what was analyzed, what was found reachable, and what your disposition is for each flagged item.
Before You Submit: A Pre-Submission Review Checklist
Run through these before any regulatory filing that requires an SBOM:
- [ ] Every component entry has name, version, supplier, PURL or CPE, and hash
- [ ] Transitive dependencies are included, not only direct dependencies
- [ ] The generation date is present and accurate to the build being submitted
- [ ] License fields are populated - "UNKNOWN" entries have been investigated
- [ ] A VEX file or equivalent disposition document accompanies the SBOM for any flagged CVEs
- [ ] Your process documentation explains the re-generation cadence and post-market update procedure
- [ ] The format (SPDX or CycloneDX) matches what the receiving agency or customer has specified
The Skill the Tooling Doesn't Replace
Tools can generate an SBOM in seconds. Reading one critically - checking for gaps, tracing provenance, connecting findings to a triage workflow - is a judgment skill that lives with your team. Regulators are not just accepting a file; they are evaluating whether your organization has a mature understanding of what is running in your software.
Building that literacy now, before a submission cycle or an audit, is significantly less expensive than explaining a gap during review.
If Labrador is part of your AppSec stack, the supply-chain analysis and SCA outputs are designed to support this kind of pre-submission review. More detail on how the platform structures component inventory and reachability findings is at apona.ai/labrador.
This post is about Labrador.