Software Composition Analysis: vulnerabilità nascoste
Il crescente utilizzo di software open source nella maggior parte delle applicazioni ha rivoluzionato lo sviluppo del software, ma ha anche creato vulnerabilità nascoste introducendo rischi legali, di sicurezza e di obsolescenza.
L’aumento delle componenti open source implica quindi anche l’aumento delle vulnerabilità che li affliggono.
Molto spesso la parte di codice incorporato nelle applicazioni non è conosciuto né censito, quindi, escluso dagli aggiornamenti e patch che periodicamente vengono fatti per eliminare i bug funzionali e vulnerabilità.
Per chi utilizza software open source in ambito commerciale e per operazioni critiche, ma anche per chi usa software closed source, è d’obbligo dotarsi di competenze per lo studio e la validazione del codice utilizzato, in modo da comprenderne le criticità e mettere in campo le adeguate azioni per limitare l’impatto di bug e vulnerabilità.
Una buona parte delle azioni di analisi della sicurezza del software possano essere automatizzate, con i corretti tool, per fornire una visione quotidiana dello stato della sicurezza.
L'approccio ideale sarebbe quello di introdurre le verifiche per la sicurezza dei componenti open source e i controlli di conformità legale già nel ciclo di vita di sviluppo di applicazioni/prodotti. Questi controlli devono essere introdotti in anticipo e ripetuti frequentemente (ad esempio, ogni sprint), o ancor di più, già prima di inserire un componente open source nella propria applicazione verificando le criticità che questo componente potrebbe introdurre ed eventualmente decidere di usarne un altro più appropriato.
CAST Highlight fornisce un'alternativa efficace ai tradizionali prodotti SCA. Tramite Cast Highlight è possibile scansionare in poche settimane un intero parco applicativo aziendale.
CAST Highlight's Open-Source Security identifica questi componenti e i loro rischi in un intero portafoglio di applicazioni, aiutando a monitorare la conformità con la politica aziendale di gestione della proprietà intellettuale (licenza), il livello di obsolescenza dei componenti utilizzati e l'eventuale presenza di vulnerabilità di sicurezza note nei componenti.
In questo articolo ci soffermeremo in particolare sui come evidenziare con CAST Highlight le vulnerabilità che provengono dalle componenti open source utilizzate dalle applicazioni, non solo quelle note ma anche quelle più nascoste e potenzialmente a rischio.
Attraverso la scansione del codice, CAST Highlight individua i componenti open source attraverso tre modalità:
- Per fingerprint (Individuazione di file all’interno dell’applicazione riconosciuti come appartenenti a una determinata componente censita sulla knowledge base, grazie ad un codice univoco identificativo generato in base alle sue caratteristiche intrinseche).
- Per reference (individuazione di riferimenti ai package delle componenti di terze parti all’interno dei file sorgenti, di configurazione o di progetto dell’applicazione).
- Per dependency (vengono individuate anche le componenti che sono referenziate a cascata da altre componenti open source).

