123% di CVE segnalate in più al giorno nel 2026 rispetto all'anno scorso.

La generazione di SBOM, registrata durante la build

CRACI è uno strumento di generazione di SBOM che registra ciò che ogni build GitHub Actions ha effettivamente scaricato, invece di scansionare i file a posteriori. Ogni SBOM indica quanto è completa.

In breve: esegua i Suoi job GitHub Actions sui runner CRACI e ogni job riceve una SBOM dei pacchetti che ha scaricato, comprese le dipendenze transitive e i pacchetti ripristinati dalle cache CI, esportata in CycloneDX o SPDX. Ogni SBOM riporta uno stato di completezza e viene monitorata dopo il rilascio per individuare nuove vulnerabilità. Gli strumenti di scansione come Syft e Trivy ricostruiscono una SBOM dai file; CRACI la registra dalla build. Perché le SBOM generate in fase di build sono diverse.

Registrata durante la build, non scansionata dopo

La maggior parte dei generatori di SBOM legge i file a build terminata e ricostruisce ciò che, secondo loro, vi è entrato. CRACI genera la SBOM all'interno del proprio runner CI. Un proxy che riconosce i pacchetti osserva il traffico di ogni job verso le sorgenti dei pacchetti: la SBOM elenca quindi ciò che il job ha effettivamente scaricato, dipendenze transitive incluse, e non ciò di cui un manifest dice che dovrebbe avere bisogno. Perché la registrazione esista non servono lockfile, alberi di dipendenze installati né passaggi di scansione aggiuntivi.

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

Ogni livello di dipendenze transitive

Gran parte di ciò che una build scarica non è una dipendenza diretta. È la dipendenza di una dipendenza, diversi livelli più in basso, e una parte non compare mai in un lockfile: binari precompilati scaricati da uno script di build, pacchetti ripristinati da una cache, pacchetti del sistema operativo. CRACI registra ogni pacchetto scaricato dal job, a ogni profondità, così le vulnerabilità vengono confrontate con l'intero albero. Nei confronti diretti con altri strumenti SBOM, questa registrazione più completa ha fatto emergere vulnerabilità che gli altri strumenti non avevano segnalato.

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

I pacchetti ripristinati dalle cache CI restano nella SBOM

Le cache sono il punto in cui la registrazione in fase di build di solito si interrompe: un pacchetto ripristinato da una cache non passa mai da un registry, quindi un proxy da solo non lo vedrebbe. CRACI porta con la cache le evidenze sulle dipendenze, così i pacchetti ripristinati da una cache CI restano nella SBOM del job che li ha ripristinati.

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

Uno stato di completezza per ogni job

Il monitoraggio delle vulnerabilità può verificare solo i componenti elencati nella Sua SBOM. Un pacchetto che manca dalla SBOM è una vulnerabilità per cui nessuno riceverà un avviso. Per questo, invece di presentare ogni SBOM come completa, CRACI indica la completezza di ogni job e di ogni cache: Complete, Complete with connections, Incomplete, Unavailable o Not recorded. Lei sa quali SBOM sono affidabili e quali richiedono una seconda verifica.

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.

Gli ecosistemi e i formati che Lei distribuisce

CRACI registra i pacchetti provenienti da npm, PyPI, RubyGems, Cargo, Go, Nix, OCI, apt, apk e sorgenti Git, oltre ai preset di download di Yocto e OpenEmbedded, e considera i mirror npm e PyPI di JFrog Artifactory come sorgenti note. Il supporto a Maven e Java è in roadmap. Le SBOM si esportano in CycloneDX e SPDX, dipendenze transitive incluse, pronte da condividere con clienti, partner e auditor.

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

Le licenze dichiarate di ogni componente

Ogni pacchetto registrato porta nella SBOM la propria licenza dichiarata. Lei vede quali dipendenze sono soggette a una licenza commerciale o comunque restrittiva prima del rilascio, e le licenze copyleft vengono individuate prima di finire nel Suo prodotto.

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

La provenance tramite l'API

La SBOM è solo una parte di ciò che CRACI registra per ogni job. La REST API pubblica restituisce SBOM, tracce di rete e provenance, tutte registrate dalla stessa build.

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

Monitorata dopo il rilascio

Una SBOM è il modo in cui un'azienda sa che cosa contiene il software che distribuisce, e clienti e autorità di regolamentazione la richiedono sempre più spesso: il Cyber Resilience Act impone ai fabbricanti di redigerne una per i prodotti venduti nell'UE. CRACI continua a rivalutare le SBOM monitorate man mano che vengono pubblicate nuove vulnerabilità, aggrega i risultati di tutte le build e di tutti i repository e supporta VEX. Le SBOM che Lei raccoglie dai Suoi fornitori vengono monitorate insieme alle Sue build.

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

Una SBOM registrata accanto a una scansionata

Gli scanner sono lo strumento giusto per il software che non ha compilato Lei. Per le Sue release, ecco che cosa cambia registrando la build. Uno scanner legge il lockfile o l'output e ricava che cosa vi è entrato. CRACI vede il traffico in ingresso nella build, quindi anche le dipendenze nascoste introdotte da hook di installazione, script di build e immagini base finiscono nella SBOM.

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.
Funzionalità CRACI Strumento SBOM basato su scanner
Come viene prodotto l'elenco dei componenti Registrato dal traffico di pacchetti della build stessa Ricostruito a posteriori dai file
Richiede un lockfile o dipendenze installate No Di solito l'uno o le altre
Pacchetti ripristinati dalle cache CI Le evidenze viaggiano con la cache Solo se i file sono presenti al momento della scansione
Stato di completezza per job Cinque stati, per job e per cache
Collegamento firmato tra artefatto e build Nessuna provenance firmata Con un passaggio di firma separato
Software che non ha compilato Lei Aggiunga invece la SBOM del fornitore
Sistemi CI Oggi GitHub Actions; altri sistemi CI in roadmap Funziona in qualsiasi CI
  • Incluso
  • In parte
  • Non incluso
  • In roadmap

Sta confrontando strumenti specifici? Consulti Strumenti SBOM a confronto per Syft, Trivy, cdxgen, il Microsoft SBOM Tool, Dependency-Track e altri. Per un quadro più ampio, consulti gli strumenti per la sicurezza della software supply chain a confronto.

SBOM basics: SPDX, CycloneDX and OpenVEX

Che cosa registra una SBOM, in cosa differiscono in pratica i formati SPDX e CycloneDX e che cosa aggiunge OpenVEX sul fatto che una vulnerabilità interessi davvero un prodotto.

Petteri Pulkkinen e Erika Marttinen a Kubernetes Community Days Helsinki 2026, da 16:50 a 22:05 di SBOMbastic: Getting Ready for Upcoming EU Cybersecurity Regulation in Software Supply Chains.

Generazione di SBOM: domande frequenti

Che cos'è la generazione di SBOM?

La generazione di SBOM consiste nel produrre una software bill of materials: un elenco leggibile da una macchina dei componenti e delle dipendenze di un software. Si può fare a partire dai file sorgente, durante la build o analizzando un artefatto finito, come un'immagine container. CRACI genera la SBOM durante la build, da ciò che la build ha effettivamente scaricato.

Come genera una SBOM CRACI?

I Suoi job GitHub Actions vengono eseguiti sui runner CRACI. Durante l'esecuzione di ogni job, un proxy che riconosce i pacchetti osserva il suo traffico verso le sorgenti dei pacchetti e registra i pacchetti che scarica, comprese le dipendenze transitive e i pacchetti ripristinati dalle cache CI. Ogni job riceve la propria SBOM con uno stato di completezza.

Devo modificare i miei workflow?

Lei cambia runs-on in craci. CRACI sostituisce il runner, non GitHub Actions, quindi i Suoi workflow e le relative esecuzioni restano in GitHub.

Quali ecosistemi di pacchetti registra CRACI?

npm, PyPI, RubyGems, Cargo, Go, Nix, OCI, apt, apk e sorgenti Git, oltre ai preset di download di Yocto e OpenEmbedded. I mirror npm e PyPI di JFrog Artifactory sono considerati sorgenti note. Il supporto a Maven e Java è in roadmap.

In quali formati posso esportare le SBOM?

CycloneDX e SPDX, comprese le dipendenze transitive e la licenza dichiarata di ogni componente.

Che cosa significa lo stato di completezza?

Complete significa che CRACI ha osservato evidenze complete del job e che ogni cache ripristinata era completa. Complete with connections significa che il job ha usato anche connessioni di rete personalizzate che vale la pena verificare. Incomplete significa che una condizione potrebbe aver lasciato fuori delle dipendenze. Unavailable significa che le evidenze non hanno potuto essere valutate, e Not recorded significa che il job è precedente all'introduzione degli stati di completezza.

CRACI trova le vulnerabilità nella SBOM?

Sì. CRACI continua a rivalutare le SBOM monitorate man mano che vengono pubblicate nuove vulnerabilità, aggrega i risultati di tutte le build e di tutti i repository e supporta VEX. I team di sicurezza esaminano ciò che trova e lo inoltrano ai team responsabili della correzione.

CRACI può generare una SBOM per software che non ho compilato io?

No. CRACI registra le build eseguite sui propri runner. Per il software che acquista, aggiunga la SBOM del fornitore e CRACI la monitora insieme alle Sue build. Per un'immagine di terze parti che non ha compilato Lei, la scelta pratica è uno scanner; veda Strumenti SBOM a confronto.

Veda la SBOM della Sua build

Prenoti una demo, esegua uno dei Suoi workflow GitHub Actions su CRACI e veda che cosa ha effettivamente scaricato

Prenota una demo