Se sviluppi software per il mercato europeo, probabilmente qualcuno ti ha già chiesto una distinta base del software. Il Regolamento sulla ciberresilienza impone ai fabbricanti di redigerne una e di conservarla nella documentazione tecnica, e i tuoi clienti la chiedono sempre più spesso molto prima di qualsiasi autorità. Quando il tuo prodotto integra una libreria di componenti, quella domanda arriva a noi.
Da questa release, ogni setup di sgcWebSockets risponde. L'installer scrive una distinta base CycloneDX nella cartella di installazione con il nome sbom.cdx.json, elencando i componenti di primo livello su cui è costruita la libreria, con le rispettive versioni e licenze.
Generato dall'installer, non mantenuto a mano
La parte interessante non è il file, è da dove proviene. Una distinta base aggiornata a mano diventa obsoleta, silenziosamente, e un documento di conformità che riporta una versione che non distribuisci più è peggio che non avere alcun documento.
Perciò non viene mantenuto a mano. Lo script dell'installer esegue un generatore in fase di build, e quel generatore legge ogni versione dal file che effettivamente la possiede: la versione del prodotto da history.txt, Indy da IdVers.inc, zlib da zlib.h, OpenSSL dalle unit di linking statico. Se uno di questi valori non può essere letto, il generatore si ferma con un errore e la build dell'installer fallisce. Non tira mai a indovinare, e non ripiega mai su un valore digitato da qualcuno una volta sola.
L'effetto pratico è che l'SBOM non può divergere. Aggiorna zlib e il prossimo installer che compili lo dirà, senza che nessuno debba ricordarsene.
Descrive la tua edizione, non un prodotto generico
Questa è la parte che più probabilmente ti riguarda. La distinta base non è uguale per ogni edizione, perché le edizioni non contengono lo stesso codice di terze parti.
Enterprise e All-Access compilano l'Indy personalizzato distribuito con sgcWebSockets, e quel fork porta con sé la propria zlib. Core, Standard e Professional compilano invece con l'Indy fornito dalla tua installazione di Delphi o C++ Builder, che non modifichiamo né ridistribuiamo. Per quelle edizioni non possiamo onestamente dichiarare alcuna versione di Indy, perché la versione è quella che fornisce il tuo IDE.
Un unico SBOM generico sarebbe quindi errato per la maggior parte delle installazioni. L'installer genera invece il documento per l'edizione che sta impacchettando, così il file che ricevi descrive ciò che hai davvero.
| Edizione | Indy | zlib |
|---|---|---|
| Core, Standard, Professional | fornito dal tuo IDE, non ridistribuito da noi | arriva al prodotto attraverso quello stesso Indy |
| Enterprise, All-Access | il fork personalizzato di Indy, versione dichiarata | la copia inclusa, versione dichiarata |
Che cosa contiene
Il documento è in formato CycloneDX 1.6 JSON, un formato comune leggibile dalle macchine che gli strumenti di inventario e scansione già comprendono. Oltre ai componenti registra la licenza di ciascuno, se lo ridistribuiamo noi o lo fornisce il tuo IDE, e dove si trova nell'albero dei sorgenti.
Include anche dichiarazioni VEX dove sono utili. Se una CVE nota riguarda la versione di un componente ma non è raggiungibile dal nostro codice, il documento lo dichiara esplicitamente, con la motivazione, invece di lasciartelo dedurre. Queste voci compaiono e scompaiono automaticamente al variare delle versioni dei componenti, perché il generatore decide in base alla versione che ha letto, non in base a una nota lasciata da qualcuno.
Dove trovarlo
Guarda nella cartella in cui hai installato, accanto a history.txt e alla licenza.
C:\Program Files (x86)\sgcWebSockets\sbom.cdx.json
Passalo a qualunque strumento usi per l'inventario, allegalo a un questionario per fornitori, oppure integra le sue voci nella distinta base che produci per il tuo prodotto. Se il tuo team di conformità ne ha bisogno in un altro formato, o vuole un modulo di valutazione fornitore compilato per una build specifica, scrivici tramite il modulo di contatto indicando prodotto, edizione e versione che utilizzi.
Una cosa che deliberatamente non abbiamo fatto
Non pubblichiamo l'SBOM su questo sito. Il Regolamento sulla ciberresilienza impone ai fabbricanti di redigerlo e di conservarlo nella documentazione tecnica, non ne impone la pubblicazione, e c'è poco da guadagnare nel consegnare un inventario dei componenti a chiunque lo chieda. Distribuirlo dentro il prodotto lo mette nelle mani di chi ne ha diritto, cioè i licenziatari e, su richiesta, le autorità di vigilanza del mercato.
Puoi leggere di più su come affrontiamo il Regolamento nella nostra pagina Cyber Resilience Act.
