Come generare una distinta materiali del software (SBOM)

I moderni pacchetti software sono più sicuri di quanto lo siano mai stati, grazie ai progressi nelle pratiche di sicurezza informatica. Tuttavia, devono affrontare anche le minacce più avanzate, il che li rende tanto vulnerabili quanto sicuri. Attacchi alla catena di fornitura come Venti solari e gravi vulnerabilità come Log4Shell sono tra le minacce più recenti affrontate dai sistemi software oggi. Attacchi alla catena di fornitura software come questi hanno effetti dinamici e più difficili da gestire perché sfruttano vulnerabilità in sistemi che sfuggono al tuo controllo diretto.

Tuttavia, il primo passo per combattere attacchi alla catena di fornitura del software come questi è avere una conoscenza chiara dei pacchetti, delle dipendenze e dei componenti inclusi nel software. Questo è il motivo per cui è importante generare una distinta base software (SBOM) per la tua build. Non solo migliora la visibilità delle vulnerabilità nella catena di fornitura del software: una SBOM è diventata importante anche ai fini della conformità. La generazione di SBOM è stata imposta da un recente ordine esecutivo emesso dal governo federale degli Stati Uniti per migliorare la sicurezza informatica e garantire l'autenticità dei componenti di terze parti utilizzati nei pacchetti software.

Secondo un Gartner Secondo una previsione, il 60% delle organizzazioni incaricate dello sviluppo di software per infrastrutture critiche richiederà SBOM standardizzate entro il 2025. La creazione di una SBOM inizia con la selezione di uno strumento in linea con gli standard e gli obiettivi dell'organizzazione, determinando le fasi del ciclo di vita della creazione del software durante le quali applicare la SBOM, confermando che aderisca al formato ed eseguendo una scansione delle vulnerabilità. La generazione di una SBOM è un processo delicato e complicato. Questo articolo tratterà quando è necessaria la generazione della SBOM e come generarla per il tuo software.

Quando generare una distinta materiali del software

La generazione di una distinta base del software (SBOM) è essenziale per proteggere le build del software e l'intera catena di fornitura del software. La generazione di SBOM può essere integrata in varie fasi del processo di creazione del software. È possibile generare una distinta materiali utilizzando il codice sorgente durante la fase di creazione, durante l'esecuzione o durante l'esecuzione di analisi forensi sul software. Di tutti questi, gli esperti consigliano di generare una SBOM durante la fase di creazione. Questo perché i generatori SBOM in fase di compilazione sono più accurati e generano un elenco di dipendenze più completo. Tuttavia, poiché ciò non è sempre pratico, la SBOM può essere generata in qualsiasi altro momento durante il ciclo di vita DevOps.

Vale la pena notare che il tipo di strumento di generazione SBOM da utilizzare dipende dalla fase del ciclo di vita DevOps in cui viene generata la documentazione SBOM. Di seguito sono riportate le diverse fasi in cui è possibile generare SBOM durante il ciclo di vita della build. Ogni periodo presenta vantaggi e compromessi diversi. È meglio comprendere il pubblico di destinazione e il caso d'uso dei dati SBOM che stai generando e scegliere un approccio che offra il risultato migliore per te.

Nella fase del codice sorgente

Esaminando gli artefatti e le eventuali fonti associate come manifest, metadati e file di blocco, gli strumenti sorgente o binari genereranno una distinta base del software nella fase del codice sorgente. In questa fase, puoi eseguire un'analisi dei componenti software o un'analisi binaria del tuo software.

Uno strumento SCA (analisi dei componenti software) è progettato per analizzare una parte di software e i suoi file manifest per determinarne i componenti. Gli strumenti di analisi binaria, invece, analizzano i metadati del software e creano informazioni sugli artefatti per generare una SBOM. Esempi di strumenti di analisi utilizzati in questa fase includono CycloneDX, It-Depends, Fossa, AppSonar, Cybellum, Black Duck e Fortress.

È possibile utilizzare un analizzatore di vulnerabilità insieme a una SBOM generata nella fase del codice sorgente per ricevere avvisi tempestivi di vulnerabilità nel software in fase di creazione. Tuttavia, esistono limitazioni alle SBOM generate in questa fase. Innanzitutto, non sono completi, poiché spesso mancano quelli generati durante la compilazione con informazioni sulle dipendenze. Inoltre, potrebbero includere informazioni sui componenti che non sono stati utilizzati nel prodotto finale distribuito.

Durante la fase di costruzione

La creazione della SBOM in fase di compilazione con uno strumento che attinge al sistema di compilazione garantisce la conoscenza più esatta di ciò che accade in un binario, comprese le dipendenze transitive e non bloccate. Ciò è supportato da  Studio NTIA sulla produzione e fornitura di SBOM da parte dei fornitori di software.

La NTIA consiglia di creare una SBOM per ogni nuova versione del componente. Ciò significa creare una nuova SBOM ogni volta che si aggiorna o si rilascia una nuova versione del software. I fornitori sono inoltre tenuti a creare nuove SBOM ogni volta che scoprono un errore nella precedente o apprendono nuove informazioni sui componenti software che non erano state precedentemente documentate.

La generazione della tua SBOM durante la fase di compilazione implica l'utilizzo di un plug-in che funzioni con l'ambiente nativo con cui stai creando il tuo software. La maggior parte degli ambienti di sviluppo dispone di plug-in che si integrano con il sistema di gestione delle dipendenze per generare automaticamente una SBOM. Esempi di generatori SBOM in fase di compilazione includono SPDX, il plug-in CycloneDX Maven e Dependency-Track-Check di OWASP.

Sebbene i generatori SBOM in fase di compilazione siano i più completi e accurati, sono più difficili da configurare rispetto ad altri metodi. Inoltre, questo metodo non funziona per alcuni sistemi di build e non è possibile utilizzarlo per prodotti legacy. 

Generazione di SBOM durante il runtime

Un generatore SBOM che funziona durante il runtime è progettato per acquisire le librerie utilizzate dal software, dal server delle app o dai plug-in durante il runtime. Questo tipo di generatore dettaglia anche tutti i servizi richiamati dal software nonché le porte e le librerie attive a cui accede. Tuttavia, questo metodo di generazione delle SBOM non è ampiamente disponibile. Inoltre, non esiste un flusso di lavoro chiaro per unire i dati generati utilizzando questo metodo con la documentazione SBOM originale. Jbom ed Mappatore di minacce sono esempi di generatori SBOM runtime.

Come generare una distinta base del software: una guida passo passo

La generazione manuale di una distinta base del software è un'operazione noiosa e dispendiosa in termini di tempo per gli sviluppatori. Elencare tutti i componenti di un programma software in questo modo è per lo più poco pratico. Tuttavia, sono ora disponibili numerosi strumenti di generazione SBOM che semplificano questo processo. Il modo in cui procedere dipende dagli standard dell'organizzazione e da quando si desidera generare la SBOM durante il ciclo di vita dello sviluppo.

Integrando i flussi di lavoro SBOM nelle pipeline di creazione del software, è possibile automatizzare il processo SBOM. La piattaforma Scriba è uno di questi strumenti che semplifica il modo in cui crei la distinta base del software. Scribe ti consente di gestire e condividere la tua SBOM da un unico posto. In questo modo, puoi convalidare l'integrità dei componenti software e tenere traccia delle vulnerabilità nella pipeline del software senza problemi. Questa sezione è una guida passo passo per generare distinte materiali software con Scribe.

Passaggio 1: registrarsi e accedere a Scribe Trust Hub.

Prima di iniziare, dovresti sapere che la piattaforma Scribe dispone di un'interfaccia web, Scribe Trust Hub, accessibile dal tuo browser. Il raccoglitore di prove Scribe, tuttavia, funziona solo su dispositivi Linux e Mac. Per generare un report sull'integrità e una SBOM con Scribe, devi avere l'autorizzazione per modificare lo script di compilazione del tuo progetto e aggiungere lo snippet di codice pertinente necessario per connettere il tuo progetto a Scribe. Tieni presente che mentre Scribe può generare SBOM per progetti scritti in qualsiasi linguaggio di programmazione che generi un'immagine contenitore, la versione attuale funziona solo per progetti Node.js.

Il primo passo per integrare Scribe nel tuo progetto è registrarsi su Scribe Trust Hub. Una volta registrato ed effettuato l'accesso, vai alla scheda "Prodotti" e fai clic su Configurazione. Scribe ha un prodotto demo in questa pagina, con cui puoi interagire per familiarizzare con la piattaforma e come funziona.

