Ricerca nel sito web

Controlla le tue dipendenze NPM, rappresentano l'86% dei bug di sicurezza


Un recente studio condotto da Snyk sullo stato della sicurezza open source ha fornito risultati allarmanti: per i pacchetti NPM, l'86% delle vulnerabilità di sicurezza risiede in secondarie dipendenze che spesso avere poco controllo su.

Cosa sono le dipendenze secondarie?

Quando installi qualcosa da NPM, non stai solo installando un pacchetto, stai installando quel pacchetto, oltre a tutte le sue dipendenze richieste. Puoi visualizzare questo albero delle dipendenze per i tuoi progetti con npm ls --depth=10. Anche un progetto di base con due pacchetti installati contiene in realtà quattro livelli di dipendenze per un totale di 10 pacchetti effettivi:

Il problema, quindi, è evidente. Stai estraendo il codice da molti più pacchetti di quanto il tuo package.json suggerirebbe. E ognuno di questi pacchetti è un potenziale bug di sicurezza.

Secondo il rapporto di Snyk, questo è esattamente ciò che accade in ambienti open source come NPM e Ruby Gems. Il problema è dilagante e la maggior parte dei bug proviene da pacchetti indiretti che non hai installato manualmente.

Il lato positivo: questo problema non è così grave come sembra. NPM ha uno strumento integrato per il controllo che catturerà la maggior parte di quelli cattivi e ti dirà di aggiornare. A causa della prevalenza del controllo, questi bug di sicurezza ricevono maggiore attenzione e vengono risolti quando si presentano, con aggiornamenti inviati rapidamente agli utenti interessati.

La maggior parte dei bug rilevati da Snyk erano potenziali attacchi XSS e, sebbene non sia eccezionale, il loro impatto nel mondo reale è piuttosto basso. I principali bug di impatto si sono ridotti a poche dozzine di prototipi di attacchi di inquinamento (potenziale esecuzione di codice arbitrario) nonché ad alcuni pacchetti dannosi o compromessi progettati specificamente per tentare di intrufolarsi in ignari package.json.

Il problema sta anche migliorando, o almeno ricevendo più attenzione. Il numero di bug segnalati in NPM è diminuito del 20% rispetto allo scorso anno e la stessa tendenza si è applicata ad altri ecosistemi di gestori di pacchetti.

Il principale risultato di tutto questo: dovresti pensare da dove proviene il tuo codice. Con l'ascesa del software FOSS, è facile rimanere invischiati nell'inferno delle dipendenze con codice che non avevi intenzione di aggiungere.

La soluzione: il controllo

È inevitabile che ci siano bug in parti casuali di codice open source e, sebbene non sia possibile correggere alcuni di quelli piccoli senza sviluppare tutto internamente, è possibile rilevare alcuni di quelli particolarmente sgradevoli con controlli regolari.

Tuttavia, il problema non è particolarmente nuovo e npm ha uno strumento integrato per questo: npm audit. L'hai sicuramente visto prima, perché viene eseguito automaticamente ogni volta che installi:

L'auditing integrato di NPM controlla principalmente solo gli aggiornamenti ai pacchetti che correggono determinati bug, quindi c'è sempre un aggiornamento che puoi fare (anche se potenzialmente rotto) che può risolvere il problema. Esistono tuttavia altri scanner di sicurezza, come gli stessi Snyk, che gestiscono un servizio per controllare i progetti GitHub e mantengono un database pubblicamente accessibile di bug noti che è possibile verificare.

Articoli correlati: