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