Explore Cenitia’s compliance workflow and availability.Cenitia compliance workflow

How it works →
Cenitia
How it worksServicesLibraryGlossaryRegulationsToolsAbout
Reserve your spot
How it worksServicesLibraryGlossaryRegulationsToolsAbout

On this page

  • What an SBOM is — and is not
  • Why the CRA mandates SBOMs
  • CycloneDX vs SPDX — practical comparison
  • CycloneDX SBOM — a synthetic structural example
  • Tooling for generating SBOMs
  • VEX — telling downstream consumers what's actually exploitable
  • SBOM maintenance lifecycle
  • Common SBOM mistakes
  • Using Cenitia for this work
  • Related from the Library
  • Further reading
← Library
guide·CRA·11 min read

SBOM for hardware manufacturers — CycloneDX vs SPDX practical guide

Practical SBOM guide for hardware manufacturers in 2026: CycloneDX vs SPDX format comparison, generation tooling, maintenance lifecycle, and CRA Annex I compliance.

By Vladimír Vician · 6 June 2026 · Updated 5 October 2026

TL;DR

CRA Annex I Part II includes a machine-readable SBOM requirement for in-scope products under the applicable main product obligations from 11 December 2027. Check scope and Article 69 transition. CycloneDX and SPDX are candidate formats; verify their actual versions, component coverage and consumer support. Keep the inventory tied to the release. A VEX assertion needs evidence of the actual vulnerability status in that product.

A Software Bill of Materials (SBOM) is a machine-readable list of every software component contained in a product. For in-scope products, CRA Annex I Part II point 1 includes an SBOM obligation when the applicable main product duties apply. Check the Article 2 scope and Article 69 transition rather than applying every duty to every digital product or legacy unit.

This guide walks through what an SBOM is, the two competing canonical formats (CycloneDX and SPDX) and when to choose which, the tooling for generating SBOMs from hardware build pipelines, how to maintain them through the product lifecycle, who to share them with, and the relationship between SBOM and the VEX (Vulnerability Exploitability eXchange) format.

What an SBOM is — and is not

An SBOM lists the software components in a product. For each component it records:

  • Name — the canonical component name (e.g. openssl, mbedtls, freertos)
  • Version — the specific version included (e.g. 3.0.13, 2.28.4)
  • Supplier — the upstream maintainer or vendor (e.g. The OpenSSL Project, Trustworthy Systems / Linaro)
  • Unique identifier — a Package URL (pkg:generic/openssl@3.0.13) or SPDX identifier or CPE
  • Hash — cryptographic hash (SHA-256) of the binary or source artefact
  • License — SPDX license identifier (Apache-2.0, BSD-3-Clause, GPL-3.0-or-later)
  • Source URL or download location — where the component was sourced from
  • Known vulnerabilities — optionally, CVE identifiers known at release time

What an SBOM is not:

  • A vulnerability scan result — the SBOM is the input to vulnerability monitoring, not the output
  • A license compliance report — the SBOM contains license metadata but the compliance assessment is a separate activity
  • A code coverage or quality metric — the SBOM describes components, not their internal quality
  • An exhaustive inventory of every line of code — granularity is component-level, not file-level

Why the CRA mandates SBOMs

The legal basis is Annex I Part II item (1):

"Identify and document vulnerabilities and components contained in the product with digital elements, including by drawing up a software bill of materials in a commonly used and machine-readable format covering at the very least the top-level dependencies of the product."

The SBOM is the machine-readable foundation that all other CRA vulnerability handling requirements depend on:

  • Item (2) — addressing vulnerabilities without undue delay requires knowing which components are affected
  • Item (3) — regular security testing requires knowing what to test
  • Item (4) — publicly disclosing fixed vulnerabilities requires identifying affected versions
  • Item (7) — securely distributing updates requires tracking component-level state

Without an SBOM, the rest of Part II is unverifiable.

Beyond CRA, SBOMs are mandated or recommended under:

  • US Executive Order 14028 (2021) — federal procurement
  • NIST SP 800-218 — Secure Software Development Framework
  • NIS2 Directive — Article 21 risk management for essential and important entities
  • ENISA Good Practices for Supply Chain Cybersecurity
  • DORA — Digital Operational Resilience Act for financial entities (from January 2025)

CycloneDX vs SPDX — practical comparison

