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

Confronto

Lei scansiona già le Sue dipendenze. Ecco che cosa uno scanner non può vedere.

Gli strumenti SCA e i generatori di SBOM meritano di essere usati. Condividono una scelta di progettazione: ricostruiscono a posteriori l'elenco dei componenti dai file. CRACI lo registra durante l'esecuzione della build.

Aggiornato il

Che cosa fa bene il Suo stack attuale

Se ha configurato SCA e generazione di SBOM, ha già svolto il lavoro organizzativo più difficile: le dipendenze sono tracciate, gli advisory raggiungono gli sviluppatori e c'è un file da consegnare quando qualcuno lo chiede. Lo mantenga.

  • Il dependency graph di GitHub e Dependabot sono attivi per impostazione predefinita per molti team. GitHub descrive il dependency graph come un riepilogo dei file manifest e lock archiviati in un repository e di tutte le dipendenze inviate per il repository tramite la dependency submission API. Gli avvisi di Dependabot si basano su di esso e La avvisano quando viene pubblicato un nuovo advisory o quando il Suo dependency graph cambia.
  • La SCA commerciale, come Snyk, genera anche SBOM. Il suo comando snyk sbom legge i file manifest e i relativi lockfile, ed emette CycloneDX o SPDX. A settembre 2026, Snyk lo documenta come disponibile solo per i clienti con piani Snyk Enterprise.
  • I generatori open source come Syft, Trivy e cdxgen sono gratuiti, veloci e facili da aggiungere alla CI. Syft si descrive come uno strumento per generare una Software Bill of Materials (SBOM) da immagini container e filesystem.

Questi strumenti danno il meglio nel feedback rapido su una pull request, nell'ampia copertura degli ecosistemi e in un flusso di remediation che gli sviluppatori conoscono già. Oggi CRACI non sostituisce tutto questo. Il suo tracciamento delle vulnerabilità aggrega i risultati tra build e repository e rivaluta le SBOM monitorate quando compaiono nuove vulnerabilità. I team di sicurezza possono esaminare i risultati e inviarli al team giusto. I policy gate possono bloccare una build; i webhook per le vulnerabilità sono in roadmap.

Scanner e registratore

Tutti gli strumenti qui sopra sono scanner. Lei li punta su un albero di sorgenti, un lockfile o un'immagine container, e loro ricavano che cosa è entrato. Funziona quando i file raccontano tutta la storia. Diventa più difficile quando non lo fanno:

  • Il repository non ha un lockfile, quindi le versioni vengono decise al momento dell'installazione.
  • La build ripristina pacchetti da una cache CI che nessun manifest menziona.
  • Uno step di build scarica direttamente uno strumento, un pacchetto del sistema operativo o un binario.
  • Un hook di installazione npm o uno script di build Rust scarica altro codice durante l'installazione, la via usata dal worm Shai-Hulud.
  • Una build di container scarica un'immagine base e i suoi layer di sistema operativo, che nessun lockfile di linguaggio elenca.
  • Ciò che Lei distribuisce è un binario compilato, e il manifest accanto a esso non elenca quasi nulla.

CRACI è un registratore: vede il traffico, gli scanner no. Esegue la build sul proprio runner compatibile con GitHub Actions, e un proxy che riconosce i pacchetti osserva il traffico verso le sorgenti dei pacchetti durante l'esecuzione del job, così queste dipendenze nascoste finiscono nella SBOM. I pacchetti ripristinati da una cache portano con sé le proprie evidenze. Non esiste un comando craci scan ./dir, perché scansionare una directory a posteriori è proprio il passaggio che CRACI è nato per evitare.

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.

Da che cosa dipende una scansione

L'output di uno scanner dipende dallo strumento e da ciò su cui viene puntato. Syft, Trivy, cdxgen, il Microsoft SBOM Tool, l'esportazione del dependency graph di GitHub e la Socket CLI ricavano ciascuno l'elenco da ciò che riescono a leggere. Gli schemi qui sotto derivano dal funzionamento di questi strumenti così come è documentato.

Nessun componente viene trovato da tutti gli strumenti

Ogni generatore decide autonomamente che cosa conta come componente e di quali file fidarsi, quindi lo stesso checkout dà a ciascuno un elenco diverso. L'esportazione del dependency graph di GitHub funziona ancora in un altro modo: è costruita a partire da ciò che GitHub sa del repository invece che dai file letti da uno scanner, e legge il branch predefinito invece di un commit fissato.

Niente lockfile, niente dipendenze

