Cyberattacchi alimentati dall'intelligenza artificiale: Come individuare, prevenire e difendersi dalle minacce intelligenti

Leggi ora
Per le traduzioni dei siti utilizziamo l'intelligenza artificiale e, sebbene ci sforziamo di essere accurati, non sempre le traduzioni sono precise al 100%. La vostra comprensione è apprezzata.

Gestione delle vulnerabilità delle dipendenze nellaSupply Chain Software

da Stella Nguyen, Responsabile marketing prodotti senior
Condividi questo post

Le librerie di terze parti sono essenziali per accelerare il ciclo di vita dello sviluppo del software. Invece di codificare da zero, gli sviluppatori spesso integrano librerie open-source per vari scopi, sia per motivi di economicità, sia per mancanza di risorse o per una maggiore flessibilità. Repository come Maven Central e PyPI, insieme a strumenti di gestione delle dipendenze, semplificano questo processo e aumentano la produttività. Tuttavia, questo affidamento comporta anche potenziali rischi per la sicurezza. 

La gestione delle dipendenze open source di un progetto può porre delle sfide, tra cui le dipendenze annidate (una o più dipendenze all'interno di una dipendenza) e le competenze limitate nella gestione delle dipendenze. L'integrazione di librerie esterne amplia la superficie di attacco e aumenta i rischi per la sicurezza. La scoperta di una vulnerabilità in una libreria può compromettere tutto il software che dipende da quel componente. Pertanto, è essenziale utilizzare strumenti di scansione delle dipendenze per identificare e risolvere le vulnerabilità note provenienti da dipendenze di terze parti. 

Riutilizzo Software e adozione della dipendenza 

Man mano che gli ecosistemi di distribuzione diventano più accessibili, gli sviluppatori scelgono di riutilizzare il software esistente per accelerare lo sviluppo di software complessi. Tuttavia, questa convenienza può introdurre problemi di sicurezza inaspettati se non viene gestita con attenzione. Questi programmi software esistenti sono distribuiti principalmente via Internet sotto forma di pacchetti, ovvero archivi contenenti versioni di release note come librerie, insieme a metadati che specificano versione, autore, licenza, riferimenti e altre informazioni rilevanti. Il software di packaging semplifica i processi di distribuzione e di controllo delle versioni. 

Pacchetti open source 

Gli sviluppatori spesso condividono pubblicamente il loro codice sotto licenze open-source, consentendo la revisione del codice, la collaborazione della comunità e una facile integrazione. Ogni sviluppatore può riutilizzare, modificare o contribuire alla base di codice. I progetti variano molto in termini di qualità, manutenzione e supporto. Gli autori rilasciano questi pacchetti per renderli più facilmente accessibili, ma il supporto e la responsabilità dipendono dalla licenza.

Dipendenze 

Una volta che un pacchetto è referenziato in un altro progetto, diventa una dipendenza del progetto, che rappresenta un riferimento esterno al pacchetto. Le dipendenze creano relazioni unidirezionali tra pacchetti software, in cui uno si basa su un altro per il corretto funzionamento. Gli sviluppatori includono le dipendenze nelle loro applicazioni, risolvendole in fase di compilazione e recuperando quelle necessarie. 

Software Supply Chain 

La catena di fornitura si riferisce a tutti i fornitori esterni coinvolti nel processo, in particolare a quelli che forniscono le dipendenze del software. Negli ultimi anni la gestione della catena di fornitura ha acquisito importanza nello sviluppo del software e le aziende hanno stabilito politiche che comprendono i requisiti dei fornitori, i documenti legali e i contratti per garantire la conformità prima di accettare un fornitore. 

Gestione delle dipendenze

Problemi principali

La gestione delle dipendenze può diventare rapidamente opprimente, portando al cosiddetto "inferno delle dipendenze". Le applicazioni moderne possono avere centinaia o addirittura migliaia di dipendenze dirette, rendendo difficile il monitoraggio delle vulnerabilità. Ecco alcuni scenari in cui la gestione di grandi volumi di dipendenze diventa un problema. 

  • Mancanza di revisione del codice: Nonostante la trasparenza dell'open-source, a volte i team saltano la revisione del codice, generando un falso senso di sicurezza.
  • Fiducia implicita: Gli sviluppatori spesso includono le dipendenze senza verificare a fondo gli autori, affidandosi esclusivamente all'inclusione nel repository.
  • Uso estensivo delle dipendenze: Gli sviluppatori fanno spesso molto affidamento sui pacchetti, anche se è necessaria solo una frazione delle loro funzionalità, con il risultato di gonfiare le dipendenze.
  • Modifiche di rottura: L'aggiornamento dei pacchetti può essere complesso e può introdurre modifiche di rottura, con conseguenti esitazioni e pacchetti obsoleti.
  • Problemi di responsabilità: Gli standard di manutenzione e supporto dell'open-source non sono all'altezza di quelli richiesti per il software commerciale, il che porta a controversie e ad aspettative irrealistiche da parte degli sviluppatori del progetto, con il potenziale risultato di pacchetti insicuri.
Attacchi recenti

L'aumento degli attacchi che prendono di mira le dipendenze di terze parti ha sollevato preoccupazioni sulla sicurezza del software. Episodi di alto profilo come la vulnerabilità Log4Shell nel 2021 o la backdoor XZ Utils nel marzo 2024, che ha colpito migliaia di pacchetti Maven, hanno sottolineato l'impatto diffuso di tali vulnerabilità. Nello stesso anno, la scoperta di malware in un popolare pacchetto NPM ua-parser-jswas ha evidenziato i rischi associati all'uso di librerie di terze parti negli stack di applicazioni. 

Un altro attacco degno di nota nel gennaio 2024 è MavenGate, un nuovo metodo di attacco alla catena di fornitura del software, che dirotta le dipendenze tramite librerie abbandonate. Uno sfruttamento riuscito di queste carenze potrebbe consentire ad attori malintenzionati di trovare artefatti vulnerabili nelle dipendenze e iniettare codice dannoso nell'applicazione e, peggio ancora, compromettere il processo di compilazione attraverso un plugin dannoso. 

Con l'aumento dell'uso di librerie open-source, la comprensione e la mitigazione di questi rischi diventa fondamentale. Questo spinge a indagare ulteriormente sulla prevalenza, sui tipi e sulla persistenza delle vulnerabilità nelle librerie open-source, nonché sulla loro relazione con gli attributi e i commit del progetto. 

Consigli per la sicurezza Supply Chain
diagramma che illustra i passaggi per la gestione sicura del software con l'audit SBOM, la selezione della catena di fornitura affidabile e la sicurezza del processo di compilazione

Protezione delle dipendenze con OPSWAT SBOM 

In risposta agli attacchi alla catena di fornitura, gli Stati Uniti d'America hanno approvato nel maggio 2021 l'"Executive Order on Improving the Nation's Cybersecurity", che definisce i passi per migliorare le politiche della catena di fornitura. Uno dei requisiti principali è quello di fornire un SBOM per ogni prodotto. 

OPSWAT Software Bill of Materials (SBOM) è in continua evoluzione per soddisfare le crescenti esigenze di sviluppo del software in un ambiente sicuro. Una delle caratteristiche principali di OPSWAT SBOM è la scansione delle dipendenze. Questa funzione è stata progettata per migliorare la visibilità della vostra base di codice, identificando le vulnerabilità nelle dipendenze su cui si basano i vostri progetti. 

Per saperne di più sul perché le SBOM sono importanti.

Scansione delle dipendenze annidate

Scansione delle dipendenze dei pacchetti

OPSWAT SBOM rileva automaticamente le vulnerabilità di sicurezza nelle dipendenze del software durante lo sviluppo e il test. Ad esempio, SBOM consente ai team di sapere se l'applicazione utilizza una libreria open-source nota per essere vulnerabile. I team possono quindi intervenire per proteggere l'applicazione. 

analisi di sicurezza dei pacchetti Python che mostrano vulnerabilità, problemi di dipendenza e versioni sicure
 Controllo delle dipendenze del codice sorgente 

Controllare le dipendenze con Python

L'output del comando da terminale mostra le dipendenze del pacchetto Python "requests" utilizzando pip e grep

Container Scansione di immagini

OPSWAT SBOM esamina tutti i livelli dell'immagine di un container per identificare vulnerabilità o minacce, compresi i pacchetti del sistema operativo (OS) e le librerie software dipendenti utilizzate dall'applicazione. Questo approccio proattivo consente di rilevare e risolvere potenziali problemi prima che si trasformino in problemi gravi.

Rapporto di valutazione delle vulnerabilità che mostra un elenco di pacchetti con le rispettive vulnerabilità, gli identificatori CVE, le versioni e le versioni corrette all'interno di un ecosistema software.
Container Scansione di immagini

Controllare la dipendenza da Alpine 

L'output del terminale mostra le informazioni sulle dipendenze del pacchetto ssl_client su Alpine Linux
Livello di gravità delle dipendenze vulnerabili

Gli sviluppatori e i team di sicurezza traggono vantaggio dalla comprensione dei tipi comuni, della prevalenza e della persistenza delle vulnerabilità di dipendenza, consentendo loro di valutare la gravità e di esplorare le strategie di rimedio. 

SBOM analizza le dipendenze del progetto alla ricerca di vulnerabilità note. Al rilevamento, SBOM fornisce informazioni dettagliate, tra cui i livelli di gravità, le descrizioni delle vulnerabilità e le correzioni disponibili. 

Rapporto sulle vulnerabilità per requirements.txt con le vulnerabilità dei pacchetti evidenziate e i dettagli CVE
Livello di gravità delle dipendenze vulnerabili 
Rapporto di vulnerabilità 

È possibile esportare un rapporto dettagliato per consentire ai team di tenerne traccia: 

  • Numero totale di dipendenze analizzate 
  • Numero totale di vulnerabilità trovate in tutte le dipendenze 
  • Una gamma di versioni scansionate 
  • CVE note 
  • Numero totale di vulnerabilità di gravità critica, alta, media e bassa 
Rimedio e raccomandazioni

OPSWAT SBOM raccomanda ai team di sicurezza di aggiornare tutti i pacchetti vulnerabili alle versioni più recenti con le correzioni delle vulnerabilità. Ciò consente ai team di affrontare la vulnerabilità dei manutentori dei pacchetti o di rimuovere i pacchetti dall'albero delle dipendenze. Questo approccio proattivo consente ai team di affrontare i potenziali rischi per la sicurezza prima che diventino un problema, migliorando in modo significativo la sicurezza e l'integrità dei progetti software. Inoltre, OPSWAT SBOM aiuta le organizzazioni a mantenere la conformità e la sicurezza nella catena di fornitura del software. Si raccomanda vivamente ai team di: 

Mappare le dipendenze
Sfruttare gli strumenti per identificare le dipendenze presenti nell'ambiente e le loro relazioni.

Eliminare le dipendenze non necessarie
Eliminare le dipendenze non necessarie o non indispensabili per ridurre la superficie di attacco.

Usare repository consolidati
Assicurarsi che le dipendenze siano ottenute da fonti affidabili.

Eseguire una scansione di tutte le dipendenze
Prima di utilizzare le dipendenze in qualsiasi software, eseguite una scansione per individuare eventuali problemi di sicurezza o di qualità.

Pensieri conclusivi 

Utilizzando strumenti di scansione delle dipendenze come OPSWAT SBOM, è possibile identificare e risolvere in modo proattivo le vulnerabilità nelle dipendenze del progetto, riducendo i potenziali rischi per la sicurezza prima che possano essere sfruttati. Sfruttate la potenza della scansione delle dipendenze e degli SBOM per creare applicazioni software sicure, conformi e resistenti. 

Rimanete aggiornati con OPSWAT!

Iscriviti oggi stesso per ricevere gli ultimi aggiornamenti sull'azienda, storie, informazioni sugli eventi e altro ancora.