Both are candidate machine-readable formats. Check the chosen schema version, dependency coverage, recipient requirements and tool interoperability. A format name alone does not prove conformity:

DimensionCycloneDXSPDX
OriginOWASP project, founded 2017Linux Foundation, founded 2010
StandardisationECMA-424; verify the chosen schema editionSPDX 2.2.1 is ISO/IEC 5962:2021; later versions differ
Primary focusSecurity, vulnerability managementLicense compliance, software supply chain
FormatJSON, XML, ProtobufJSON, YAML, RDF, tag-value
Vulnerability metadataFirst-class with VEX integrationSPDX 3 security profile and external records; check consumer support
License expressionStandard SPDX license IDs supportedNative and richer license expression syntax
Tooling depth (2026)Syft, Trivy, native build-system plugins for npm/Maven/pip/Cargo/Go/GradleSyft, FOSSology, ScanCode, REUSE tool
SignatureEmbedded JSF signatureExternal signature (DSSE, in-toto attestation)
Typical hardware fitEmbedded firmware with security focusEnterprise software with license focus
File sizeCompact JSONVerbose RDF / tag-value; JSON variant is comparable to CycloneDX

Choose the format your recipient and pinned toolchain can consume. Compare supported profiles, schema versions and required security/licence fields. If providing both, validate the conversion and any lost relationships or assertions. This article does not establish a universal government-procurement default or benchmark proving one format is best for all embedded products.

CycloneDX SBOM — a synthetic structural example

All names and versions below are fictional. This is a schema example, not scanner output, a real firmware inventory or evidence of CRA coverage.

{
  "bomFormat": "CycloneDX",
  "specVersion": "1.7",
  "version": 1,
  "metadata": {
    "component": {
      "type": "device",
      "bom-ref": "demo-device",
      "name": "ExampleSensor",
      "version": "demo-1"
    }
  },
  "components": [
    {
      "type": "library",
      "bom-ref": "example-library",
      "name": "example-library",
      "version": "demo-1",
      "purl": "pkg:generic/example-library@demo-1"
    }
  ],
  "dependencies": [
    {
      "ref": "demo-device",
      "dependsOn": [
        "example-library"
      ]
    },
    {
      "ref": "example-library",
      "dependsOn": []
    }
  ]
}

This compact example illustrates document structure only. A real release needs actual component identities, versions, dependencies and traceability to its firmware artifact.

Tooling for generating SBOMs

In 2026 the practical tooling landscape for hardware manufacturers:

ToolTypeBest for
SyftOpen source CLIScanning filesystems, container images, embedded rootfs; CycloneDX and SPDX output
TrivyOpen source CLISBOM + vulnerability scan in one pass; CycloneDX and SPDX output
CycloneDX build pluginsBuild-system integrationDirect SBOM generation from npm, pip, Maven, Gradle, Cargo, Go
FOSSologyOpen source web appLicense compliance focus; SPDX-first
ScanCode ToolkitOpen source CLIDetailed license and copyright scanning
REUSE ToolOpen source CLIMaintaining license metadata at source code level
Anchore Enterprise, Mend SCA, Snyk, Sonatype Nexus IQCommercialEnterprise pipelines with continuous monitoring

For embedded firmware specifically:

  • Yocto/OpenEmbedded has native SPDX generation since the Kirkstone release
  • Buildroot has SBOM generation via make legal-info
  • ESP-IDF (Espressif) has CycloneDX plugin support since v5.2
  • Zephyr RTOS has SPDX generation as part of the West build tool

For closed-source firmware blobs (radio chipset drivers, baseband modem firmware), the supplier should provide a component-level SBOM that the manufacturer integrates into the product-level SBOM.

VEX — telling downstream consumers what's actually exploitable

The SBOM lists components and their known vulnerabilities. The downstream consumer (or the manufacturer themselves) often hits a wall of false positives — a CVE in openssl 3.0.13 may exist in the library but be unreachable in the product because the affected code path is never invoked.

VEX — Vulnerability Exploitability eXchange — addresses this. A VEX statement is a machine-readable assertion of the form:

  • "CVE-2024-12345 affects openssl 3.0.13 listed in our SBOM"
  • "In our product context this CVE is not_affected" (or affected, fixed, under_investigation)
  • "Justification: the affected code path is unreachable because we do not enable TLS 1.0"

Two VEX formats coexist:

  • CycloneDX VEX — embedded in the SBOM as vulnerabilities block
  • CSAF VEX — standalone JSON, OASIS standard, used by US CISA and many vendors

