Errori SBOM sotto il CRA: 7 correzioni pratiche per i fabbricanti

Lo strumento di generazione SBOM gira, il file supera la validazione, eppure la prossima revisione di prodotto può trovare lacune lo stesso. I fallimenti ricorrenti nella verifica di conformità CRA non riguardano di solito casi limite normativi oscuri. Si tratta di alberi di dipendenze superficiali, inventari costruiti solo dal sorgente, record obsoleti e componenti che gli scanner non riescono ad abbinare a una vulnerabilità. Il Cyber Resilience Act richiede uno SBOM in formato leggibile da un dispositivo automatico, comunemente utilizzato, che copra almeno le dipendenze di primo livello e venga conservato con la documentazione tecnica. Questo articolo tratta i sette divari tra uno SBOM che tecnicamente esiste e uno che può sostenere la gestione delle vulnerabilità. È lo SBOM che un'autorità di vigilanza del mercato si aspetta di vedere.

  • Uno SBOM costruito dai manifest sorgente può non rilevare ciò che viene effettivamente distribuito nell'artefatto
  • I componenti privi di versione esatta, hash e PURL sono difficili da abbinare ai CVE
  • Le dipendenze dirette sono il minimo CRA, non bastano per una gestione utile delle vulnerabilità
  • Uno SBOM generato una sola volta diventa obsoleto con la comparsa di nuove vulnerabilità e versioni del prodotto
  • I componenti interni, proprietari, commerciali e firmware rientrano nell'ambito anch'essi
  • Gli SBOM dei fornitori sono input da riconciliare, non lo SBOM di prodotto finito
  • Un rilascio di prodotto richiede un unico record SBOM autorevole, non frammenti dispersi
7
Errori comuni
trattati in questo articolo
30.6%
SBOM con una dipendenza diretta mancante
JBomAudit, NDSS 2025
11 Sep 2026
Orologio delle segnalazioni
11 Dec 2027
Applicazione integrale CRA
Le lacune SBOM diventano rischio legale

Errori in sintesi

  • Albero sorgente, non artefatto distribuito: generare dall'artefatto o dall'immagine di build per rendere visibili il codice compilato, i pacchetti OS e il firmware.
  • Campi di identità scarsi: usare versioni esatte, hash, PURL dove disponibili e nomi del fornitore per consentire agli scanner di abbinare i CVE.
  • Solo dipendenze dirette: aggiungere la scansione dei lock file e degli artefatti di build per includere nello SBOM le dipendenze indirette e quelle pacchettizzate.
  • File generato una sola volta: rigenerare e archiviare lo SBOM per ogni rilascio, poi mantenere aggiornata la corrispondenza delle vulnerabilità.
  • Codice di prodotto omesso: i componenti interni, proprietari, commerciali e firmware necessitano comunque di identificatori ed evidenze.
  • Copia-incolla dai fornitori: gli SBOM dei fornitori sono input. Riconciliarli con il codice di prima parte e l'artefatto di rilascio finale.
  • Dispersione SBOM: mantenere un unico SBOM di prodotto autorevole per rilascio, così la versione 1.4.2 ha un solo record difendibile.
Dove gli errori SBOM entrano nel ciclo di vita del prodotto Uno SBOM pronto per il CRA viene prodotto dal processo di rilascio e mantenuto utile dopo la distribuzione.
BuildScansionare l'artefatto

Acquisire il codice applicativo, i pacchetti OS, i blob firmware e i file generati.

IdentificareAggiungere identificatori stabili

Usare versioni esatte, hash, nomi del fornitore e PURL dove disponibili.

ConsolidareUnire gli input dei fornitori

Combinare gli SBOM upstream con il codice di prima parte e di integrazione.

ArchiviareMantenere un record per rilascio

Archiviare lo SBOM di prodotto con il rilascio e la documentazione tecnica.

MonitorareAggiornare la corrispondenza CVE

Rieseguire la corrispondenza delle vulnerabilità con la comparsa di nuovi avvisi e segnali di exploit.

