Come automatizzare la creazione della SBOM

Una distinta base del software non è più solo una documentazione “utile” per le organizzazioni. Ora è un “must-have” per una vasta gamma di ragioni. A parte il fatto che le normative federali hanno reso obbligatoria la divulgazione dei componenti del software, le società di software hanno ora capito che elencare tutte le dipendenze open source e commerciali utilizzate nella propria applicazione è una pratica vantaggiosa per la sicurezza informatica.

È interessante notare che, nonostante si riconosca la necessità di una SBOM, crearla può essere ancora piuttosto impegnativo. Questo perché il processo di creazione della distinta base del software per un prodotto può essere complesso, noioso e dispendioso in termini di tempo. Inoltre, poiché le autorità di regolamentazione consigliano di generare una SBOM precisa e accurata per ogni iterazione del prodotto, implementarla manualmente ogni volta richiede molte risorse se non del tutto impraticabile. 

Quando si tratta di implementare SBOM complete, è sempre consigliabile seguire il percorso dell'automazione. Ogni software è un pacchetto complicato composto da più dipendenze che molto probabilmente hanno anche le proprie dipendenze. Ciò significa che anche il software più semplice può avere centinaia o addirittura migliaia di dipendenze. Ci vorrà molto lavoro per compilarli tutti e mantenerli organizzati manualmente. Questo articolo spiega perché l'automazione è necessaria per l'implementazione delle SBOM e come implementare l'automazione per mitigare lo stress derivante dalla generazione manuale delle SBOM. 

Perché è importante automatizzare il processo SBOM

