SBOM-Generierung, während des Builds aufgezeichnet
CRACI ist ein Tool zur SBOM-Generierung, das aufzeichnet, was jeder GitHub-Actions-Build tatsächlich geladen hat, statt nachträglich Dateien zu scannen. Jede SBOM gibt an, wie vollständig sie ist.
Kurz gesagt: Lassen Sie Ihre GitHub-Actions-Jobs auf CRACI-Runnern laufen, und jeder Job erhält eine SBOM der Pakete, die er geladen hat, einschließlich transitiver Abhängigkeiten und Paketen aus CI-Caches, exportiert als CycloneDX oder SPDX. Jede SBOM trägt einen Vollständigkeitsstatus und wird nach dem Release auf neue Schwachstellen überwacht. Scan-Tools wie Syft und Trivy rekonstruieren eine SBOM aus Dateien; CRACI zeichnet sie aus dem Build auf. Warum sich Build-Time-SBOMs unterscheiden.
Während des Builds aufgezeichnet, nicht nachträglich gescannt
Die meisten SBOM-Generatoren lesen nach dem Build Dateien aus und rekonstruieren, was vermutlich eingeflossen ist. CRACI erzeugt die SBOM in seinem eigenen CI-Runner. Ein paketbewusster Proxy beobachtet den Datenverkehr jedes Jobs zu den Paketquellen. Die SBOM listet deshalb, was der Job tatsächlich geladen hat, transitive Abhängigkeiten eingeschlossen, und nicht, was ein Manifest als Bedarf angibt. Für die Aufzeichnung braucht es weder ein Lockfile noch installierte Abhängigkeiten noch einen zusätzlichen Scan-Schritt.
Transitive Abhängigkeiten auf jeder Ebene
Das meiste, was ein Build lädt, ist keine direkte Abhängigkeit, sondern die Abhängigkeit einer Abhängigkeit, mehrere Ebenen tief. Manches davon steht in keinem Lockfile: vorkompilierte Binärdateien, die ein Build-Skript herunterlädt, Pakete aus einem Cache, Betriebssystempakete. CRACI zeichnet jedes Paket auf, das der Job geladen hat, auf jeder Ebene, sodass Schwachstellen mit dem gesamten Abhängigkeitsbaum abgeglichen werden. In direkten Vergleichen mit anderen SBOM-Tools hat diese vollständigere Aufzeichnung Schwachstellen aufgedeckt, die die anderen Tools nicht gemeldet haben.
Pakete aus CI-Caches bleiben in der SBOM
An Caches scheitert die Aufzeichnung während des Builds normalerweise: Ein Paket aus einem Cache berührt nie eine Registry, ein Proxy allein würde es also übersehen. CRACI gibt die Abhängigkeitsnachweise mit dem Cache weiter, sodass Pakete aus einem CI-Cache in der SBOM des Jobs bleiben, der sie wiederhergestellt hat.
Ein Vollständigkeitsstatus für jeden Job
Die Schwachstellenverfolgung kann nur die Komponenten abgleichen, die Ihre SBOM auflistet. Ein Paket, das in der SBOM fehlt, ist eine Schwachstelle, vor der niemand gewarnt wird. Statt jede SBOM als vollständig darzustellen, weist CRACI die Vollständigkeit für jeden Job und jeden Cache aus: Complete, Complete with connections, Incomplete, Unavailable oder Not recorded. So wissen Sie, auf welche SBOMs Sie sich verlassen können und welche Sie genauer prüfen sollten.
Die Ökosysteme und Formate, die Sie ausliefern
CRACI zeichnet Pakete aus npm, PyPI, RubyGems, Cargo, Go, Nix, OCI, apt, apk und Git-Quellen auf, dazu Yocto- und OpenEmbedded-Download-Presets, und behandelt JFrog-Artifactory-Spiegel für npm und PyPI als bekannte Quellen. Unterstützung für Maven und Java ist auf der Roadmap. SBOMs lassen sich als CycloneDX und SPDX exportieren, transitive Abhängigkeiten eingeschlossen, bereit für Kunden, Partner und Auditoren.
Deklarierte Lizenzen für jede Komponente
Jedes aufgezeichnete Paket bringt seine deklarierte Lizenz in die SBOM mit. Sie sehen vor der Auslieferung, welche Abhängigkeiten unter einer kommerziellen oder anderweitig einschränkenden Lizenz stehen, und Copyleft-Lizenzen fallen auf, bevor sie in Ihrem Produkt landen.
Provenienz über die API
Die SBOM ist ein Teil dessen, was CRACI für jeden Job aufzeichnet. Die öffentliche REST-API liefert SBOMs, Netzwerk-Traces und Provenienzdaten, alle aus demselben Build aufgezeichnet.
Überwacht nach dem Release
Mit einer SBOM weiß ein Unternehmen, was in der Software steckt, die es ausliefert, und Kunden wie Regulierungsbehörden verlangen immer häufiger eine. Der Cyber Resilience Act verpflichtet Hersteller, für in der EU verkaufte Produkte eine SBOM zu erstellen. CRACI bewertet überwachte SBOMs laufend neu, sobald neue Schwachstellen veröffentlicht werden, führt Befunde über Builds und Repositories hinweg zusammen und unterstützt VEX. Die SBOMs, die Sie von Ihren eigenen Lieferanten erhalten, werden zusammen mit Ihren Builds überwacht.
Eine aufgezeichnete SBOM neben einer gescannten
Für Software, die Sie nicht selbst bauen, sind Scanner das richtige Werkzeug. Für Ihre eigenen Releases ändert die Aufzeichnung des Builds Folgendes: Ein Scanner liest das Lockfile oder das Build-Ergebnis und leitet ab, was eingeflossen ist. CRACI sieht den Datenverkehr, der in den Build hineinkommt. Deshalb landen auch die versteckten Abhängigkeiten in der SBOM, die Install-Hooks, Build-Skripte und Basis-Images nachladen.
| Funktion | CRACI | Scanner-basiertes SBOM-Tool |
|---|---|---|
| Wie die Komponentenliste entsteht | Aufgezeichnet aus dem Paketverkehr des Builds | Nachträglich aus Dateien rekonstruiert |
| Benötigt ein Lockfile oder installierte Abhängigkeiten | Nein | Meist das eine oder das andere |
| Pakete aus CI-Caches | Die Nachweise reisen mit dem Cache | Nur wenn die Dateien beim Scan vorhanden sind |
| Vollständigkeitsstatus pro Job | Fünf Zustände, pro Job und pro Cache | |
| Signierte Verknüpfung von Artefakt und Build | Keine signierte Provenienz | Mit einem separaten Signierschritt |
| Software, die Sie nicht selbst bauen | Fügen Sie stattdessen die SBOM des Herstellers hinzu | |
| CI-Systeme | Heute GitHub Actions; weitere CI-Systeme auf der Roadmap | Läuft in jedem CI |
- Enthalten
- Teilweise
- Nicht enthalten
- Auf der Roadmap
Sie vergleichen bestimmte Tools? SBOM-Tools im Vergleich behandelt Syft, Trivy, cdxgen, das Microsoft SBOM Tool, Dependency-Track und weitere. Für das Gesamtbild siehe Tools für Software-Lieferkettensicherheit im Vergleich.
SBOM basics: SPDX, CycloneDX and OpenVEX
Was eine SBOM festhält, wie sich die Formate SPDX und CycloneDX in der Praxis unterscheiden und was OpenVEX zur Frage beiträgt, ob eine Schwachstelle ein Produkt tatsächlich betrifft.
Petteri Pulkkinen und Erika Marttinen bei Kubernetes Community Days Helsinki 2026, 16:50 bis 22:05 aus SBOMbastic: Getting Ready for Upcoming EU Cybersecurity Regulation in Software Supply Chains.
SBOM-Generierung: häufig gestellte Fragen
Was ist SBOM-Generierung?
SBOM-Generierung ist das Erstellen einer Software Bill of Materials, einer Software-Stückliste: eine maschinenlesbare Liste der Komponenten und Abhängigkeiten einer Software. Sie kann aus Quelldateien, während des Builds oder durch Analyse eines fertigen Artefakts wie eines Container-Images entstehen. CRACI erzeugt die SBOM während des Builds, aus dem, was der Build tatsächlich geladen hat.
Wie erzeugt CRACI eine SBOM?
Ihre GitHub-Actions-Jobs laufen auf CRACI-Runnern. Während jeder Job läuft, beobachtet ein paketbewusster Proxy seinen Datenverkehr zu den Paketquellen und zeichnet die geladenen Pakete auf, einschließlich transitiver Abhängigkeiten und Paketen aus CI-Caches. Jeder Job erhält eine eigene SBOM mit Vollständigkeitsstatus.
Muss ich meine Workflows ändern?
Sie ändern runs-on auf craci. CRACI ersetzt den Runner, nicht GitHub Actions. Ihre Workflows und deren Ausführungen bleiben in GitHub.
Welche Paket-Ökosysteme zeichnet CRACI auf?
npm, PyPI, RubyGems, Cargo, Go, Nix, OCI, apt, apk und Git-Quellen, dazu Yocto- und OpenEmbedded-Download-Presets. JFrog-Artifactory-Spiegel für npm und PyPI gelten als bekannte Quellen. Unterstützung für Maven und Java ist auf der Roadmap.
In welchen SBOM-Formaten kann ich exportieren?
CycloneDX und SPDX, einschließlich transitiver Abhängigkeiten und der deklarierten Lizenz jeder Komponente.
Was bedeutet der Vollständigkeitsstatus?
Complete bedeutet, dass CRACI vollständige Nachweise für den Job beobachtet hat und jeder wiederhergestellte Cache vollständig war. Complete with connections bedeutet, dass der Job zusätzlich eigene Netzwerkverbindungen genutzt hat, die eine Prüfung wert sind. Incomplete bedeutet, dass ein Umstand Abhängigkeiten auslassen könnte. Unavailable bedeutet, dass die Nachweise nicht ausgewertet werden konnten, und Not recorded bedeutet, dass der Job älter ist als die Vollständigkeitsangabe.
Findet CRACI Schwachstellen in der SBOM?
Ja. CRACI bewertet überwachte SBOMs laufend neu, sobald neue Schwachstellen veröffentlicht werden, führt Befunde über Builds und Repositories hinweg zusammen und unterstützt VEX. Sicherheitsteams sichten die Befunde und geben sie an die Teams weiter, die für die Behebung zuständig sind.
Kann CRACI eine SBOM für Software erzeugen, die ich nicht selbst baue?
Nein. CRACI zeichnet die Builds auf, die auf seinen Runnern laufen. Für zugekaufte Software fügen Sie die SBOM des Herstellers hinzu, und CRACI überwacht sie zusammen mit Ihren eigenen Builds. Für ein Image eines Drittanbieters, das Sie nicht selbst gebaut haben, ist ein Scanner die praktische Wahl; siehe SBOM-Tools im Vergleich.
Sehen Sie die SBOM Ihres eigenen Builds
Buchen Sie eine Demo, lassen Sie einen Ihrer GitHub-Actions-Workflows auf CRACI laufen und sehen Sie, was er tatsächlich geladen hat
Demo buchen