Se una qualsiasi fase è manuale o mancante, lo SBOM potrebbe superare la validazione JSON pur non rispondendo alla domanda che un revisore pone effettivamente: quali componenti erano nel prodotto immesso sul mercato?

Cosa conta per la documentazione SBOM

Lo SBOM è una prova di prodotto, non un asset di marketing pubblico
  • Usare un formato comunemente utilizzato e leggibile da un dispositivo automatico.
  • Coprire almeno le dipendenze di primo livello, poi andare più in profondità per una gestione utile delle vulnerabilità.
  • Conservare lo SBOM con la documentazione tecnica e le prove di rilascio.
  • Non presupporre che il CRA imponga un unico formato, un unico tipo di hash o la pubblicazione pubblica.

Quel minimo normativo non equivale al minimo operativo per la gestione delle vulnerabilità. Uno SBOM con sole dipendenze dirette può soddisfare la locuzione sul minimo delle dipendenze ma risultare ancora troppo superficiale per identificare rapidamente i prodotti interessati. BSI TR-03183, le linee guida ENISA, le linee guida SBOM CISA e la pratica corrente degli strumenti vanno letti come benchmark di qualità che aiutano i fabbricanti a rendere operativo l'obbligo del CRA.

Errore 1: lo SBOM descrive l'albero sorgente, non il prodotto distribuito

I manifest sorgente sono comodi, ma non rappresentano il prodotto. Una scansione del sorgente può segnalare in eccesso le dipendenze di sviluppo e non rilevare ciò che compare solo dopo la build, il packaging, la stratificazione dei container, il collegamento statico o l'integrazione firmware. Per un fabbricante, lo SBOM deve rispondere a cosa c'era nel rilascio del prodotto, non solo a cosa era dichiarato in un file di pacchetto.

La differenza pesa di più nei prodotti embedded e containerizzati. Una scansione a livello di linguaggio può non rilevare i pacchetti OS in uno strato base di container. Un'esportazione Yocto o Buildroot può non rilevare firmware del fornitore di chip, bootloader, moduli kernel o blob binari entrati al di fuori del sistema di build. Se quei componenti si trovano nell'artefatto distribuito, appartengono alla documentazione di rilascio anche quando uno scanner automatico di pacchetti non riesce a inferirli.

La soluzione consiste nel generare dall'artefatto o dall'immagine di rilascio, poi confrontare con l'output del sorgente e del lock file. Per i container, scansionare l'immagine finale per digest. Per il firmware, combinare l'output SBOM del sistema di build con l'analisi binaria e i record manuali per i componenti che gli strumenti non riescono a identificare automaticamente.

Errore 2: hash e PURL mancanti rendono i componenti non abbinabili

Uno SBOM privo di versione accurata, hash, fornitore e identificatori di pacchetto è difficile da usare per la corrispondenza delle vulnerabilità. Il file può essere leggibile da un dispositivo automatico, ma uno scanner ha comunque bisogno di un'identità stabile del componente per determinare se un CVE, un avviso OSV, un GitHub Security Advisory o una voce CISA KEV si applica.

Ogni componente deve avere sufficiente identità da sopravvivere alla corrispondenza automatica:

Versione esatta

Evitare «latest», intervalli vaghi e nomi di fork ambigui.

Campo di identità core
Hash crittografico

Collegare il record all'archivio, all'immagine o al binario concreto.

SHA-256 o più forte in pratica
Identificatore PURL

Abbinare dati di pacchetto da registry, OSV e fonti di tipo GHSA.

Usare dove disponibile
Nome del fornitore

Separare componenti con lo stesso nome e codice proprietario.

Utile per ogni componente
Contesto di generazione

Indicare se lo SBOM proviene da sorgente, build, artefatto, sistema distribuito o runtime.

Prova di revisione

Non si tratta solo di igiene. NIST ha annunciato il 15 aprile 2026 che l'arricchimento NVD è ora prioritario per i CVE selezionati perché il volume di vulnerabilità ha superato la capacità di arricchimento completo. Questo rende la corrispondenza basata solo su CPE un piano più debole per le future operazioni sulle vulnerabilità. Usare PURL dove disponibile, mantenere gli hash per gli artefatti distribuiti e non considerare sufficiente il solo nome del componente.

