Grafico delle dipendenze SBOM CycloneDX: a cosa serve?

Tutti i messaggi

Ne abbiamo tutti sentito parlare molto SBOM recentemente. Abbiamo sentito parlare della loro utilità, della loro composizione e dei loro requisiti di sicurezza e regolamentazione. Questa volta voglio prendermi il tempo per parlare di un segmento un po' meno conosciuto del CyclonDX SBOM: il grafico delle dipendenze. 

A differenza del nome, il grafico delle dipendenze non è un aspetto visivo della SBOM. Il suo scopo è aiutare a descrivere la dipendenza dei componenti da altri componenti. Ciò si basa su un componente bom-rif – un identificatore univoco per ciascun componente SBOM. L'idea è quella di mostrare quali elementi sono dipendenti o collegati tra loro. Sembra abbastanza semplice, vero?

Scribe utilizza molto il grafico delle dipendenze nel processo di decisione su cosa elementi della SBOM sono importanti e a cosa dovremmo prestare attenzione. In questo articolo esamineremo il modo Scriba utilizza il grafico delle dipendenze SBOM e i vantaggi pratici che possiamo trarne. Esamineremo alcuni esempi JSON di un grafico delle dipendenze SBOM e concluderemo con uno sguardo a cos'altro possiamo farne in futuro.

Cos'è il grafico delle dipendenze?

Il grafico delle dipendenze è stato aggiunto al formato CyclonDX nel 2019. Il suo scopo dichiarato era quello di collegare insieme i componenti utilizzando un identificatore univoco che in seguito divenne noto come bom-rif. Nel Esempio di casi d'uso di CycloneDX, possiamo vedere come le dipendenze utilizzano l'ID di riferimento dei componenti per mostrare cosa dipende da cosa:

Immagine delle dipendenze del codiceImmagine delle dipendenze del codiceImmagine delle dipendenze del codice

Anche senza entrare negli esempi, sono sicuro che vedrai che la capacità di collegare un elemento agli altri può essere utile. Da un lato, essendo il caso d'uso più comune, consente di vedere immediatamente tutte le dipendenze di una libreria in un unico posto. 

Un grafico delle dipendenze può rappresentare sia relazioni dirette che transitive ed è in genere profondo un nodo.

Sebbene sia possibile rappresentare un albero delle dipendenze completo, non è consigliabile perché potrebbe causare cicli infiniti a causa di dipendenze circolari o altre relazioni complesse. Si consiglia di mantenere i grafici semplici rappresentando un singolo nodo.

 In che modo Scribe utilizza il grafico delle dipendenze?

Scribe fa ampio uso dei metadati raccolti insieme alla SBOM per fornire il contesto delle prove. Il contesto delle prove include dove e quando sono state raccolte, qual è il loro oggetto e così via. Poiché Scribe si impegna a offrire informazioni affidabili e riutilizzabili, utilizziamo il grafico delle dipendenze per creare connessioni che possono essere utilizzate tra diversi clienti e progetti.

Ecco i collegamenti al grafico delle dipendenze supportati da Scribe:

  • File del pacchetto: Questa connessione ci consente di vedere quali file appartengono a ciascun pacchetto. Ovviamente, se troviamo un file in un pacchetto a cui non appartiene è una chiara indicazione di un problema.
  • Indicazione del livello e livello del pacchetto: Sapere quali pacchetti si trovano in quale livello di immagine è utile poiché in questo modo possiamo ordinare le vulnerabilità per livelli. I problemi che hai ereditato dalla tua immagine di base o dalla tua immagine madre non avrebbero la stessa urgenza e la tua capacità diretta di influenzarli come quelli che si trovano sui livelli che hai creato tu stesso.
  • File a strati: Similmente alla connessione pacchetto-file, questa connessione ci consente di vedere quali file sono associati a ciascun livello. Insieme alle altre connessioni, possiamo verificare che i file siano associati al pacchetto e al livello corretti e che non ci siano file in posti dove non dovrebbero essere.
  • Commit e Commit-File: Identificando quali file provengono da quale commit possiamo assicurarci che non ci siano state modifiche indebite nei file di commit prima che venissero utilizzati per creare l'immagine finale.

