Safeguard
Supply Chain•

Which SBOM formats should a platform import? Test before you buy

What to check when a platform says it imports SBOMs: formats, spec versions, serializations, bad files and unknown fields, with a simple test set to build.

Safeguard Security Team
4 min read

A platform should import at least the two formats the NTIA guidance names as common, SPDX and CycloneDX, in the versions your suppliers actually send, and it should handle bad or partial files without silently dropping data. The only reliable proof is a test set of your own files.

Why the claim "supports SPDX and CycloneDX" is not enough

Each format has several spec versions, and each version can be written in more than one serialization, such as JSON or XML, and SPDX also has a tag value form. A product might parse one combination well and another poorly. The SPDX specification itself is organised into clauses for document creation information, package information, file information, relationships and annotations, so a lot of meaning lives in fields that a lazy importer could skip.

NTIA lists SPDX, CycloneDX and SWID tags as data formats used to generate and consume SBOMs, and says formats should support automation. Ask which of those a product reads, and which it only stores as an attachment.

Build a test set

Collect ten to fifteen files before the trial.

  1. One clean file per format and version you expect to receive.
  2. One file in each serialization you expect.
  3. A large file from a real product with thousands of components.
  4. A file with no relationships, only a flat list.
  5. A file with missing versions and unknown suppliers.
  6. A file with a deliberately broken field, such as a malformed identifier.
  7. A file with extensions or custom properties.
  8. A file from a supplier tool you do not control.

What to look for in the result

CheckPass looks like
Component countMatches the source file
RelationshipsParent child links preserved
IdentifiersPackage URLs or other IDs kept verbatim
LicensesExpressions preserved, not flattened
Broken fileClear error or warning, not a silent partial load
Unknown fieldsKept or reported, not discarded without notice
Large fileLoads in reasonable time without timing out

Count components before and after, then spot check twenty at random. A mismatch in count is the most common and most useful signal.

Ask about the failure path

How does the platform report a file it cannot parse? A message that names the line and field is helpful. A green tick with half the data is dangerous. The article on what to do when an SBOM file fails to parse covers diagnosis, and validating before you accept one covers the front door.

Ask about normalisation

When the same component arrives from two formats with slightly different names, does the platform recognise them as one? Canonical identifiers help here. See how to deduplicate components across many SBOMs.

Where Safeguard fits

Safeguard scans repositories and images to produce SBOM and dependency inventories, and it can be tried first on your own code with the free scan at gold.safeguard.sh/scan. Confirm any import behaviour against your own test files, as described above.

Quick check

Do I need to test every supplier file?

Test one file per supplier tool, not one per supplier. Different suppliers using the same generator tend to produce similar output.

Is a platform that stores an SBOM as an attachment good enough?

Only if you never need to search, match or diff it. Attachment storage gives you a file cabinet, not management.

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.