Un errore di formato comune è usare CycloneDX 1.3 o versioni precedenti. Il supporto VEX di base è arrivato in CycloneDX 1.4 e la struttura evidence più ricca per i componenti è arrivata in CycloneDX 1.5. Per la preparazione CRA attuale, puntare a CycloneDX 1.6 o versioni successive, o a un profilo SPDX corrente che gli strumenti possano consumare in modo affidabile. Verificare l'output del generatore prima di presupporre che il formato supporti i campi necessari al processo.

Errore 3: fermarsi alle dipendenze dirette

Le dipendenze dirette sono il minimo CRA. Non bastano per una gestione utile delle vulnerabilità. Una dipendenza transitiva è un componente estratto da un altro componente e può portare la vulnerabilità che conta. Quando un CVE colpisce un pacchetto transitivo non presente nello SBOM, il prodotto può risultare interessato mentre la pipeline di corrispondenza rimane silente.

SBOM solo diretto vs copertura utile delle dipendenze Il minimo normativo riguarda le dipendenze di primo livello. L'obiettivo operativo è una profondità sufficiente ad abbinare le vulnerabilità reali.
Solo diretto
  • Rilascio del prodotto
  • Libreria A elencata
  • Libreria D elencata
  • Libreria B e Libreria C non sono visibili allo scanner
Copertura utile
  • Rilascio del prodotto
  • Libreria A elencata
  • Libreria B e Libreria C collegate sotto la Libreria A
  • Libreria D elencata
Esito della revisione
  • Meno punti ciechi
  • L'ambito è più facile da spiegare
  • Le versioni interessate sono più chiare
  • Le decisioni VEX hanno prove migliori

Uno studio NDSS 2025 con revisione paritaria, JBomAudit, ha rilevato che 7.907 dei 25.882 SBOM Java non hanno dichiarato almeno una dipendenza diretta. La lezione pratica è semplice: se anche le dipendenze dirette mancano spesso, la copertura transitiva richiede verifiche deliberate.

Per colmare questo divario, usare i lock file dove l'ecosistema li prevede, scansionare gli artefatti di build oltre al sorgente e ispezionare i pacchetti che raggruppano o fondono dipendenze. Trattare la copertura transitiva come una pratica di qualità per l'audit, non come un'impostazione secondaria nascosta nel comportamento predefinito di uno scanner.

Errore 4: trattare lo SBOM come documento una tantum

Uno SBOM generato una sola volta e mai aggiornato crea una falsa sensazione di sicurezza. Nuovi CVE vengono pubblicati contro componenti già nel prodotto. Nuove versioni firmware, patch e aggiornamenti dei fornitori cambiano il prodotto. Il CRA si aspetta inoltre che la documentazione tecnica venga aggiornata continuamente dove appropriato durante il periodo di assistenza.

Trigger di aggiornamento comuni:

Nuovo rilascioRigenerare e archiviare lo SBOM di rilascio

Usare l'artefatto software o firmware che si immette sul mercato.

Patch di sicurezzaAggiornare lo SBOM e le prove VEX

La versione del componente o lo stato corretto è cambiato.

Modifica di componenteRigenerare dall'output di build

Il grafico delle dipendenze è cambiato perché un componente è stato aggiunto, rimosso o sostituito.

Aggiornamento del fornitoreRiconciliare gli SBOM del fornitore e del prodotto

L'identità del componente upstream è cambiata: non archiviare il file del fornitore invariato.

Modifica dell'immagine baseRiscansionare l'artefatto distribuito

I pacchetti OS o i file incorporati sono cambiati nell'immagine binaria, nel pacchetto firmware o nell'immagine container.

