Nuove scoperte della società di sicurezza informatica JFrog scoprono che un malware che prende di mira l’ecosistema npm può eludere i controlli di sicurezza sfruttando un “comportamento inaspettato” nello strumento dell’interfaccia a riga di comando (CLI) npm.
I comandi di installazione e controllo (audit) della CLI delle librerie NPM hanno funzionalità integrate per verificare la presenza di vulnerabilità note in un pacchetto e in tutte le sue dipendenze, fungendo efficacemente da meccanismo di avviso per gli sviluppatori in modo da trovarne i difetti.
Ma come stabilito da JFrog, gli avvisi di sicurezza non vengono visualizzati quando i pacchetti seguono determinati formati di versione, creando uno scenario in cui i difetti critici potrebbero essere introdotti nei loro sistemi direttamente o tramite le dipendenze del pacchetto.
Cosa comportano le librerie dannose NPM?
Nello specifico, il problema sorge solo quando la versione del pacchetto installato contiene un trattino (ad esempio, 1.2.3-a), che è incluso per denotare una versione pre-rilascio di un modulo npm.
Sebbene gli sviluppatori del progetto considerino la discrepanza tra le normali versioni del pacchetto NPM e le versioni pre-rilascio come una funzionalità prevista, ciò lo rende anche maturo per gli abusi da parte di aggressori che cercano di avvelenare l’ecosistema di programmi open source.
“Gli aggressori potrebbero sfruttare questo comportamento inserendo intenzionalmente codice vulnerabile o dannoso nei loro pacchetti dall’aspetto innocente che saranno inclusi da altri sviluppatori a causa di funzionalità preziose o come errore dovuto a tecniche di infezione come il typosquatting o la confusione delle dipendenze“, ha affermato Or Peles.
In altre parole, un malintenzionato, sostanzialmente, potrebbe pubblicare un pacchetto apparentemente innocuo che si trova nel formato della versione pre-rilascio, che potrebbe quindi essere potenzialmente rilevato da altri sviluppatori e non essere avvisato del fatto che il pacchetto è dannoso nonostante le prove del contrario.
Lo sviluppo, è stato creato da varie persone che si sono messe d’accordo tramite un collegamento possa influire su tutte le applicazioni che hanno la dipendenza (chi mastica bene Linux, sa a cosa alludo) di terze parti.
Cosa sarebbero le librerie “NPM”?
Secondo il sito GeekAndJob.com:
Abbreviazione di Node Package Manager, è il gestore di pacchetti ufficiale che viene installato con la piattaforma Node.js. Si tratta quindi di un’interfaccia a riga di comando (CLI) che aiuta nell’installazione dei pacchetti, nella gestione delle versioni e nella gestione delle dipendenze.
npm fa anche riferimento al registro, un grande database pubblico di applicazioni JavaScript, e al sito web che consente di scoprire pacchetti, impostare profili e gestire altri aspetti dell’esperienza npm.
Esiste un grande numero di librerie e applicazioni Node.js pubblicate su npmjs.com: i pacchetti possono essere pubblici o privati, in base alle impostazioni di accesso scelte dall’autore del pacchetto.
Per farla breve è un tipo di librerie che riguarda JavaScript, un linguaggio di programmazione che funziona su browser, quindi (a livello teorico) lato server.
Questo problema però non riguarda (di norma) l’utente medio se non qualcuno di appassionato, bensì gli sviluppatori lato server di linguaggio JavaScript.
Cosa devono fare gli sviluppatori (o comunque gli appassionati) per difendersi da questa minaccia?
Per contrastare tali minacce, si consiglia agli sviluppatori (e non solo) di evitare di installare pacchetti npm con una versione pre-rilascio, a meno che la fonte non sia nota per essere completamente affidabile, oltre a classiche norme di sicurezza informatica valide più o meno per tutti.