What is a Software Bill of Materials (SBOM)?
A Software Bill of Materials (SBOM) is a formal, machine-readable inventory of all software components, dependencies, and libraries that make up a product. Think of it as a "list of ingredients" for software.
Why SBOM Matters for CRA
The CRA mandates SBOM because it enables rapid identification of products affected by newly discovered vulnerabilities. When a vulnerability is found in a popular library, an SBOM allows you to quickly determine if your product is affected.
SBOM Key Components
- Component name: The name of each software component or library
- Version: The specific version number being used
- Supplier: Who created or provides the component
- Unique identifier: Such as CPE, PURL, or SWID
- Dependency relationships: How components relate to each other
- License information: The license under which each component is distributed
What Does the CRA Require for SBOM?
The Cyber Resilience Act (specifically Annex I, Part II) mandates that manufacturers create and maintain an SBOM. Here's what the regulation requires:
Machine-Readable Format
The SBOM must be in a machine-readable format. The CRA doesn't mandate a specific standard, but recommends widely adopted formats.
At Minimum: Top-Level Dependencies
The SBOM must include at least the top-level dependencies. Deeper dependency trees are encouraged but not strictly required.
Keep SBOM Updated
The SBOM must be updated whenever the software composition changes—at each release or when dependencies are updated.
Available to Authorities
The SBOM must be provided to market surveillance authorities upon request. It does not need to be public, but must be available.
Recommended SBOM Formats
While the CRA doesn't mandate a specific format, two standards are widely recommended:
CycloneDX
A lightweight standard designed for security use cases. Popular in vulnerability management workflows.
- JSON or XML format
- Supports VEX (Vulnerability Exploitability eXchange)
- Well-supported by security tools
- OWASP project
Recommended for CRA compliance
SPDX
An ISO standard (ISO/IEC 5962:2021) with strong focus on licensing and legal compliance.
- Multiple format options (JSON, RDF, Tag-Value)
- ISO standardized
- Strong license tracking
- Linux Foundation project
Good for license compliance needs
Which Format Should You Use?
For most CRA compliance scenarios, CycloneDX JSON is recommended because it's optimized for vulnerability tracking and has excellent tooling support. However, if you also need strong license compliance tracking, consider SPDX.
How to Generate an SBOM
There are several approaches to generating SBOMs, from automated CI/CD integration to manual tools:
Recommended Tools
Syft (by Anchore)
CLI tool that generates SBOMs from container images, filesystems, and archives.
Recommended for CRAsyft . -o cyclonedx-json > sbom.jsonTrivy
Vulnerability scanner that also generates SBOMs. Good for combined security workflows.
trivy fs --format cyclonedx -o sbom.json .CycloneDX Plugins
Build system plugins for Maven, Gradle, npm, pip, and more.
npm install --save-dev @cyclonedx/cyclonedx-npmGet step-by-step instructions for generating your first SBOM:
SBOM Generator Guide →SBOM Best Practices for CRA
Automate SBOM Generation
Integrate SBOM generation into your CI/CD pipeline so it's automatically updated with each release.
Include Transitive Dependencies
While only top-level is required, including full dependency trees helps with vulnerability tracking.
Version Your SBOMs
Store SBOMs alongside release artifacts so you can trace which SBOM corresponds to which version.
Validate SBOM Quality
Use validation tools to ensure your SBOM is well-formed and contains required fields.
Monitor for Vulnerabilities
Use SBOM-aware vulnerability scanning to get alerts when new CVEs affect your components.
SBOM FAQ
Do I need to make my SBOM public?
No. The CRA requires that you provide the SBOM to authorities upon request, but you are not required to publish it publicly. However, some industries are moving toward SBOM transparency.
How often should I update my SBOM?
Update your SBOM whenever your software composition changes. This typically means generating a new SBOM with each release, and when you update dependencies between releases.
What if I use open-source components?
Open-source components should be included in your SBOM. In fact, tracking open-source dependencies is one of the primary use cases for SBOMs, enabling you to respond quickly when vulnerabilities are discovered.
Is there a minimum depth requirement?
The CRA requires at minimum the top-level dependencies. Deeper dependency trees are best practice but not strictly mandated. However, for effective vulnerability management, capturing the full tree is recommended.
Generate Your CRA-Ready SBOM
Use our step-by-step guide to create your first Software Bill of Materials.