For most hardware manufacturers, embedding VEX in CycloneDX is the cleaner approach — one document carries both the inventory and the per-CVE context. For multi-vendor coordinated disclosure where multiple vendors must converge on a single VEX statement, CSAF VEX is the more interoperable choice.

SBOM maintenance lifecycle

An SBOM is not a one-time deliverable. The lifecycle per product release:

  1. Generate — at the end of the build pipeline, automatically
  2. Validate — against the CycloneDX or SPDX schema
  3. Sign — cryptographically, so consumers can verify provenance
  4. Store — alongside the firmware binary and the Technical File, version-controlled
  5. Distribute — to market surveillance authorities on request, to enterprise customers via secured portal, to security researchers via CVD flow
  6. Monitor — against vulnerability feeds (NVD, GitHub Security Advisories, vendor advisories) continuously
  7. Update — issue a new SBOM with each release that changes any component; maintain historic versions for the retention period

Cenitia automates step 6 for SBOMs uploaded into the system — vulnerability feeds are checked daily against the SBOMs in your organisation and affected products are flagged with VEX-ready triage guidance.

Common SBOM mistakes

From the Inovasense practice and the Cenitia review pipeline:

  • No SBOM at all. The default state for many embedded products in 2025-2026. From December 2027 this is non-conformity with CRA Annex I Part II.
  • One SBOM generated at first release, never updated. Annex I Part II requires per-release maintenance.
  • SBOM with only the high-level applications, missing OS and library layers. "Top-level dependencies" includes the kernel, libc, the RTOS, the radio stack — not just the manufacturer-authored application.
  • Missing closed-source firmware blobs. Wi-Fi chipset firmware, baseband modem firmware, GPU firmware blobs are software components and must be listed.
  • Unsigned SBOM. Downstream consumers cannot verify the SBOM came from the manufacturer unaltered.
  • No VEX statements. Vulnerability monitoring on the SBOM surfaces dozens of CVEs that are not actually exploitable in product context. Without VEX, downstream consumers are unable to triage.
  • No retention plan. Apply the documentation retention rule in CRA Article 13(13): at least ten years after placing on the market or the support period, whichever is longer. Historic SBOMs enable retrospective vulnerability monitoring on the installed base.
  • SBOM stored on a developer's laptop instead of in version control. Loss of historic SBOMs is loss of historic compliance evidence.

Using Cenitia for this work

Cenitia helps prepare evidence-linked working drafts within its supported regulatory catalogue. Confirm the product scope, actual applied standards and completed assessments, and review the result before issuance. Source-change alerts prompt a review; they do not certify conformity, automatically reissue a signed declaration or guarantee monitoring of every national rule and standard edition.

Explore Cenitia’s compliance workflow

Review the supported scope and workflow

Related from the Library

  • CRA Annex I explained — the Annex I Part II item (1) requirement the SBOM satisfies
  • Technical File 101 — where the SBOM lives in the documentation stack
  • CRA timeline and reporting obligations — the September 2026 reporting that depends on SBOM-driven vulnerability tracking

Further reading

  • CycloneDX specification — current version 1.5 / 1.6 draft
  • SPDX specification — ISO/IEC 5962:2021
  • CISA SBOM resources
  • ENISA Good Practices for Supply Chain Cybersecurity
  • NTIA Minimum Elements for an SBOM — US baseline that informed CRA
  • OASIS CSAF VEX
  • Syft documentation — open-source SBOM generation
  • Trivy documentation — SBOM + vulnerability scanning

FAQ

