Safeguard
Supply Chain•

Supplier SBOM is a flat list with no relationships: what can you do?

A flat component list still helps for searching, but you cannot trace paths or prove a negative. How to use it, what to ask for, and how to record the gap.

Safeguard Security Team
4 min read

Use it for lookup, not for tracing. A flat list tells you which components are present, so you can search it when an advisory appears. It does not tell you which component pulled in which, so you cannot map paths or confidently say something is absent. Ask the supplier for relationship data or for a statement of known gaps.

What the standard asks for

The NTIA minimum elements report lists dependency relationship as one of seven data fields. It describes the field as characterizing how an upstream component is included in software, and the depth practice says an SBOM should list all top-level components with enough detail to find transitive ones. The same report adds that some use cases need complete or mostly complete graphs, such as proving that a given component is not on a network.

It also introduces known unknowns. If the full graph is not enumerated, the author must say so, and the default reading should be that the data is incomplete. A flat list with no statement is therefore ambiguous: either the supplier has no nested dependencies, or the nesting was dropped.

What you can still do with a flat list

  1. Search by name and version. If an advisory names a library, you can find it.
  2. Match against vulnerability data. Versions and identifiers are enough for a first-pass scan.
  3. Count and compare. A large list suggests transitive components were included even without links.
  4. Diff between releases. Added and removed components still show up.

What you cannot do reliably

TaskFlat listWith relationships
Find where a component is presentYesYes
Tell which direct dependency brought it inNoYes
Plan an upgrade to remove itHardEasier
Say a component is absentNoOnly if complete
Judge which findings are reachable from top-level codeNoPartly

Step by step

  1. Check whether the file is truly flat or whether your tool dropped the links. Open the raw file and look for a dependencies section in CycloneDX or relationships in SPDX.
  2. Ask the supplier whether relationships exist in a fuller export, or whether the generator they use does not produce them.
  3. Ask for a known unknowns statement: which components have complete dependency data, which do not.
  4. Record the limitation next to the supplier entry. Something like "flat list, no graph, received on this date" is enough.
  5. Lower the confidence you place in negative searches. A search that finds nothing in a flat list is weaker evidence than one that finds nothing in a complete graph.

Handling a vulnerable transitive component

If a flaw affects a component that sits deep in the supplier's product, a flat list leaves you unable to say who pulled it in. Ask the supplier directly. They have the build and can answer faster than you can reverse-engineer it.

Try it yourself

Click through it at your own pace, or open it full screen. Compare what you can learn from the inventory view with what a dependency path would add.

Safeguard's SBOM and dependency scanning cover the same ground for software you build, and the free scan is at gold.safeguard.sh/scan.

Quick check

Is a flat SBOM invalid?

Not necessarily. It can still list components, but it falls short of the dependency relationship field and of depth practices in the NTIA report.

Can we say a component is absent if it is not in a flat list?

Only with caution. The NTIA report notes that proving a negative needs a complete or mostly complete graph.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.