Free SBOM generators compared: Syft, Trivy, cdxgen - and what the CRA still needs

Close-up of multicoloured code lines on a screen
Photo: Markus Spiske / Pexels

Under the Cyber Resilience Act (Regulation (EU) 2024/2847, "CRA"), every product with digital elements needs a software bill of materials (SBOM). The good news: generating one is free and takes seconds. The less good news: the SBOM is the starting point of the CRA's vulnerability handling, not the end of it. This guide compares the four best-known free generators and shows what is still left for you to do.

What the CRA actually requires

Annex I, Part II, point 1: manufacturers must identify and document vulnerabilities and components contained in the product, "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 products".

Three things follow from that sentence:

  • Format: "commonly used and machine-readable". In practice that means CycloneDX or SPDX in JSON. The CRA does not name a format; the Commission may specify the format and elements by implementing act (Art. 13(24)).
  • Depth: at least top-level dependencies. Most tools give you transitive dependencies too, which is what you need to answer "are we affected?" when a new CVE appears.
  • Place: the SBOM is part of the technical documentation (Annex VII, point 2) and must be handed to a market surveillance authority on reasoned request (Annex VII, point 8). You do not have to publish it. Keep it, like the rest of the documentation, for 10 years or the support period, whichever is longer (Art. 13(13)).

A useful benchmark while there is no EU format rule: Germany's BSI Technical Guideline TR-03183-2 (version 2.1.0, August 2025) asks for CycloneDX 1.6 or higher, or SPDX 3.0.1 or higher, with the SBOM creator, a timestamp, and for each component its creator, name, version, filename, hash and licence. It is not EU law, but it is the most detailed public description of a CRA-ready SBOM so far.

The four tools at a glance

SyftTrivycdxgenMicrosoft SBOM Tool
Maintained byAnchoreAqua SecurityCycloneDX project (OWASP)Microsoft
LicenceApache-2.0Apache-2.0Apache-2.0MIT
OutputCycloneDX JSON, SPDX JSON, Syft JSON; converts between formatsCycloneDX JSON, SPDX (tag-value and JSON)CycloneDX 1.6 and 1.7 (older on request); export to SPDX 3.0.1SPDX 2.2 by default, SPDX 3.0
ScansContainer images, directories, archivesDirectories, container images, VM images, Kubernetes, IaCSource repositories, lock files, container imagesBuild output and source, via Component Detection
Also finds vulnerabilitiesNo - pairs with GrypeYes (trivy sbom, --scanners vuln)NoNo
Best forOne tool for everything, mixed stacksTeams that already use Trivy for scanningDeep, accurate dependency trees from source.NET and Azure DevOps pipelines

All four cover the common ecosystems: JavaScript/npm, Python, Java, Go, Rust, PHP and .NET.

Strengths and catches

Syft handles dozens of package ecosystems, from Alpine, Debian and RPM packages to npm, PyPI, Maven, Go modules, Composer and Cargo, and works on container images as well as plain directories. It can produce signed SBOM attestations. The catch: it reads what is on disk and in manifests, and does not resolve dependency trees as deeply as language-specific tools.

Trivy generates an SBOM and scans it in one tool, which makes it popular in CI. One warning: on 19 March 2026, attackers published a backdoored Trivy release (v0.69.4) and rewrote version tags of the trivy-action and setup-trivy GitHub Actions to steal CI secrets - the second compromise of Trivy's infrastructure in under three weeks. If you use it, check which versions you pulled and pin GitHub Actions to full commit SHAs, not tags. That advice applies to every tool in this list.

cdxgen focuses on accuracy: it resolves dependency trees from lock files and package managers and can add evidence of where a component was found. It targets current CycloneDX versions and can convert to SPDX 3.0.1, which matches the BSI benchmark above. The catch: it is CycloneDX-first, and runs on Node.js unless you use the standalone binary or container.