Frequently asked questions

  • What is an SBOM?+

    CRA Annex I Part II point 1 includes a commonly used, machine-readable SBOM covering at least top-level dependencies for in-scope products under the applicable product obligations. Main application is 11 December 2027, subject to scope and transition. CycloneDX and SPDX are candidate formats; neither is mandated by name and format choice alone does not establish adequate coverage.

  • Is an SBOM mandatory under the Cyber Resilience Act?+

    Closed-source components still need to be considered in the product inventory. Seek supplier version, identity and vulnerability information and record missing coverage and follow-up actions. Do not assume CRA imposes the same direct SBOM obligation on every upstream supplier irrespective of its role, scope and placement.

  • CycloneDX or SPDX — which one should I use?+

    The stated CRA minimum is at least top-level dependencies. Choose and document a component boundary that supports the actual product’s vulnerability-handling duties. Transitive, statically linked and vendor components may be needed for useful coverage; a shallow schema-valid list does not prove that the product inventory is adequate.

  • Do I need SBOMs for closed-source firmware components?+

    Keep the SBOM linked to the exact released firmware and update it when the included software changes. Preserve historical release records for vulnerability analysis. CRA Article 13(13) sets technical-documentation retention at at least ten years after placing on the market or the support period, whichever is longer; do not substitute an automatic last-family-unit rule.

  • How granular must the SBOM be?+

    CRA Annex I Part II requires 'at the very least the top-level dependencies'. In practice this means every component directly included in the product — every library statically linked, every runtime dynamically linked, every package installed in the firmware image, every utility shipped in the rootfs. Going one level deeper (transitive dependencies) is recommended for vulnerability monitoring quality but not strictly mandated. For container-based products and Linux-based embedded systems, full transitive SBOMs are practical and standard.

  • How often does an SBOM need to be updated?+

    Distinguish a lawful authority request, an assessment-body evidence request and a customer contract. CRA does not impose blanket public publication of the complete SBOM. Consider access, confidentiality, security and contractual terms rather than assuming every researcher or reporting recipient must receive the full inventory.

  • What is VEX and how does it relate to SBOM?+

    VEX — Vulnerability Exploitability eXchange — is a companion machine-readable format that asserts whether specific CVEs affecting components in an SBOM are actually exploitable in the product context. An SBOM lists components and their known vulnerabilities; the VEX statement says 'CVE-2024-12345 affects component X version Y; in our product the affected code path is not reachable so this vulnerability is not exploitable here'. Both CycloneDX and CSAF VEX formats are supported by tooling. VEX significantly reduces false-positive vulnerability noise for both the manufacturer and downstream consumers.

  • Who should I share the SBOM with?+

    Market surveillance authorities on request — mandatory under CRA. ENISA and member-state CSIRTs during incident response coordination under CRA Article 14. Enterprise customers and procurement frameworks (NIST 800-218 in US, NIS2 in EU) frequently require SBOM disclosure at the contracting stage. Security researchers participating in your coordinated vulnerability disclosure programme need SBOM access to verify reported issues. Public SBOM publication is becoming common practice but is not mandatory under CRA.

Portrait of Vladimír Vician

Written by

Vladimír Vician

Founder, Cenitia · Founder & Managing Director, Inovasense s.r.o.

Founded Inovasense in Bratislava in 2016. Specialises in EU-sovereign hardware — FPGA and embedded systems design, embedded security, and regulatory compliance under the CRA, RED (EN 18031), and the harmonised standards each cites. Named signatory on every Declaration of Conformity Inovasense ships.

Best reached on LinkedIn. For longer enquiries, the Inovasense contact form.

Inovasense profile · More about Cenitia

Continue reading

Related guides

  • reference

    SBOM for legacy embedded firmware: building one from binaries when source is gone

    Build an SBOM for legacy embedded firmware from binaries — Binwalk extraction, Syft + Trivy scan, EMBA triage, and an honest residual-risk template for CRA Annex I Part II.

    14 min read

  • reference

    SBOM tooling for embedded systems: Syft, Trivy, Yocto SPDX and CycloneDX-generators compared

    SBOM tools for embedded development compared — Syft, Trivy, Yocto create-spdx, CycloneDX-generators, EMBA — with a decision matrix and CRA Annex I Part II mapping.

    14 min read

  • guide

    SBOM update frequency under CRA: release-based maintenance and historic retention

    How often the SBOM must be updated under CRA Annex I Part II item (1) and Annex VII — release-based maintenance, historic version retention, and vulnerability monitoring cadence.

    11 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

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.

Explore Cenitia’s compliance workflow

Review the supported scope and workflow

← Back to Library

Cenitia

The EU compliance engine for hardware manufacturers. Cited drafts, electronic signing, regulation watching — all in one place.

A product of Inovasense s.r.o., Bratislava, Slovakia · Data hosted in Stockholm, EU

Site

  • How it works
  • Expert services & pricing
  • Library
  • Glossary
  • Regulations
  • By product type
  • Tools
  • About

Legal

  • Imprint
  • Privacy
  • Terms

© 2026 Inovasense s.r.o. · cenitia.com

Operated in Slovakia · Evidence, expert review and clear service scope