Eine SBOM für Ihren Stack erstellen
Eine Software-Stückliste (SBOM) führt die Komponenten in dem auf, was Sie ausliefern, mit ihren Versionen. Der Cyber Resilience Act erwartet von Herstellern, dass sie eine führen (Anhang I Teil II Nummer 1). Kostenlose Open-Source-Werkzeuge erstellen für jeden gängigen Stack in wenigen Minuten eine. Diese Seite nennt den Befehl für jeden und was Sie prüfen sollten, bevor Sie sich auf das Ergebnis verlassen.
Die Werkzeuge unten gehören ihren eigenen Projekten; SkyQon entwickelt sie nicht und leistet keinen Support dafür. Befehle am 13. November 2026 in der Dokumentation jedes Projekts geprüft.
Bevor Sie anfangen
- Wählen Sie ein Format. CycloneDX und SPDX sind die beiden offenen Standards. Beide funktionieren. SkyQon liest CycloneDX JSON und SPDX 2.x JSON; XML und SPDX 3.0 liest es noch nicht.
- Beschreiben Sie, was Sie ausliefern, nicht Ihren Laptop. Führen Sie das Werkzeug auf dem Release-Build, der Lock-Datei oder dem ausgelieferten Image aus. Eine SBOM von einem Entwicklerrechner listet Testwerkzeuge und lässt weg, was der Build hinzufügt.
- Eine SBOM je Version. Erstellen Sie für jedes Release eine neue und behalten Sie die alten. Eine Schwachstellenmeldung nennt eine Version; die SBOM dieser Version zeigt, ob sie Sie betrifft.
- Machen Sie sie zum Teil des Builds. Jeder Befehl unten läuft ohne Rückfragen und passt daher in einen CI-Schritt neben dem Build, der das Release erzeugt.
Jeder Stack und Container
Zwei allgemeine Werkzeuge lesen die meisten Paketmanager und Container-Images. Beginnen Sie hier, wenn Ihr Produkt mehrere Sprachen mischt oder als Image ausgeliefert wird.
Syft
Durchsucht ein Verzeichnis oder ein Container-Image und schreibt beide Formate in einem Durchgang.
syft ./my-product -o cyclonedx-json=./sbom.cdx.json
syft registry.example.com/acme/app:2.1.0 -o spdx-json=./sbom.spdx.jsonTrivy
Durchsucht ein Image oder einen Projektordner. Mit diesem Format enthält die Ausgabe nur Komponenten, keine Schwachstellenergebnisse.
trivy image --format cyclonedx --output sbom.cdx.json acme/app:2.1.0
trivy fs --format cyclonedx --output sbom.cdx.json ./my-productcdxgen
Erkennt die Sprachen in einem Projektordner selbst; geben Sie einen Typ an, wenn es falsch rät.
npm install -g @cdxgen/cdxgen
cdxgen -o sbom.cdx.json .
cdxgen -t java -o sbom.cdx.json .Nach Sprache
Jedes Ökosystem hat ein CycloneDX-Werkzeug, das seine eigene Lock-Datei liest. Diese sehen genau die Versionen, die der Build aufgelöst hat.
Python
Aus der Umgebung, in der das Release läuft, oder aus einer requirements-Datei. JSON ist die Standardausgabe.
pip install cyclonedx-bom
cyclonedx-py environment --output-file sbom.cdx.json
cyclonedx-py requirements requirements.txt --output-file sbom.cdx.jsonJavaScript (npm)
In aktuellen Versionen in die npm-Kommandozeile eingebaut. Lassen Sie Entwicklungsabhängigkeiten aus dem heraus, was Sie ausliefern.
npm sbom --sbom-format=cyclonedx --omit=dev > sbom.cdx.json
npm sbom --sbom-format=spdx --omit=dev > sbom.spdx.jsonJava
Maven führt das CycloneDX-Plugin aus, ohne das Projekt zu ändern, und schreibt bom.json unter target. Für Gradle fügen Sie das Plugin org.cyclonedx.bom zum Build hinzu und führen seinen Task aus; die Datei landet in build/reports/cyclonedx.
mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom
./gradlew cyclonedxBomGo
Der App-Modus folgt denselben Build-Einstellungen wie Ihr Release; setzen Sie sie so wie Ihr Build.
go install github.com/CycloneDX/cyclonedx-gomod/cmd/cyclonedx-gomod@latest
GOOS=linux GOARCH=amd64 cyclonedx-gomod app -json -output sbom.cdx.json -main cmd/app .Rust
Im Ordner mit der Cargo.toml ausführen. Die Datei wird daneben geschrieben.
cargo install cargo-cyclonedx
cargo cyclonedx --format json.NET
cdxgen liest die Projekt- und Lock-Dateien. Das CycloneDX-Werkzeug für .NET ist die andere gängige Wahl.
cdxgen -t dotnet -o sbom.cdx.json .C, C++ und Embedded Linux
C and C++
Es gibt keine einheitliche Paketliste, rechnen Sie also mit Lücken. cdxgen liest gängige C- und C++-Build-Metadaten; in den Quellbaum kopierte Bibliotheken werden oft übersehen und müssen von Hand ergänzt werden. Durchsuchen Sie bei Firmware zusätzlich das fertige Image mit Syft und vergleichen Sie.
cdxgen -t c -o sbom.cdx.json .Yocto
Aktuelle Releases schreiben bei jedem Image-Build standardmäßig eine SPDX-Datei, in tmp/deploy/images/MACHINE/ mit dem Namen IMAGE-MACHINE.spdx.json. Ältere Releases schreiben SPDX 2.2, das SkyQon liest. Neuere Releases schreiben SPDX 3.0, das SkyQon noch nicht liest: Führen Sie stattdessen Syft auf dem Root-Dateisystem des Images aus, um eine CycloneDX-Datei zu erhalten.
bitbake core-image-minimal
ls tmp/deploy/images/*/*.spdx.jsonPrüfen, bevor Sie ihr trauen
- Zählen Sie die Komponenten. Ein Webdienst mit einer Handvoll Einträgen ist fast immer ein Scan des falschen Ordners. Vergleichen Sie die Zahl mit Ihrer Lock-Datei.
- Achten Sie auf Package-URLs. Der Abgleich mit Schwachstellendatenbanken stützt sich auf die Package-URL (purl) oder die CPE jeder Komponente. Einträge, die nur einen Namen haben, lassen sich nicht abgleichen.
- Ihr eigenes Produkt steht oben. Die SBOM sollte Ihr Produkt und seine Version als Hauptkomponente nennen, damit ein Leser weiß, welches Release sie beschreibt.
- Erkennen Sie die Testwerkzeuge. Linter, Test-Frameworks und Build-Plugins in der Liste bedeuten, dass sie aus einer Entwicklungsumgebung stammt, nicht aus dem Release.
An SkyQon übergeben
Laden Sie mit dem Add-on CRA Product Evidence die Datei auf der Seite des Produkts hoch und nennen Sie die Version. SkyQon liest bis zu 20.000 Komponenten aus einer Datei von bis zu 20 MB, behält jede Version und gleicht die Komponenten täglich mit OSV.dev und der NVD ab, ergänzt um CISA KEV und EPSS für jeden Treffer. Nur Paketkennungen verlassen die Plattform; die Datei selbst bleibt bei Ihren Nachweisen.
Ein Treffer ist ein Hinweis, kein Urteil: Sie halten fest, ob er Sie betrifft, und dieser Eintrag geht in den signierten Produktnachweisbericht ein. Keine Rechtsberatung; der Hersteller bleibt für die SBOM und ihren Inhalt verantwortlich.
Nicht sicher, ob der CRA Ihr Produkt erfasst?
Die kostenlose Prüfung von Anwendungsbereich und Klasse dauert etwa zehn Minuten je Produkt und nennt die Artikel hinter jeder Antwort.