TL;DR: Embedded C/C++ SBOM tools frequently miss components when they depend on source or binary heuristics, according to RunSafe Security. For practitioners, the real test is whether the SBOM reflects the exact artifact, not the broader codebase.
Editorial analysis by NHI Mgmt Group, based on content published by RunSafe Security: “Questions to Ask When Evaluating SBOM Tools for Embedded C/C++”.
Key questions
Q: Why do source scans miss dependencies in embedded software?
A: Source scans miss dependencies in embedded software because code may be compiled, generated, or pulled in at build time rather than appearing as readable source imports.
Q: Why does static linking make SBOM generation harder?
A: Static linking makes SBOM generation harder because library code is copied into the final binary, so package managers and runtime scanners may no longer see the original component boundaries.
Q: How should embedded teams generate SBOMs for C/C++ builds?
A: Embedded teams should generate SBOMs from the build process, not from repository snapshots alone.
Practitioner guidance
- Map your build paths before evaluating tools List every build system, target variant, conditional flag and vendored dependency that can change the final binary, then test coverage against that matrix.
- Demand artifact-bound SBOM output Require the SBOM to tie directly to a released build artifact rather than a repository snapshot, branch state or generic project scan.
- Verify static and vendored components explicitly Create a controlled build that includes static libraries, copied third-party code and architecture-specific branches, then confirm each appears in the output.
Bottom line: Embedded C/C++ SBOMs fail most often when tools treat repository data as a proxy for the released binary.
Glossary terms: Software Bill of Materials, Build-Time Instrumentation, Static Linking, Vendored Code
Explore further
View Full Forum → | NHI Foundation Course → | Our Services → | Read the full analysis →
Build provenance is the decisive control for embedded SBOM quality: when the same source tree can produce different binaries, the governance question is not what exists in the repository but what entered the artifact. That is why repository-level dependency views are insufficient for embedded C/C++ release assurance. Practitioners should treat artifact-bound SBOMs as the minimum standard for trustworthy vulnerability and compliance decisions.
A question worth separating out:
Q: What should teams check before trusting an SBOM for vulnerability management?
A: Teams should check the SBOM format, component completeness, version precision, licence and supplier metadata, and whether it covers direct and transitive dependencies, build-time and runtime components, and generated code. They should also compare it with build manifests, package locks, and binary inspection results, because an SBOM without provenance or a clear generation method may miss embedded or statically linked software.
👉 Read our full editorial: Embedded C/C++ SBOMs need build-time proof, not guesswork