Una distinta base del software è semplicemente un elenco dei componenti di un prodotto software (simile all'elenco degli ingredienti di un prodotto commestibile). In generale, tutto ciò che serve per creare una distinta materiali del software è un foglio di calcolo che elenca questi componenti. Si tratta però di una semplificazione eccessiva che difficilmente risulta praticabile. Una SBOM è un elenco esaustivo con un insieme preciso delle informazioni richieste. Cercare di elaborare questo elenco manualmente sarà ovviamente complicato e dispendioso in termini di tempo.

Le SBOM manuali semplicemente non sono sufficienti, motivo per cui l'automazione è vitale nell'implementazione e nell'acquisizione delle SBOM. Oltre alla difficoltà di implementare SBOM manuali, la creazione manuale di SBOM comporta anche dei rischi, per non parlare dei problemi di conformità. Di seguito sono riportati alcuni dei motivi per cui è meglio creare SBOM con un sistema automatizzato che raccoglie e compila un elenco completo di software e li archivia in un repository leggibile dall'uomo e facile da interrogare.

Minacce alla catena di fornitura informatica

L'obiettivo principale della generazione di una SBOM completa è comprendere meglio i componenti software e analizzare le possibili vulnerabilità. Questa è diventata un’importante misura di sicurezza informatica per mitigare le minacce per ogni prodotto software. Una SBOM automatizzata rende il processo più fluido. Non solo una distinta base software automatizzata è più sicura (grazie alla firma crittografica e alla verifica automatizzata dei componenti), ma l'automazione garantisce anche che i componenti vengano scansionati continuamente durante tutta la pipeline di integrazione e distribuzione di un'iterazione del software.

Che fa risparmiare tempo

Automatizzare l'implementazione della SBOM significa affidarsi a strumenti avanzati che lavorano alla velocità della macchina per generare la distinta base del software. Ciò ti fa risparmiare tempo in più di un modo. Innanzitutto, generare una SBOM in questo modo è più veloce rispetto al tentativo manuale di identificare i singoli componenti e di includerli in un foglio di calcolo.

L'automazione delle SBOM rende inoltre il rilevamento delle vulnerabilità più semplice e veloce. Con le SBOM compilate manualmente, identificare le possibili posizioni delle vulnerabilità è un processo estremamente lungo.

Anche gli aggiornamenti sono più rapidi con le SBOM. I sistemi automatizzati eseguono controlli frequenti sulla tua SBOM per identificare le vulnerabilità in base alle dipendenze appena aggiornate. In questo modo, puoi mitigare i rischi più rapidamente e investire tempo e risorse in altre attività importanti invece di perdere tempo nella creazione di SBOM o nell'interrogarle manualmente.

NIST e requisiti federali

Oltre ad essere vantaggioso, l’automazione delle SBOM riveste anche un’importanza normativa. I requisiti federali sulle SBOM, come il Cyber ​​Supply Chain Management and Transparency Act del 2014, stabiliscono che per generare SBOM dovrebbero essere utilizzati soluzioni e strumenti automatici.

Allo stesso modo, nel luglio 2021, la National Telecommunication and Information Administration (NTIA) ha pubblicato linee guida approvate a livello federale che dettagliano gli elementi minimi che devono essere inclusi per ogni SBOM. Il supporto per l'automazione è stato elencato in questa documentazione come uno degli elementi vitali di ogni SBOM.

Secondo la NTIA, la distinta base del software deve essere leggibile dall'uomo e dalla macchina e capace di essere generata automaticamente. L'implementazione di una SBOM automatizzata semplifica il monitoraggio dei dati inclusi nel documento. 

I fogli di calcolo sono inefficienti e soggetti a errori

Come notato in precedenza, ogni pacchetto software ha centinaia di dipendenze. Ciò significa che ci sono migliaia di punti dati da coprire in una tipica distinta base del software. I fogli di calcolo sono semplicemente mal equipaggiati per gestire questo volume di dati. L'inserimento manuale di tutti questi dati apre la porta a errori umani che possono avere gravi conseguenze se non vengono rilevati in tempo. È più probabile che tu generi una SBOM accurata e completa quando scegli invece un sistema automatizzato.

Consistenza

Uno dei principali vantaggi dell'automazione del processo di generazione della SBOM è che aiuta a mantenere la coerenza in tutta la pipeline CI/CD delle diverse iterazioni di un prodotto software. Ciò include tutte le modifiche apportate a un prodotto durante la sua creazione e anche dopo il suo rilascio.

Una SBOM non è statica. Man mano che un prodotto si evolve, vengono apportate revisioni alla distinta base del software per acquisire ogni nuova dipendenza aggiunta. Questi cambiamenti devono essere comunicati a tutti gli utenti e alle altre parti interessate sia internamente che attraverso la catena di fornitura del software. È importante che ogni parte interessata abbia accesso all'ultima versione di una SBOM nonché a tutte le versioni precedenti del software.

Con una SBOM preparata manualmente, mantenere la coerenza e il controllo della versione è difficile e ciò può portare a conflitti e altri problemi. Una SBOM automatizzata garantisce che le modifiche apportate siano coerenti ed è più semplice vedere quando e come sono state apportate. Questo è difficile da ottenere con un sistema manuale.

Modi per automatizzare le distinte materiali del software

Gli standard normativi come i requisiti minimi NTIA per SBOM stabiliscono formati specifici per la distinta base del software. Questi standard includono Software Package Data Exchange (SPDX) e CycloneDX. I team di sicurezza software dovrebbero sapere che la natura stessa di questi standard implica già che le SBOM debbano essere automatizzate.

Pertanto, ogni team di sicurezza del software dovrebbe garantire la generazione e l'utilizzo delle SBOM aggiungendo un passaggio automatizzato da eseguire in un punto strategico all'interno della pipeline di sviluppo per generare la SBOM. Potrebbe trattarsi di uno strumento open source per l'analisi dei componenti software dopo il completamento della creazione o di uno strumento SCA integrato nella pipeline di sviluppo continuo del software. I diversi metodi di automazione della distinta base del software sono evidenziati di seguito.

Utilizza uno strumento open source

Uno dei modi più economici per creare una distinta base del software è utilizzare uno strumento open source. Sono praticamente gratuiti, ma offrono solo funzionalità rudimentali. Esistono diversi strumenti open source che automatizzano il processo di implementazione della SBOM. Tuttavia, i report generati dalla maggior parte di questi strumenti vengono generati solo in due formati; CicloneDX e SPDX.

Un buon esempio di strumento di automazione SBOM open source è Generatore SBOM di Microsoft. Questo generatore di build-time per uso generico è stato creato per aiutare le aziende a generare SBOM per i propri pacchetti software. Lo strumento offre supporto multipiattaforma e genera SBOM nel formato SPDX (Software Package Data Exchange) standard.

Il generatore SBOM di Microsoft può essere integrato in pacchetti software creati con framework NPM, PyPI, Maven, Rust Crates, Ruby Gems, Linux e NuGet per generare l'elenco di dipendenze e componenti. Può anche essere integrato con i repository pubblici GitHub.

Lo strumento restituisce informazioni generali sulla documentazione SBOM come specificato nei requisiti minimi SBOM. Elenca anche tutti i file e i pacchetti insieme alle relazioni tra loro.

Utilizza uno strumento plug-in

Un altro approccio per la generazione automatica di SBOM consiste nel farlo all'interno della pipeline di integrazione e distribuzione continua (pipeline DevOps). Puoi farlo utilizzando un plug-in Maven che si integra nella fase di creazione del tuo flusso di lavoro. Questo approccio rappresenta un modo scalabile e conveniente per automatizzare il processo di generazione della distinta base del software direttamente all'interno della pipeline.

Troverai che questo sarà molto più semplice poiché lo stai facendo all'interno dell'ambiente costruito del tuo progetto. Devi solo passare alcuni argomenti per generare automaticamente la SBOM. Per il plug-in Maven, la SBOM viene generata in formato Cyclone DX.

Il plugin Maven può generare una SBOM completa che dettaglia tutte le dipendenze all'interno del tuo progetto. Per fare ciò, dovresti iniziare configurando il file pom.xml prima di eseguire il comando "mvn verify" per generare i file SBOM. Un file bom.json viene generato prima del file SBOM.

Il plug-in Maven viene fornito con uno strumento SCA integrato che controlla le dipendenze dei file SBOM generati. Una volta che il file è stato controllato, è possibile eseguire lo strumento SCA una seconda volta per generare nuovamente la distinta materiali del software.

Un esempio di tale strumento plugin è Piattaforma Scriba, che consente ai produttori di software di generare automaticamente SBOM. Va oltre la generazione di SBOM e aiuta gli utenti a gestire e condividere le proprie SBOM, convalidare l'integrità e tenere traccia delle vulnerabilità dei contenitori, delle dipendenze e delle pipeline. Ecco una semplice panoramica di come funziona Scribe per automatizzare la creazione di SBOM:

  • Passo 1: Registrati e accedi (gratuitamente) su Scribe Hub. Gli utenti registrano e configurano i propri progetti utilizzando questa interfaccia web. Un raccoglitore di prove separato, che viene eseguito su MAC e dispositivi Linux, genera lo stesso SBOM.
  • Passaggio 2: integra Scribe con la pipeline di integrazione continua. L'aggiunta di frammenti di codice da Scribe Hub alla pipeline di integrazione continua e/o all'immagine della build finale consentirà di ottenere questo risultato.
  • Passaggio 3: generare ed esportare la distinta materiali del software. Una distinta base del software viene generata utilizzando lo strumento CLI di Scribe gensbom. La SBOM generata può essere esportata in formato CycloneDX JSON.

Utilizzare uno strumento di analisi della composizione (SCA).

Un terzo approccio per generare automaticamente SBOM per il prodotto software consiste nell'utilizzare uno strumento di analisi della composizione software di terze parti. Uno strumento SCA analizza il tuo prodotto per identificare componenti e licenze di terze parti all'interno del software. Lo strumento valuta la legittimità del codice e la conformità ai requisiti di licenza.

Le SCA scansionano il codice sorgente, i file binari, le immagini del contenitore e i file manifest di un pezzo di software per determinarne la composizione ed elencare tutti i componenti open source inclusi nel software. Nell'ambito della SBOM, una SCA eseguirà inoltre questi componenti su vari database per estrarne informazioni sulla sicurezza, licenze e vulnerabilità note.

Uno strumento software di analisi della composizione automatizza e accelera il processo di creazione di SBOM. Lo strumento è progettato per scansionare migliaia di punti dati in breve tempo al fine di compilare una distinta base del software per il tuo prodotto. Gli strumenti SCA ti aiutano a proteggere la pipeline DevOps fornendo una supervisione completa sui componenti di un pacchetto software e sulla provenienza di tali componenti. 

Conclusione

Anche se alcune aziende generano SBOM solo perché è stato reso obbligatorio dai requisiti normativi, la pratica si è rivelata necessaria per quanto riguarda la mitigazione delle minacce alla catena di fornitura del software. Automatizzare il processo è ancora più importante in quanto aiuta a ridurre il lavoro noioso e dispendioso in termini di tempo legato alla compilazione manuale delle SBOM. L'automazione della SBOM, come evidenziato in ciascuna delle tecniche trattate in questo articolo, può accelerare il processo di creazione della SBOM e renderlo anche più accurato e affidabile. Uno strumento plug-in come Scribe consente di automatizzare la creazione di SBOM direttamente all'interno della pipeline di sviluppo del tuo software. Consulta il nostro blog e altre risorse per vedere come funziona Scribe per automatizzare la generazione della SBOM e come puoi sfruttarla.