Shai-Hulud 2.0: il worm di npm torna più aggressivo, quasi 800 pacchetti infetti

Una nuova ondata del worm che ruba credenziali agli sviluppatori ha infettato centinaia di pacchetti npm, esponendo segreti in decine di migliaia di repository GitHub. Se non trova credenziali, cancella i file dell'utente.

Shai-Hulud 2.0: il worm di npm torna più aggressivo, quasi 800 pacchetti infetti

Il 24 novembre è partita una nuova ondata di Shai-Hulud, il worm che a settembre aveva infettato oltre 500 pacchetti di npm, il principale archivio di librerie JavaScript. In due giorni i pacchetti infetti sono diventati quasi 800, con oltre 20 milioni di download settimanali complessivi, e alcuni appartengono ad aziende note. I repository GitHub che espongono i segreti rubati sono più di 25.000.

La sequenza di settembre è utile per capire come si è arrivati qui. Poco prima della prima ondata, un manutentore caduto in un phishing aveva visto compromettere librerie diffusissime come chalk e debug. Poi era arrivato il worm, che si diffondeva da solo. Ora c’è la seconda versione, più rapida e più furtiva.

Parte prima dell’installazione

Il worm entra nei pacchetti legittimi con credenziali di manutentori già rubate. Aggiunge due file, setup_bun.js e bun_environment.js, e uno script preinstall che parte prima dell’installazione, anche se poi l’installazione fallisce. Installa il runtime Bun, poi cerca sul computer o nella pipeline token npm e GitHub e chiavi AWS, Google Cloud e Azure. Li pubblica in nuovi repository GitHub creati con l’account della vittima. Con i token npm trovati infetta fino a 100 pacchetti della vittima, pubblicandone nuove versioni. Infine installa un esecutore di GitHub Actions che permette agli attaccanti di lanciare comandi da remoto.

Se non riesce né a rubare credenziali né a diffondersi, tenta di cancellare tutti i file scrivibili nella cartella home dell’utente. Un ladro che, se non trova niente, dà fuoco alla casa.

Confronta le dipendenze dei tuoi progetti con gli elenchi dei pacchetti compromessi e cerca i due file sul disco e nelle pipeline. Se li trovi, ruota tutti i segreti presenti su quella macchina e controlla il tuo account GitHub: un repository creato a tua insaputa è il segno più chiaro.

Nelle pipeline usa i file di lock, installa con npm ci e valuta --ignore-scripts. Evita le versioni pubblicate da poche ore: aspettare qualche giorno prima di adottarle filtra gran parte di queste compromissioni, che di solito vengono scoperte in fretta.

Se pubblichi pacchetti, proteggi l’account npm con un’autenticazione a più fattori resistente al phishing e passa alla pubblicazione tramite sistemi fidati, abbandonando i token a lunga durata. Sono proprio quelli che il worm cerca.

Condividi LinkedIn X Telegram

Continua a leggere