Utilizzando tutte queste informazioni insieme possiamo tracciare un'immagine abbastanza completa dalla SBOM su quali file dovrebbero essere trovati e dove. Di conseguenza, abbiamo maggiori possibilità di individuare valori anomali o aberrazioni che potrebbero indicare un problema nella tua immagine, che si tratti di un problema di integrità o di un potenziale attacco.

Grafico delle dipendenze e applicazione delle politiche

Scribe sfrutta questo grafico completo delle dipendenze per applicare in modo efficace policy complesse. Ad esempio, il File di commit la dipendenza viene sfruttata per sostenere le policy del proprietario del codice. Ci consente di verificare chi ha eseguito il commit di quale file e quando. IL File del pacchetto la dipendenza viene utilizzata per garantire le politiche di integrità del pacchetto. Ci permette di verificare quali file dovrebbero essere collegati a ciascun pacchetto e di verificare che sia effettivamente così. Inoltre, il Livello del pacchetto la dipendenza viene utilizzata per adattare le politiche del pacchetto ai requisiti specifici di ciascun livello. Poiché ogni immagine software può costruire i suoi livelli in modo diverso, è prezioso essere in grado di sapere in modo definitivo quali pacchetti sono collegati a quale livello dell'immagine.

Personalizzazione delle informazioni sul grafico delle dipendenze

Sappiamo che non tutti sono disposti a condividere tutte queste informazioni o che non sono interessati a vederle o utilizzarle in alcun modo.

Per risolvere questo problema, Scribe ti consente di creare versioni più specifiche della tua SBOM. Ecco le opzioni di personalizzazione che puoi utilizzare con il nostro Valente strumento durante la creazione delle SBOM che attualmente supportiamo. Ulteriori opzioni saranno disponibili in futuro:

  • Per includere solo gruppi di componenti specifici, utilizzare –componenti per selezionare tra i tipi di gruppo. 
  • Per includere o escludere tipi di pacchetto specifici, utilizzare -tipo di pacchetto or –tipo-esclusione-pacchetto per selezionare un tipo di pacchetto specifico.
  • Per includere i pacchetti installati trovati (gruppo di pacchetti install) o i pacchetti a cui fanno riferimento le fonti (package group Index), uso –gruppo-di-pacchetti per selezionare tra le opzioni.
  • Per escludere componenti, utilizzare –filtro-regex, –ambito del filtro, e –filtro-purl per escludere qualsiasi componente che si desidera escludere.
  • Per allegare qualsiasi contenuto di file, utilizzare –attach-regex per includere il contenuto di file esterni.
  • Per includere ambienti ed etichette personalizzati, utilizzare –env e -etichetta per allegare i campi personalizzati. Ciò ti consente di aggiungere metadati personalizzati alla SBOM che stai creando.

Guardando al futuro

Scribe considera il contesto e le connessioni che creiamo tra i diversi componenti della tua SBOM utilizzandolo della massima importanza. Con la capacità del nostro Valint di farlo firmare, verificaree gestire le politiche riteniamo assolutamente possibile vedere un futuro in cui si potrà fare di più oltre alla semplice gestione delle politiche di sicurezza. Possiamo immaginare un futuro in cui le informazioni del grafico delle dipendenze possano essere utilizzate nel controllo di qualità, in specifiche esigenze di conformità e persino in campi non correlati come il fintech e l’agricoltura.

La piattaforma di Scribe ha un livello gratuito in cui puoi iniziare a provarla subito con tutte le funzionalità a portata di mano con cui giocare. Ti incoraggio a farlo Provaci, scopri l'utilità di tali informazioni accumulate nel tempo e scopri per cosa puoi utilizzare tali informazioni. Spero che ti unirai a noi mentre diamo il benvenuto a un futuro più sicuro per tutti noi. 

Questo contenuto è offerto da Scribe Security, un fornitore leader di soluzioni di sicurezza end-to-end per la catena di fornitura di software, che offre sicurezza all'avanguardia per artefatti di codice e processi di sviluppo e distribuzione del codice attraverso le catene di fornitura di software. Per saperne di più.