La CI/CD è il controllo pratico. Ogni rilascio dovrebbe produrre un artefatto SBOM corrente archiviato insieme alla build e collegato alla documentazione tecnica. Le voci manuali dovrebbero esistere solo per i componenti che gli strumenti non riescono a rilevare, e anche quelle voci richiedono revisione quando il prodotto cambia.

L'orologio delle segnalazioni di settembre 2026 premia gli SBOM aggiornati

Dall'11 settembre 2026, la segnalazione prevista dall'articolo 14 si applica alle vulnerabilità attivamente sfruttate e agli incidenti gravi. Per una vulnerabilità attivamente sfruttata, il flusso prevede un avviso preliminare entro 24 ore, una notifica di vulnerabilità entro 72 ore e un rapporto finale entro 14 giorni dalla disponibilità di una misura correttiva o di mitigazione. Uno SBOM obsoleto rallenta la prima decisione di triage.

Errore 5: omettere i componenti interni, proprietari e firmware

Una scorciatoia comune consiste nel documentare solo le dipendenze open source e omettere le librerie interne, i moduli commerciali, il firmware proprietario o i blob dei fornitori. Non è uno SBOM di prodotto. Se un componente è distribuito nel prodotto, rientra nell'ambito, anche quando non ha una pagina di registry pubblica.

I componenti interni spesso non hanno PURL di ecosistema né record di pacchetto pubblico. Usare un identificatore interno, la propria organizzazione come fornitore dove appropriato, la versione esatta o l'ID di build e l'hash dell'artefatto binario. Per i componenti commerciali, conservare il nome del fornitore, la versione, le prove di licenza e i riferimenti al contratto nella documentazione tecnica.

Per i prodotti hardware-software, il firmware è dove questo diventa visibile. Moduli Wi-Fi, modem, elementi sicuri, bootloader, binari di ambiente di esecuzione trusted e moduli kernel fuori albero possono portare vulnerabilità pur rimanendo invisibili agli scanner di pacchetti di linguaggio. Usare gli SBOM dei fornitori dove disponibili, aggiungere record manuali dove non lo sono e usare l'analisi binaria come verifica. Per il lato hardware del pacchetto di prove, vedere HBOM sotto il CRA.

Errore 6: affidarsi agli SBOM dei fornitori come artefatto finito

Gli SBOM dei fornitori sono input validi. Non sono lo SBOM di prodotto finito. Il fabbricante immette il prodotto integrato sul mercato UE. Lo SBOM di prodotto deve combinare i componenti dei fornitori, il codice di prima parte, gli output di build, il firmware, il codice di collegamento e le relazioni di dipendenza specifiche del prodotto.

Il modo in cui questo fallisce è facile da non notare: un fornitore consegna un file CycloneDX, un altro consegna SPDX, un terzo consegna un inventario PDF e la cartella del prodotto finale contiene link a tutti e tre. Questa è documentazione dei fornitori, non un unico record di prodotto. Un revisore ha comunque bisogno di sapere quali componenti erano nella versione 1.4.2 del prodotto.

Riconciliare invece di copiare. Unire gli SBOM dei fornitori nello SBOM di prodotto, normalizzare i campi di identità, registrare i noti ignoti e conservare gli SBOM upstream come prove a supporto. Se uno SBOM del fornitore manca di PURL, hash, licenza o versione esatta, documentare la lacuna e colmare ciò che si può prima del rilascio. Un URL a un file upstream non equivale a uno SBOM di prodotto integrato.

Errore 7: molti SBOM, nessun unico record di prodotto

La dispersione SBOM è la fase che segue quando i team adottano gli strumenti. C'è uno SBOM dell'app, uno SBOM del container, uno SBOM del firmware, diversi SBOM dei fornitori e un foglio di calcolo gestito da un product manager. Nessuno di essi è la risposta autorevole per il rilascio del prodotto immesso sul mercato.

Questo crea rischio di audit e operativo. Quando compare una nuova vulnerabilità attivamente sfruttata, il team deve cercare tra i frammenti prima di poter affermare se il prodotto è interessato. Quando un'autorità fa una richiesta motivata, il pacchetto di prove non dovrebbe dipendere dal fatto che qualcuno ricordi quale cartella contiene l'ultimo merge.

