Confronto
Una SBOM generata dall'IA è un'ipotesi sulla Sua build. Le autorità chiedono un record.
Chiedere a un modello di scrivere una SBOM è rapido, e il risultato sembra corretto. Non è però lo stesso artefatto di una SBOM registrata durante la build, e la differenza conta ai sensi del CRA e degli elementi minimi CISA del 2026.
Aggiornato il
Perché i team ci provano
L'attrattiva è reale. Si incolla un repository o un lockfile in un assistente di programmazione, si chiede un CycloneDX, e in pochi secondi torna un documento ben formato. Può persino compilare campi che gli scanner lasciano di solito vuoti. L'esempio tipico è il campo supplier: la maggior parte dei generatori non ha una fonte per questo dato, quindi resta vuoto. Un modello a cui si chiede un documento completo può scrivere qualcosa in ogni campo.
Quest'ultimo punto è il problema in miniatura. Uno scanner che non conosce il supplier lascia il campo vuoto. Un modello che non lo conosce può comunque produrre una risposta plausibile. Il documento sembra più completo ed è meno affidabile.
Che cosa vede davvero il modello
Un modello che genera una SBOM lavora sul testo che ha davanti: manifest, lockfile, magari un Dockerfile. Non osserva la build. Quindi non può vedere:
- quali versioni ha risolto il package manager quando un repository non include alcun lockfile,
- i pacchetti ripristinati da una cache CI,
- strumenti, pacchetti del sistema operativo e binari che uno step di build scarica direttamente,
- che cosa è entrato in un binario compilato distribuito insieme a un manifest quasi vuoto.
Due repository mostrano quanto possano essere scarni i file. expressjs/express 5.2.1 non include alcun
lockfile, quindi il suo package.json elenca le dipendenze come intervalli di versioni e le versioni
effettive vengono decise al momento dell'installazione. Il repository anthropics/claude-code alla v2.1.259
non ha alcun manifest di dipendenze né lockfile, e il suo pacchetto npm pubblicato dichiara zero dipendenze di runtime
pur includendo un binario nativo precompilato. Uno scanner deterministico puntato su quel repository non ha nulla da
leggere che descriva il binario. Un modello che riceve gli stessi file ha la stessa mancanza di informazioni, e più
libertà di colmare la lacuna.
L'allucinazione è un tipo di errore documentato
I modelli linguistici citano pacchetti che non esistono. Il caso meglio misurato riguarda la generazione di codice più che la scrittura di SBOM, ma l'errore che mette in luce vale altrettanto per un elenco di componenti. Uno studio di USENIX Security 2025 ha generato 576.000 campioni di codice con 16 modelli e ha rilevato un tasso medio di pacchetti inventati di almeno il 5,2% per i modelli commerciali e del 21,7% per i modelli open source, con 205.474 nomi unici di pacchetti inventati. La stessa documentazione di GitHub per Copilot Autofix avverte che lo strumento può suggerire dipendenze inventate, pubblicate con nomi statisticamente probabili.
I modelli inoltre non danno due volte la stessa risposta. La documentazione di Anthropic afferma che, anche con la temperatura impostata a 0, i risultati non saranno del tutto deterministici e input identici possono produrre output diversi tra una chiamata API e l'altra. Due SBOM generate dallo stesso commit possono differire, e nessuna delle due dice quale sia quella giusta.
In una SBOM, una voce inventata non è un innocuo refuso. Un pacchetto che non esiste, o la versione sbagliata di uno che esiste, indirizza la ricerca delle vulnerabilità nel posto sbagliato, e il risultato torna sicuro di sé e sbagliato.
Che cosa si aspettano gli standard da una SBOM
Elementi minimi NTIA (2021)
La baseline NTIA ha definito sette campi di dati: nome del supplier, nome del componente, versione del componente, altri identificatori univoci, relazione di dipendenza, autore dei dati SBOM e timestamp. Li ha affiancati al supporto per l'automazione e a un insieme di pratiche e processi. Ogni campo descrive un fatto sul software, non un'opinione su di esso.
Elementi minimi CISA 2026
Il 29 luglio 2026, CISA, NSA, FBI e partner internazionali hanno pubblicato elementi minimi aggiornati che sostituiscono la baseline del 2021. Diverse aggiunte sono difficili da soddisfare senza osservare la build:
- SBOM Generation Context: "the relative software lifecycle phase and data available at the time the SBOM author generated the SBOM", con "before build", "build" e "after build" come esempi. Un modello che legge un repository si trova, al massimo, in "before build".
- Component Hash Value: "the output generated from applying a cryptographic hash algorithm to an executable component artifact". Se l'autore non dispone dell'artefatto, "the SBOM author should indicate the value is unknown". Un modello che non ha mai toccato l'artefatto non può produrre un hash, solo un testo che gli somiglia.
- SBOM Tool Name and Version: lo strumento usato per generare la SBOM deve essere indicato.
- Coverage: "An SBOM should include information for all components that make up the target software, including transitive dependencies. There is no minimum depth."
- Identificazione esplicita delle informazioni ignote: l'autore "should explicitly state whether the information is unknown". Un valore inventato è l'esatto contrario.
Il Cyber Resilience Act dell'UE
Il CRA fa della SBOM un obbligo di legge per i fabbricanti di prodotti con elementi digitali. L'allegato I, parte II, impone loro di individuare e documentare le vulnerabilità e i componenti contenuti nei prodotti con elementi digitali, anche redigendo una distinta base del software in un formato di uso comune e leggibile da dispositivo automatico, che comprenda almeno le dipendenze di primo livello dei prodotti. L'allegato VII colloca la SBOM nella documentazione tecnica, e un'autorità di vigilanza del mercato può richiederla per verificare la conformità ai requisiti essenziali.
Nessuno di questi testi vieta gli strumenti di IA. Ciò che chiedono sono dati che descrivano il prodotto reale e dichiarazioni oneste su ciò che è ignoto. Una SBOM scritta per deduzione fatica su entrambi i fronti.
| Funzionalità | CRACI | SBOM generata dall'IA |
|---|---|---|
| Osserva la build | Traffico dei pacchetti registrato durante il job, più le cache CI | Lavora sui file e sul testo che ha ricevuto |
| Contesto di generazione | Build (registrata durante l'esecuzione del job) | Al massimo prima della build: il modello non ha mai visto la build |
| Versioni risolte | Ciò che l'installazione ha effettivamente scaricato | Da un lockfile, o dedotte da un intervallo |
| Informazioni ignote dichiarate | Cinque stati di completezza per job e per cache | Lacune e invenzioni sembrano voci valide |
| Stesso input, stesso output | Sempre lo stesso record | L'output può variare da un'esecuzione all'altra |
| Funziona senza eseguire una build | Registra le build sui runner CRACI | Pochi secondi, da file incollati |
| Funziona fuori da GitHub Actions | Oggi GitHub Actions; GitLab CI e Jenkins in roadmap | Qualsiasi repository o lockfile |
- Incluso
- In parte
- Non incluso
- In roadmap
Come CRACI produce la SBOM
CRACI esegue i Suoi job GitHub Actions sui propri runner. Lei cambia runs-on in craci, e le
esecuzioni continuano a comparire in GitHub. Durante l'esecuzione del job, un proxy che riconosce i pacchetti osserva il
traffico verso le sorgenti di pacchetti, quindi la SBOM registra ciò che la build ha effettivamente scaricato, comprese
le dipendenze transitive. Le evidenze sulle dipendenze viaggiano con le cache CI, così un pacchetto ripristinato da una
cache resta nel record.
- Ecosistemi: sorgenti npm, PyPI, RubyGems, Cargo, Go, Nix, OCI, apt, apk e Git, oltre ai preset di download.
- Completezza: ogni job e cache è contrassegnato come Complete, Complete with connections, Incomplete, Unavailable o Not recorded, quindi le informazioni ignote vengono dichiarate anziché colmate.
- Formati: CycloneDX e SPDX, con i metadati delle licenze dichiarate inclusi nell'esportazione.
- Provenance: l'API restituisce SBOM, tracce di rete e provenance.
CRACI automatizza una parte significativa della visibilità e delle evidenze sulla supply chain di cui ha bisogno un più ampio processo di conformità al CRA. Da solo non rende conforme un prodotto. La generazione di SBOM in fase di build approfondisce i dettagli, e la nostra panoramica sul CRA ne illustra le scadenze.
Dove l'IA aiuta davvero con le SBOM
Una volta ottenuta una SBOM registrata, un modello è bravo a lavorarci: riassumere quali componenti comportano rischi, spiegare un advisory in linguaggio semplice o preparare la documentazione relativa perché una persona la riveda. La regola è semplice. Lasci che sia la build a produrre il record, e che il modello lo legga.
Veda la SBOM che la Sua build produce davvero
Prenoti una demo: registreremo una SBOM per una delle Sue build, con il suo stato di completezza e la provenance.
Prenota una demo