Join our Newsletter — 33% off our NHI Course
Home› FAQ› Cyber Security› Why do source code SBOMs miss dependencies that…
Cyber Security

Why do source code SBOMs miss dependencies that ship in the binary?

← Back to all FAQ
By NHI Mgmt Group Editorial Team Updated November 9, 2026 Domain: Cyber Security

Source code SBOMs can miss dependencies because they only reflect what is declared or reachable in the source tree, not what the compiler, build tool or linker actually includes in the final artefact. Generated code, transitive libraries, build-time plugins and conditional compilation can all introduce components that never appear in the source manifest.

Why source code SBOMs and binary SBOMs diverge

A source code SBOM is a declaration of what the repository says should be part of the build, while the binary reflects what the toolchain actually produced. That gap matters because the final artefact can include generated files, vendored components, transitive dependencies, or linker-included objects that are invisible if you only inspect source manifests.

The practical consequence is that a source SBOM is often a starting point for inventory, not a complete picture of shipped software. A build can also change the contents through conditional compilation, feature flags, platform-specific branches, and packaging steps, so the same repository may produce different binaries without the source manifest changing.

This is why SBOMs are strongest when they are treated as build artefacts, not just repository metadata. SBOM Guide is useful here because it covers SBOM generation, quality, and dependency graph thinking, which are the concepts you need when comparing source, build, and binary views.

What the source tree can miss during compilation and linking

Some dependencies appear only after the build system resolves them. Generated code can embed libraries or runtime glue that never existed as handwritten source, while build-time plugins, code generators, and package managers can pull in modules that are not obvious from the top-level manifest. Linkers can also fold in static libraries or object files that are outside the source tree's direct dependency list.

Conditional compilation adds another blind spot because the build may include different code paths depending on OS, architecture, compiler flags, or release profile. That means the SBOM produced from source alone may describe possible dependencies, not the exact dependency set that shipped to users.

Open Source Security Guide is a strong companion because it covers transitive dependencies, version pinning, and vulnerability management, all of which affect whether source declarations match what the build actually consumes.

Why this matters for vulnerability management and software assurance

If the SBOM omits a shipped dependency, downstream teams may miss a vulnerable component during triage, fail to match advisories to the right artefact, or underestimate the real attack surface. That is especially problematic when the hidden component is introduced by a transitive library or build step that the development team did not intend to ship.

The same mismatch can also distort patch decisions. Security teams may think a component is absent because it is not listed in the source SBOM, when in fact it is embedded in the binary and must still be tracked, verified, or removed through a build change. OWASP A03:2025 Software Supply Chain Failures in depth is relevant because it frames SBOMs, SCA gates, and build integrity as part of the same supply-chain control problem.

Risk and Threat Considerations

The security risk is not just incomplete inventory, it is false confidence. If teams trust a source SBOM as the full dependency record, they may overlook vulnerable code that was introduced after source review, or miss tampering that happened in the build pipeline rather than in the repository.

Failure mechanism: The build toolchain resolves, generates, or links in components that were never present in the source manifest, so the published SBOM understates the binary's real contents.

Impact: Vulnerable or unreviewed code can ship unnoticed, reducing the accuracy of vulnerability management, incident response, and software provenance checks.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

SLSA, CIS Controls v8, OWASP ASVS, NIST SP 800-53 Rev 5 and OWASP SAMM set the governance and control requirements practitioners need to meet.

FrameworkControl / ReferenceRelevance
SLSASupply Chain IntegrityBinary provenance depends on the build pipeline preserving component integrity.
Recommendation — Prove build provenance so the shipped binary matches the intended dependency set.
CIS Controls v8CIS-16 — Application Software SecuritySoftware assurance depends on controlling what gets built and shipped.
Recommendation — Validate build outputs and dependency integrity before release.
OWASP ASVSV15 — Secure Coding and ArchitectureBuild-time generation and dependency inclusion affect application trustworthiness.
Recommendation — Verify that build and dependency handling are explicit and reviewable.
NIST SP 800-53 Rev 5CM-3 — Configuration Change ControlBuild changes can alter shipped components without source manifest changes.
Recommendation — Control build changes so artefact contents stay traceable.
OWASP SAMMSoftware ConstructionSBOM quality depends on how dependencies are identified during construction.
Recommendation — Embed dependency tracing into the build and release process.

Practitioner Guidance

What to verify: Compare the source SBOM against a build-time or binary-derived SBOM, then confirm that generated files, transitive dependencies, and linker-included objects are represented in the final artefact. If the two views do not reconcile, treat the build pipeline as part of the problem, not just the manifest.

Decision rule: If you only have a source SBOM, use it for early inventory and pre-build review, but do not rely on it for shipping assurance unless your build process can prove that the binary cannot contain additional components.

Practitioner takeaway: The important question is not whether the source tree lists a dependency, but whether the build can prove what actually ended up in the binary.

Free weekly newsletter

Subscribe to the NHI & AI Identity Journal

The latest on NHI and Agentic AI security – articles, research, breaches, news and events every week.

Bonus 33% off our NHI Course when you subscribe.

NHIMG Editorial Note
Reviewed and updated by the NHIMG editorial team on November 9, 2026.
NHI Mgmt Group — the #1 independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org