Microsoft SBOM Tool is built for build pipelines, validates its output, and fills licence data from the ClearlyDefined service. The catch: it produces only SPDX, defaults to SPDX 2.2, and its ecosystem coverage is narrower than Syft's.

A first SBOM in one line

From the root of your repository, after installing the tool:

syft dir:. -o cyclonedx-json=sbom.cdx.json
trivy fs --format cyclonedx --output sbom.cdx.json .
cdxgen -o sbom.cdx.json .

Run it on the code you actually ship. For a plugin, that is the release package with its bundled libraries; for a container, the image; for firmware, the root filesystem. Commit the SBOM next to the release, or store it with your release artefacts.

Firmware and C/C++ need extra work. Generators find components through package managers and lock files. Libraries copied into the source tree, vendor SDKs and statically linked code often have neither. Expect to add those components to the SBOM by hand, or from your build system's own manifest.

What no generator does for you

The CRA's vulnerability handling (Annex I, Part II) and reporting (Art. 14) start where the SBOM ends:

The CRA asks you toWhat the free tools give youWhat is left to you
Keep an SBOM for each releaseA file, when someone runs the commandRun it at every release, keep each version for 10 years
Address vulnerabilities without delayA list of CVEs on the day you scan (Trivy, Grype)Scan again every day; decide which CVEs actually affect you
Know if a vulnerability is actively exploitedNothing directlyWatch exploited-vulnerability sources such as ENISA's European Vulnerability Database (EUVD)
Report an exploited vulnerability within 24 hours, notify within 72 hoursNothingWrite and submit the early warning and notification (how)
Publish a disclosure policy and a contact addressNothingWrite the policy, publish security.txt, answer reports
Document all of it in the technical documentationThe SBOM onlyWrite and update the documentation (what goes in it)

The SBOM tells you what is inside. The daily routine around it is what the CRA really asks for - and it is the part that slips in a company of three, because nobody notices a missed day until a customer does.

An honest note: if you have a developer who enjoys this, the free tools plus a scheduled CI job and a daily look at the results can get you most of the way. Many teams start like that.

Not sure what the CRA asks of you?

Take the free "Does the CRA apply to me and what must I do by December 2027" check: 8 questions, about 3 minutes, result on screen and checklist by e-mail. Take the free check

If you would rather not own the routine, Earlybell does it for you: connect your repository, and we generate the SBOM with every release, check all your dependencies daily, flag what is actively exploited, draft your 24-hour and 72-hour reports for you to submit, and keep your disclosure policy and security.txt up to date. 49 EUR per product per month.

This article is based on Regulation (EU) 2024/2847 (Cyber Resilience Act), the tools' own documentation and public reports, as of October 2026. Tool features change between releases; check the current documentation. It is not legal advice.

Sources

  1. Regulation (EU) 2024/2847 (Cyber Resilience Act), official text - EUR-Lex
  2. CRA Annex I - essential cybersecurity requirements - springlex.eu, accessed 22 October 2026
  3. CRA Annex VII - technical documentation - springlex.eu, accessed 22 October 2026
  4. CRA Art. 13 - obligations of manufacturers - springlex.eu, accessed 22 October 2026
  5. Syft - GitHub (anchore/syft), accessed 22 October 2026
  6. Trivy - SBOM documentation, accessed 22 October 2026
  7. cdxgen - GitHub (CycloneDX/cdxgen), accessed 22 October 2026
  8. Microsoft SBOM Tool - GitHub (microsoft/sbom-tool), accessed 22 October 2026
  9. SBOM generation tools compared (26 January 2026) - sbomify.com, accessed 22 October 2026
  10. Trivy compromised: the TeamPCP supply chain attack - Wiz, accessed 22 October 2026
  11. BSI TR-03183-2 - Software Bill of Materials; summary by FOSSA, accessed 22 October 2026
  12. European Vulnerability Database (EUVD) - GRC Report, accessed 22 October 2026