Di ogni singolo componente, quindi, viene rilevata la versione, la release date, il tipo di licenza, le vulnerabilità note (CVE) e quelle possibili (CWE).
Facendo riferimento al National Vulnerability Database, le CVE vengono classificate in base alla loro severità (critical, high, medium, low).
Il database NVD, lanciato dall'Istituto nazionale per gli standard e la tecnologia (NIST) e aggiornato regolarmente dal MITRE, contiene più di 150.000 vulnerabilità su circa 2300 prodotti software.
CAST Highlight intercetta anche vulnerabilità presenti nel GitLab security advisory database aggiornato periodicamente dal Vulnerability Research team di GitLab.
I risultati della scansione inerenti la Software Composition Analysis sono visualizzati in dashboard di sintesi e di dettaglio. Per ogni componente è disponibile il riepilogo delle vulnerabilità classificate per severità, che possono essere navigate in drilldown per ottenere tutti i riferimenti alla singola CVE:
- Identificativo univoco nel formato “CVE-YYYY-NNNNN”.
- Link alla pagina del database NVD
- Descrizione, nome del componente, vendor, versioni affette dalla vulnerabilità
- Link ad altre pagine web con informazioni aggiuntive
- Riferimento alla CWE (id e descrizione)
- Punteggio di Severità
Il punteggio di Severità è calcolato mediante il Common Vulnerability Scoring System Calculator (CVSS) in base a diverse caratteristiche (facilità di accesso alla rete, complessità dell'attacco, privilegi richiesti, necessità di interazione con l'utente, ecc.) e da cui deriva la seguente classificazione di Severità delle CVE:
Per ogni componente inoltre viene fornita la timeline delle versioni con relative vulnerabilità e l’indicazione di qual è la versione più vicina a quella usata e con meno violazioni e della versione più recente e più sicura.
Sebbene sia importante assicurarsi che la propria applicazione non sia esposta a vulnerabilità note (CVE) del National Vulnerability Database, un hacker potrebbe sfruttare debolezze del software che non sono ancora referenziate, le cosiddette Common Weakness Enumeration (CWE).
Un'analisi condotta dal team di ricerca CAST su oltre 150.000 vulnerabilità CVE di NVD, ha rilevato che il 67% corrispondeva alle Common Weakness Enumerations.
Attraverso l’analisi di CAST di migliaia di componenti open-source popolari, è stato costruito il database proprietario di CAST: Open-Source Software Intelligence Database (OSSIDB) che contiene tutte le CWE riscontrate nel codice analizzato dei componenti open-source.
Anche per le CWE è possibile accedere a numerose informazioni di dettaglio (tra cui l’elenco completo delle regole di qualità di CAST corrispondenti e il numero di problemi identificati nel componente).
Un altro aspetto da considerare nei rischi introdotti dai componenti open-source sono le vulnerabilità nascoste attraverso le dipendenze indirette. I rischi nelle dipendenze indirette sono pericolosi per un'applicazione tanto quanto i rischi nelle dipendenze dirette: una vulnerabilità di sicurezza in una dipendenza indiretta può ovviamente essere sfruttata. Stesso discorso anche per i rischi legali legati alle licenze: le condizioni di licenza nelle dipendenze indirette si applicano a un'applicazione allo stesso modo delle condizioni di licenza nelle dipendenze dirette.
I portafogli applicativi possono essere molto grandi, potenzialmente con centinaia o migliaia di applicazioni che includono decine o centinaia di componenti. Se in più si considerano le dipendenze indirette diventa veramente difficile avere una visione completa dello stato dei componenti usati.
È disponibile in CAST Highlight un Dependency Explorer che a partire dall’applicazione consente di espandere interattivamente qualsiasi nodo per mostrare le dipendenze transitive di ogni componente.
Questa vista facilita la visualizzazione dei rischi potenziali e permette di capire rapidamente dove concentrare gli sforzi.
Un’altra vista fondamentale a livello di portfolio applicativo è il Portfolio Advisor.
Infatti quando i team di sviluppo iniziano ad analizzare i rischi dell'open source, è facile che si lascino sopraffare dall'enorme numero di componenti e problemi che un'analisi può rilevare.
Questo può scoraggiare i team dal migliorare la situazione. Oppure rimandare le azioni a un secondo momento, perché il compito sembra troppo grande per fare progressi significativi.
Lo scopo del Portfolio Advisor for Open Source è quello di aiutare a stabilire le priorità delle applicazioni e dei rischi su cui concentrarsi per primi, sulla base di alcune semplici regole che tengono conto dell'impatto aziendale dell'applicazione e del tipo specifico di rischio open source osservato.
Tenendo conto dei rischi legali, di sicurezza e di obsolescenza rilevati nelle componenti open source usate dalle applicazioni, e dall’impatto che essi possono avere sul business aziendale, è possibile quindi costruire una roadmap del piano di rimedio per la riduzione di tali rischi.
Per ulteriori approfondimenti sulla Software Composition Analysis di CAST Highlight, consultare
Comments: