123% mehr gemeldete CVEs pro Tag in 2026 als im Vorjahr.

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.

Recorded during the build, not scanned afterwards A scanner reads a lockfile or manifest after the fact and reconstructs what it thinks went in. CRACI observes the job's traffic to package sources while the build runs, including packages restored from CI caches, so the SBOM lists what the job actually pulled in. A scanner, after the build Lockfile Scanner SBOM Reconstructs what it thinks went in, from the files it can read Nothing tells you what it missed CRACI, during the build Job fetches Proxy records Job SBOM Lists what the job actually pulled in, including packages restored from CI caches Completeness stated for every job

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.

Every layer of transitive dependencies A dependency tree three layers deep. The app depends directly on express, pg and a build script. Express pulls in body-parser and router, which pull in raw-body and path-to-regexp; pg pulls in pg-protocol. The build script fetches a prebuilt library during the build, which bundles a native codec that matches a vulnerability advisory. A lockfile scanner sees the packages the lockfile lists; CRACI records every package the job fetched, at every depth, including the ones only the build pulls in. Your app Direct Layer 2 Layer 3 your-app express pg build script body-parser router pg-protocol prebuilt lib raw-body path-to-regexp native-codec advisory match In the lockfile and the build record Only in the build record: fetched while the job ran Matched an advisory, so it is tracked like any other

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.

Packages restored from CI caches stay in the SBOM A first job fetches packages from a registry through CRACI's proxy and saves a cache. The dependency evidence travels with the cache, so when a later job restores it, those packages stay in that job's SBOM even though they never touched a registry. First run: cache miss npm registry Job 1 fetches Cache + evidence Packages recorded through the proxy Later run: cache hit Job 2 restores Cache + evidence No registry request, packages still recorded Job 2 SBOM express 5.2.1 (from cache) lodash 4.17.21 (from cache) Cache-restored packages stay in the SBOM

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.

A completeness state for every job Instead of presenting every SBOM as complete, CRACI states completeness for each job and each cache: Complete, Complete with connections, Incomplete, Unavailable or Not recorded. Workflow run: SBOM completeness Job Completeness build Complete test Complete with connections integration Incomplete docs Not recorded Why it matters Vulnerability tracking can only match listed components. A package missing from the SBOM is a vulnerability nobody is alerted about, so CRACI says when a list is partial.

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.

Ecosystems and formats CRACI records packages from npm, PyPI, RubyGems, Cargo, Go, Nix, OCI, apt, apk and Git sources, plus Yocto and OpenEmbedded download presets, and treats JFrog Artifactory npm and PyPI mirrors as known sources. Maven and Java are on the roadmap. SBOMs export as CycloneDX or SPDX. Recorded today npm PyPI RubyGems Cargo Go Nix OCI apt · apk Git sources, Yocto presets Artifactory npm, PyPI mirrors On the roadmap Maven and Java Export CycloneDX SPDX With transitive dependencies and declared licenses

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.

Declared licenses on every component Every recorded package carries its declared license into the SBOM, so restrictive and copyleft licenses show up before you ship. License policy rules can block a build on a license. Job SBOM: components and licenses Component Declared license express 5.2.1 MIT requests 2.32.3 Apache-2.0 serde 1.0.219 MIT OR Apache example-lib 1.4.0 GPL-3.0 copyleft License policy Build blocked: GPL-3.0 is not allowed Caught before it ends up in your product

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.

Provenance data from every build Every job on CRACI records the packages it fetched and its network trace. The public REST API returns the job's SBOMs, network trace and provenance. Build release job on CRACI Recorded packages fetched network trace Provenance build data, via the API Ask the API about any job Job → SBOM, trace, provenance Returned by the API Job Packages CycloneDX SBOM Network trace Recorded on every CRACI job, no extra step

Ü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.

Vulnerability tracking after release After a release ships, its SBOM stays monitored. When a new vulnerability is published, CRACI re-evaluates the monitored SBOMs, finds the affected releases, and the security team triages the finding and routes it to the team that owns the fix. The inventory view shows which software versions are deployed to which products. Release shipped SBOM monitored Later New advisory published Re-evaluated automatically Finding: critical, in 2 releases 1. Triage 2. Route to owner 3. Team fixes Policy gates can block a build on findings · VEX supported Inventory: deployed versions Product Version Web app v4.12.0 Mobile API v2.3.1

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.

How a scanned SBOM and a recorded SBOM are made Left, a scanner: it reads the lockfile after the build, which lists packages A to E, so its SBOM contains A to E. The build also fetched code through an install hook, a build script download and a base image, which are in no lockfile, so the scanned SBOM is missing them. Right, CRACI: it sees the traffic coming into the build, so all eight packages, including the three hidden dependencies, land in the recorded SBOM. Scanner reads files after the build package-lock.json A B C D E the build also fetched install hook download build script download base image layers in no lockfile, so the scan never sees them Scanned SBOM A B C D E missing missing missing CRACI sees the traffic into the build the network build job on CRACI every package that comes in Recorded SBOM A B C D E install hook build script base image hidden ones too
A scanner can only list what the lockfile or the output declares. CRACI sees what actually came into the build, including the hidden dependencies.
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