SBOM

Esempio di SBOM commentato riga per riga, per un prodotto con firmware

Una SBOM (Software Bill of Materials, la distinta base del software) è l'elenco dei componenti software contenuti in un prodotto. Il Cyber Resilience Act la rende obbligatoria nella documentazione tecnica, ma non dice che aspetto deve avere. Qui ne costruiamo una, semplificata, per un controllore immaginario, e la leggiamo riga per riga: che cosa c'è, perché c'è, quali errori si vedono più spesso.

Aggiornato al 14 ottobre 2026 · A cura di Algor S.r.l. · Lettura: 7 minuti · Non costituisce consulenza legale.

Che cos'è, in tre frasi

Una SBOM elenca i componenti software di un prodotto (librerie, sistema operativo, interpreti, driver, moduli di terzi) con nome, versione e fornitore di ciascuno, e dice quali componenti dipendono da quali. È scritta in un formato leggibile da un sistema automatico, così che si possa confrontare con le banche dati delle vulnerabilità senza lavoro manuale. Vale per una versione precisa del prodotto: a ogni nuova versione corrisponde una nuova SBOM.

Il regolamento chiede ai fabbricanti di «redigere una distinta base del software in un formato di uso comune e leggibile da un dispositivo automatico, che includa almeno le dipendenze di primo livello del prodotto» (Allegato I, Parte II, punto 1). Non impone un formato: nella pratica si usano CycloneDX o SPDX, entrambi aperti.

Il prodotto dell'esempio

Un controllore industriale immaginario, «CTRL-14B», firmware versione 3.2.0, con un sistema operativo embedded, un piccolo server web per la configurazione, uno stack di protocollo industriale fornito da terzi e alcune librerie di uso comune. La SBOM reale avrebbe oltre cento componenti; qui ne mostriamo sei, più l'intestazione.

L'intestazione: di che cosa parla questa SBOM

CampoValore nell'esempioPerché conta
Formato e versioneCycloneDX 1.6Dice al software che la legge come interpretarla.
Numero di serieurn:uuid:… (identificativo univoco)Distingue questa SBOM da ogni altra, anche dello stesso prodotto.
Data di creazione2026-10-07T09:12:00ZSenza data non si sa se la SBOM è aggiornata.
Autore / strumentoNome del fabbricante; strumento di generazione e versioneIndica da dove viene: una SBOM generata dalla build vale più di una compilata a mano.
Prodotto descrittoCTRL-14B, firmware 3.2.0, fornitore: il fabbricanteLa SBOM vale per questa versione, non per «il CTRL-14B» in generale.

Errore frequente: SBOM senza data o senza versione del prodotto. Si scopre dopo mesi che nessuno sa più a quale firmware corrisponde.

I componenti, riga per riga

ComponenteVersioneFornitoreIdentificativoLicenzaImpronta
Sistema operativo embedded (kernel)6.1.112progetto open sourcepkg:generic/linux@6.1.112GPL-2.0sha256:…
Libreria di cifratura3.0.16progetto open sourcepkg:generic/openssl@3.0.16Apache-2.0sha256:…
Server web integrato1.24.0progetto open sourcepkg:generic/nginx@1.24.0BSD-2-Clausesha256:…
Libreria di compressione1.3.1progetto open sourcepkg:generic/zlib@1.3.1Zlibsha256:…
Interprete di script5.4.6progetto open sourcepkg:generic/lua@5.4.6MITsha256:…
Stack protocollo industriale2.4.1fornitore commercialepkg:generic/fornitore/stack-ind@2.4.1commercialesha256:…

Leggiamo le colonne.

  • Nome e versione. Sono il minimo indispensabile. Una vulnerabilità pubblica dice «la libreria X dalla versione 3.0.0 alla 3.0.15 è vulnerabile»: senza la versione esatta non si può rispondere «ci riguarda?».
  • Fornitore. Chi mantiene il componente e dove escono i suoi avvisi di sicurezza. Per i componenti commerciali è anche la persona da cui pretendere a sua volta una SBOM.
  • Identificativo. Il «purl» (package URL) è un codice standard che permette alle banche dati di riconoscere il componente senza ambiguità. «OpenSSL», «openssl» e «libssl» per un essere umano sono la stessa cosa; per un programma no. Senza identificativi il confronto automatico fallisce in silenzio.
  • Licenza. Non serve alla sicurezza ma alla conformità legale del prodotto; costa poco includerla e i clienti la chiedono.
  • Impronta (hash). Una firma del file, che permette di verificare che il componente installato sia effettivamente quello dichiarato. La linea guida tedesca BSI TR-03183, riferimento tecnico molto usato dai clienti europei, la chiede tra i campi richiesti per ogni componente, insieme ad autore e data della SBOM, nome, versione, fornitore e dipendenze.

Le dipendenze tra componenti