Passaggio 2: integrare Scribe Trust Hub

Il passo successivo è connettere Scribe alla pipeline di integrazione continua del tuo progetto. Ciò automatizza il processo di generazione della SBOM. In genere, puoi aggiungere frammenti di codice da Scribe Trust Hub in due punti sulla pipeline CI. Puoi inserire il codice alla cassa del codice sorgente o nell'immagine finale creata. La prima opzione è consigliata ma non obbligatoria, mentre la seconda è obbligatoria.

La configurazione CI di Scribe attualmente funziona solo per Jenkins su Kubernetes e GitHub Actions. Il processo di integrazione di Scribe per queste configurazioni CI è simile. Per iniziare, dovrai ottenere le seguenti credenziali nella pagina di configurazione del prodotto Scribe Hub:

  • Chiave del prodotto
  • ID cliente
  • Segreto del cliente

La chiave prodotto varia da un prodotto all'altro, mentre le credenziali del cliente sono univoche per il tuo account.

Configurazione dell'integrazione CI per Jenkins

Per configurare le integrazioni CI per Jenkins, puoi aggiungere lo snippet di codice per chiamare "Gensbom" (lo strumento di Scribe Trust Hubs per la raccolta di prove e la generazione di SBOM) al momento del pagamento e/o dopo aver creato un'immagine Docker.

Inizia aggiungendo le credenziali di cui sopra al tuo ambiente di compilazione secondo le istruzioni univoche per Jenkins. Successivamente, aggiungi lo snippet di codice alla pipeline seguendo le istruzioni

Configurazione dell'integrazione CI per le azioni GitHub

Il processo di impostazione dell'integrazione CI per GitHub Actions è simile a quello di Jenkins. L'idea principale è quella di chiamare il raccoglitore di prove di Scribe e il generatore SBOM noto come "Gensbom". Per iniziare, segui il Istruzioni GitHub per aggiungere le credenziali di configurazione del prodotto e lo snippet di codice alla pipeline secondo le istruzioni qui

Integrazione di Scribe Trust Hub con altri sistemi CI

Sebbene Scribe offra solo supporto nativo per le azioni Jenkins e GitHub, potresti essere in grado di utilizzarlo anche per altri sistemi CI. Per iniziare, scarica lo strumento "Gensbom" dalla tua interfaccia a riga di comando basata su Unix. Successivamente, aggiungi il tuo prodotto e le credenziali del cliente, quindi chiama Scribe gensbom dal tuo script di build al momento del pagamento o dopo l'immagine finale creata.

Passaggio 3: generazione della distinta materiali del software

Lo strumento CLI gensbom di Scribe genera la distinta base del software (SBOM) per Docker e Open Containers Images (OCI). Questo strumento funziona solo su sistemi Mac o Linux. La SBOM finale generata da Scribe è in formato CycloneDX JSON, che è uno dei formati standard leggibili dalle macchine e riconosciuti per le SBOM. Le immagini del contenitore aperto possono essere estratte da Docker, da un disco locale o da un registro remoto, a seconda dei casi.

Sebbene siano presenti impostazioni predefinite per il nome, la directory e il percorso dell'immagine da cui viene generata la SBOM, è possibile modificare di conseguenza queste impostazioni predefinite, se lo si desidera.

Passaggio 4: Esporta SBOM

Scribe Trust Hub ti consente inoltre di esportare e condividere facilmente la distinta base del software come parte del processo di convalida del tuo software. La SBOM viene generata nel formato di reporting CycloneDX JSON e descrive in dettaglio tutte le dipendenze open source dell'immagine Docker analizzata. Una volta generata la SBOM, puoi esportarla con un clic. Troverai il pulsante "Esporta SBOM" nell'angolo in alto a destra del report. Fare clic per esportare le distinte materiali del software.

Conclusione

La generazione di una distinta base del software sta diventando un passo sempre più importante per proteggere la catena di fornitura del software e anche per scopi di conformità. Indipendentemente dai motivi che ti spingono a generare una SBOM, troverai Scribe Trust Hub un modo flessibile e facile da usare per automatizzare il flusso di lavoro di generazione della SBOM per ciascuna delle build del tuo software.