Usare un unico SBOM di prodotto autorevole per rilascio, con SBOM di componente a supporto conservati al di sotto. Conservarlo per almeno 10 anni dopo che il prodotto è stato immesso sul mercato, o per il periodo di assistenza, a seconda di quale sia più lungo. Archiviarlo dove il rilascio, il monitoraggio delle vulnerabilità, le decisioni VEX e la documentazione tecnica possono tutti fare riferimento alla stessa versione.

Domande frequenti

Il mio scanner mostra zero vulnerabilità. Lo SBOM è sufficiente?

Non di per sé. Una scansione pulita delle vulnerabilità dimostra solo che lo scanner non ha abbinato vulnerabilità note ai componenti che riusciva a vedere. Se lo SBOM è stato generato solo dai manifest sorgente, non rileva blob firmware, manca di PURL o hash, o omette componenti dei fornitori, il risultato pulito può essere un problema di copertura piuttosto che un risultato di sicurezza.

Dobbiamo pubblicare lo SBOM o consegnarlo a ogni cliente?

No. Il CRA non crea un obbligo generale di pubblicare lo SBOM. Conservarlo nella documentazione tecnica ed essere pronti a fornirlo a un'autorità di vigilanza del mercato su richiesta motivata quando necessario per verificare la conformità. Si può scegliere di condividere contrattualmente le informazioni SBOM con i clienti, ma questo è diverso da un obbligo generale di pubblicazione del CRA.

Qual è il minimo normativo per la copertura delle dipendenze?

Il testo del CRA indica che lo SBOM deve coprire almeno le dipendenze di primo livello. È il minimo. Per una gestione reale delle vulnerabilità, la copertura solo diretta è debole perché molte vulnerabilità si trovano in componenti transitivi, raggruppati o rimpacchettati. Costruire l'obiettivo operativo attorno all'artefatto distribuito e alle relazioni di dipendenza, non solo alla locuzione del minimo normativo.

Generiamo dal sorgente. È sufficiente?

Di solito no. Gli SBOM di sorgente sono utili per la revisione dello sviluppo, ma le prove di prodotto devono riflettere ciò che è stato distribuito. Generare dall'artefatto o dall'immagine di build, confrontare con l'output di lock file e sorgente e aggiungere record manuali per i componenti che gli strumenti automatici non riescono a inferire.

Il nostro fornitore non ci consegna uno SBOM completo. Cosa fare?

Cominciare dal contratto e dal processo di acquisto. Se il fornitore non riesce comunque a fornire dati completi, registrare i noti ignoti, raccogliere i campi verificabili autonomamente, aggiungere prove di hash e versione per i binari consegnati e documentare la lacuna nel fascicolo tecnico. Non omettere silenziosamente il componente dallo SBOM di prodotto.

Cosa fare ora

  1. Scegliere un rilascio di prodotto rappresentativo e confrontare lo SBOM del sorgente con lo SBOM dell'artefatto di build o dell'immagine container. Analizzare ogni componente che compare in uno ma non nell'altro.
  2. Verificare prima i campi di identità: versione esatta, fornitore, hash e PURL dove disponibili. Un componente che non può essere identificato in modo affidabile non può essere abbinato in modo affidabile.
  3. Rigenerare lo SBOM nella CI/CD per ogni rilascio e archiviarlo con le prove di rilascio. Vedere CycloneDX vs SPDX per la scelta del formato e il confronto degli strumenti.
  4. Usare le categorie di campo BSI TR-03183 come benchmark di qualità, non come sostituto della lettura dell'obbligo CRA stesso.
  5. Collegare gli SBOM di rilascio al monitoraggio delle vulnerabilità prima dell'11 settembre 2026. Se si preferisce non costruire questa pipeline da zero, CRA Evidence gestisce l'acquisizione CycloneDX/SPDX, il punteggio di qualità SBOM e il monitoraggio delle vulnerabilità su tutte le versioni del prodotto.