ComponenteDipende daLivello
CTRL-14B firmware 3.2.0kernel, libreria di cifratura, server web, interprete di script, stack protocollo industrialenessuno
Server web integratolibreria di compressione, libreria di cifraturaprimo livello
Libreria di compressione(nessuna)secondo livello

Il regolamento chiede «almeno le dipendenze di primo livello»: i componenti che il prodotto usa direttamente. La libreria di compressione, nell'esempio, entra attraverso il server web: è di secondo livello. Qui sta una delle lezioni più importanti: molte vulnerabilità stanno nei componenti indiretti. Una SBOM che si ferma al primo livello soddisfa la lettera del regolamento ma lascia scoperta una parte del rischio. Uno studio del 2026 su circa 77.000 SBOM in circolazione ha trovato che più della metà non dichiara alcuna relazione tra i componenti.

Errore frequente: SBOM «piatta», con l'elenco dei componenti ma senza le relazioni. Si vede che cosa c'è, non da dove viene né che cosa cambia se si aggiorna un pezzo.

Da dove viene una SBOM

Ci sono tre modi di produrla, con qualità molto diverse.

  1. Dalla build. Gli strumenti che compilano il firmware (per esempio quelli dei sistemi Yocto o Buildroot per i dispositivi embedded) sanno esattamente che cosa hanno incluso: è la SBOM più fedele.
  2. Dall'analisi del firmware compilato. Strumenti che «aprono» il file binario e riconoscono i componenti dalle loro tracce. Utile quando non si hanno i sorgenti, per esempio per un componente di terzi; meno preciso, con il rischio di componenti non riconosciuti o versioni sbagliate.
  3. A mano. Una tabella compilata dall'ufficio tecnico. È meglio di nulla, ma invecchia subito e non copre i componenti indiretti.

Studi recenti mostrano che strumenti diversi, sullo stesso software, producono elenchi coerenti tra loro solo in una piccola minoranza di casi. Per questo il punto non è «avere una SBOM», ma sapere quanto è buona: completezza, versioni, identificativi, data, provenienza. Assiduo chiama questo giudizio «maturità della SBOM» (Iniziale, Intermedia, Avanzata o Da verificare) ed è una delle cose che il configuratore stima già dalle prime risposte.

Come si legge senza strumenti

Un file CycloneDX o SPDX è testo: si apre con un editor qualsiasi. Cinque controlli che chiunque può fare in dieci minuti, per esempio su una SBOM ricevuta da un fornitore:

  1. C'è la data, ed è recente rispetto alla versione del firmware?
  2. Ogni componente ha una versione precisa, non «3.x» o vuota?
  3. Ci sono identificativi (purl o simili) e non solo nomi?
  4. Il numero di componenti è plausibile? Un firmware con sistema operativo e server web non ha dieci componenti: ne ha decine o centinaia.
  5. Ci sono le dipendenze, o è un elenco piatto?

Dalla generazione all'uso

Una SBOM è utile solo se qualcuno la confronta ogni giorno con le vulnerabilità che escono, valuta quelle che toccano davvero il prodotto, decide e documenta. È il passaggio dal «generare» all'«usare», dove la maggior parte delle aziende si ferma: in un'indagine europea del 2026 il 74% ha automatizzato la generazione delle SBOM, ma solo il 9% ha una gestione matura (ENISA, 2026).

Domande frequenti

Devo pubblicare la SBOM?

No. Fa parte della documentazione tecnica e si consegna all'autorità su richiesta motivata (considerando 77; Allegato VII). Darla ai clienti è una scelta, spesso richiesta dai contratti.

CycloneDX o SPDX?

Il regolamento non sceglie. CycloneDX è oggi il più usato nei contesti di sicurezza e dai fabbricanti europei; SPDX è nato per le licenze ed è altrettanto valido. Conta più la qualità dei dati del formato.

Il mio fornitore mi dà un PDF con l'elenco dei componenti. Va bene?

È un inizio, ma non è «leggibile da un dispositivo automatico» e non si può confrontare con le banche dati senza ricopiarlo. Chiedi un file CycloneDX o SPDX, con versioni e identificativi.

Da dove cominciare

Non serve avere già una SBOM per partire. Il configuratore di Assiduo chiede a che punto sei (formato, copertura, aggiornamento) e, senza caricare file, ti dice se il tuo perimetro rientra nel servizio o se è meglio parlarne. Se non riesci a produrre la SBOM, possiamo aiutarti a crearla.

Configura il tuo presidio

Fonti: regolamento (UE) 2024/2847, Allegato I Parte II punto 1, Allegato VII, considerando 77, articolo 13 paragrafo 24; BSI TR-03183-2; CycloneDX (ECMA-424) e SPDX (ISO/IEC 5962); ENISA, «SBOM Adoption State of Play 2026»; studi 2026 sulla qualità delle SBOM in circolazione. Leggi anche: la guida alla SBOM.