How to Validate an SBOM Beyond Passing the JSON Schema
Validate SBOM structure, identity, dependency links and release coverage with deliberately weak and improved CycloneDX fixtures.
By Cenitia
An SBOM can pass its JSON schema and still be unusable for a firmware vulnerability review. Validate its structure first, then ask whether component identities, dependency links and release coverage match the product you actually ship.
This tutorial uses two deliberately synthetic CycloneDX fixtures. They describe invented demo packages, not a Cenitia product or a customer's firmware. Use the review worksheet and download the weak fixture and improved fixture.
Keep three different checks separate
Schema validation asks whether the document conforms to the selected format version. Semantic checks ask whether references and identities make sense. Coverage checks compare the document with independent build and release evidence.
Passing the first two cannot establish the third. A perfectly structured document can omit an entire bootloader or vendor binary. Conversely, an unknown version may be an honest gap that needs investigation rather than a reason to invent a version string.
The fixtures use CycloneDX 1.7 and its official JSON schema. Our structural run disables JSON Schema format checks, so it is not exhaustive format validation. Pin the format and validator in your run record. Do not silently validate an older document using a newer schema and call the result equivalent.
Inspect identity before running vulnerability matching
Look for a product identity, release version and relationship to the firmware artefact. Then inspect each component's name, version, supplier or provenance and identifiers where applicable. Preserve local modifications and vendor patches in supporting evidence.
Package names alone are ambiguous. A demo component called netlib does not identify a particular upstream project, build option or vulnerability exposure. A package URL or other identifier can improve matching, but a guessed identifier creates false confidence.
Document unresolved identities in a gap register with an owner. If a binary has no trustworthy version information, retain its hash and supplier reference and explain the limitation. “Unknown” is useful when it is specific and actionable.
Use a weak fixture to expose your assumptions
The weak fixture is intentionally small: a product and one library with a vague identity. It can meet schema requirements while lacking a useful component version and an explicit dependency graph.
The improved fixture identifies a fictional firmware release and two fictional components, with consistent references and a root dependency relationship. Its package URLs use the generic package type because these are demo identities. They are not assertions that matching public packages exist.
Our companion validator checks schema validity, duplicate component references, unresolved dependency references, missing versions and the root dependency entry. It is an editorial demonstration, not a universal SBOM certification tool. Some valid SBOMs legitimately use different structures or identity strategies.
Compare the SBOM with independent release records
| Release evidence | Coverage question |
|---|---|
| Installed package manifest | Are shipped packages represented, including custom recipes? |
| Linked library or build map | Are statically linked dependencies missing from package listings? |
| Boot and partition inventory | Does the inventory cover bootloader, recovery and secondary processors? |
| Vendor binary register | Are opaque blobs identified and their limitations stated? |
| Firmware signing record | Which exact artefact does this SBOM describe? |
| Backend inventory | Is required server software separately inventoried where relevant? |
These are our recommended comparison inputs. The applicable legal scope and disclosure obligations need a separate assessment. A schema pass is not a finding of CRA conformity.
Record the result so another engineer can repeat it
Keep the input hashes, generation command, tool version, schema URL and digest, validator version, raw output and reviewed exceptions. Run the checks in the release process and keep the output with the release, rather than validating whichever file happens to be on a laptop later.
The demonstration runner and actual local results are included in the editorial verification record. Its negative checks are intentional: the weak fixture should pass structure while producing quality warnings. The improved fixture should resolve those demonstrated warnings without being described as complete product coverage.
Decide what happens when a check fails
Structural errors normally return to the generator or document author. Identity gaps go to the component owner. Coverage gaps may require a different extraction method or supplier evidence. State whether each gap blocks release and who can approve an exception.
For format background, see our SPDX and CycloneDX comparison. The synthetic fixtures cannot prove coverage of any actual device.
CRA applicability and timing
Most CRA product obligations apply from 11 December 2027; manufacturer Article 14 reporting applies from 11 September 2026. Check the product scope, role and specific transitional provisions before treating a future requirement as a current duty. See the Commission manufacturer guidance and reporting guidance.
Continue reading
Related guides
guide
CRA Support Period for Hardware and How to Document Your Decision
Document a defensible CRA support period using expected product use, dependencies and an explicit customer support end date.
4 min read
tutorial
Coordinated Vulnerability Disclosure Policy for Hardware Manufacturers
Build a usable hardware vulnerability disclosure policy with intake owners, safe testing boundaries and a security.txt example.
4 min read
reference
CRA for existing products already on the EU market: the Article 69 transitional rules
CRA Article 69 explained: grandfathering for products placed on the EU market before 11 December 2027, substantial modification test, Article 14 reporting carve-back.
14 min read
comparison
ISO/IEC 27001 vs CRA — when to certify both
ISO/IEC 27001:2022 is an organisational ISMS standard; the EU Cyber Resilience Act is a product-level regulation. Where they overlap, where they don't, and why you need both.
9 min read
Put this into practice
Free tools & references
- CRA Readiness CheckerScore your product against the Cyber Resilience Act essential requirements.Open tool →
- EU Directive SelectorDescribe your product and find which EU directives and regulations apply.Open tool →
New to the terminology? Browse the compliance glossary — plain-English, citation-backed definitions of every term above.