Express 5.2.1 non include alcun lockfile nel repository. Puntato su un checkout pulito, un generatore che risolve le dipendenze da lockfile o da un albero installato non ha davanti a sé né gli uni né l'altro, quindi nessuna delle dipendenze npm dichiarate in package.json arriva nel documento. Nessuno strumento qui è difettoso. La variabile che decide se la SBOM contiene o meno delle dipendenze non è lo strumento. È se qualcuno ha eseguito prima un'installazione.

Un flag cambia la risposta

La scansione predefinita delle directory di Syft riporta ciò che un progetto dichiara, non ciò che è installato su disco. Su un checkout installato della stessa release di express, un solo flag del cataloger decide se i pacchetti npm installati compaiono o meno nell'elenco. Stesso strumento, stessa versione, stesso albero.

Il prodotto è un binario

Il repository anthropics/claude-code alla v2.1.259 non ha alcun manifest di dipendenze né lockfile di alcun tipo. Il suo pacchetto npm pubblicato dichiara zero dipendenze di runtime e incapsula un binario nativo precompilato tramite otto pacchetti di piattaforma. @openai/codex 0.149.1 ha la stessa struttura. Un lettore di manifest non ha quasi nulla da descrivere, mentre il programma che viene eseguito è un binario compilato, quindi ciò che ogni strumento restituisce dice di più sullo strumento che sul progetto.

Stesso pacchetto, versioni diverse

Quando due strumenti trovano la stessa cosa, non sempre concordano su che cosa sia. Uno può fissare una GitHub Action a uno SHA di commit, mentre un altro riporta un tag di release. Una ricerca di vulnerabilità basata sulla versione sbagliata restituisce con sicurezza una risposta sbagliata.

Funzionalità CRACI SBOM generata da uno scanner
Registrato durante l'esecuzione della build Traffico del job verso le sorgenti dei pacchetti, più le evidenze delle cache CI Ricostruito a posteriori da un albero, un lockfile o un'immagine
Repository senza lockfile Registra le versioni effettivamente risolte dall'installazione Dipende dallo strumento e da un'installazione precedente
Completezza Cinque stati per job e per cache Un componente mancante e uno assente appaiono uguali, a meno che lo strumento non registri le lacune
Monitoraggio dei nuovi advisory SBOM monitorate rivalutate di continuo Ad esempio gli avvisi di Dependabot
Feedback sulle pull request prima del merge Oggi non è un obiettivo Un punto di forza fondamentale
Funziona fuori da GitHub Actions Oggi GitHub Actions; GitLab CI e Jenkins in roadmap Ovunque si possa eseguire una CLI o collegare un'app
Opzioni open source gratuite Nessun piano gratuito Syft, Trivy e cdxgen
  • Incluso
  • In parte
  • Non incluso
  • In roadmap

Dove si colloca CRACI accanto alla Sua SCA

Mantenga la Sua SCA sulle pull request. È il posto giusto per intercettare una versione vulnerabile prima del merge. Aggiunga CRACI dove la domanda riguarda la build e non il diff:

  • Che cosa conteneva davvero questa release? La SBOM registrata copre npm, PyPI, RubyGems, Cargo, Go, Nix, OCI, apt, apk e sorgenti Git, oltre ai preset di download, comprese le dipendenze transitive. Funzionano anche i mirror JFrog Artifactory per npm e PyPI.
  • Possiamo fidarci dell'elenco? Ogni job e cache ha uno stato di completezza, quindi una registrazione incompleta è visibile invece di restare silenziosamente scarna.
  • Un nuovo advisory ci riguarda? Le SBOM monitorate vengono rivalutate quando vengono pubblicate nuove vulnerabilità, e i risultati sono aggregati tra build e repository.

La SBOM si scarica in CycloneDX tramite la REST API pubblica, insieme alla traccia di rete e alla provenance del job, quindi può alimentare qualsiasi strumento che legga CycloneDX, compresa la SCA che già utilizza. La configurazione è una riga nel workflow: cambi runs-on in craci. Oggi la CI supportata è GitHub Actions; GitLab CI, Jenkins e altri sistemi CI sono in roadmap.

Un inventario di ciò che è distribuito e dove

La vista inventario di CRACI mostra esattamente quali versioni del software sono distribuite in quali prodotti, a livello globale. Quando arriva una nuova vulnerabilità, può vedere quali prodotti eseguono la versione interessata invece di ricostruirlo da note di rilascio e fogli di calcolo.

Scopra di più sulla generazione di SBOM in fase di build e sul tracciamento delle vulnerabilità.

Metta una SBOM registrata accanto a quella scansionata

Prenoti una demo: eseguiremo una delle Sue build su CRACI e confronteremo il risultato con la SBOM prodotta dai Suoi strumenti attuali.

Prenota una demo