- Centinaia di pacchetti npm sono stati compromessi da un worm autoreplicante denominato Shai-Hulud; GitHub ha rimosso oltre 500 versioni contaminate.
- Il malware ruba segreti (token npm, PAT di GitHub, chiavi cloud) e ripubblica pacchetti infetti utilizzando i diritti di pubblicazione delle vittime.
- Le prove indicano attacchi mirati a Linux e macOS, abuso di TruffleHog e un flusso di lavoro di GitHub Actions che esfiltra i dati.
- Passaggi immediati: ruotare i token, verificare le dipendenze e i repository GitHub, applicare MFA/2FA e cercare IoC, tra cui bundle.js e traffico webhook.site.
Quello che era iniziato come un altro allarme nella supply chain nel mondo JavaScript si è trasformato in un incidente di grandi dimensioni che ha colpito l'ecosistema npm. Segnalazioni provenienti da più fonti confermano un ceppo di malware auto-propagante. rintracciato come Shai‑Hulud, che compromette le credenziali degli sviluppatori, espone il codice e ripubblica pacchetti contaminati per mantenere attiva l'infezione.
Sebbene i conteggi differiscano a seconda della fonte, il consenso è chiaro: abbiamo a che fare con centinaia di rilasci avvelenati, tra cui una libreria ampiamente utilizzata e scaricata milioni di volte a settimana. GitHub ha rimosso oltre 500 versioni compromesse per arginare la diffusione, e i team di sicurezza di tutto il mondo stanno esortando gli sviluppatori a ruotare le credenziali e a esaminare attentamente i loro repository e pipeline alla ricerca di indizi di intrusione.
Cosa è successo e perché è importante
Le indagini indicano che l'operazione è probabilmente iniziata con la raccolta delle credenziali esca falsificando npm, spingendo i manutentori ad "aggiornare" le impostazioni MFA. Con l'accesso in mano, l'autore della minaccia ha distribuito un worm che viene eseguito dopo l'installazione, cerca segreti e ripubblica build infette sotto l'identità della vittima, trasformando i manutentori affidabili in amplificatori dell'attacco.
Shai-Hulud combina due idee pericolose: propagazione automatizzata e furto di segreti. Sfrutta i token npm rubati per pubblicare nuove versioni dei pacchetti e sfrutta i token GitHub e le chiavi cloud (AWS, GCP, Azure) per spostarsi lateralmente ed esfiltrare i dati. Questa combinazione potenzia il raggio d'azione, consentendo a un singolo compromesso di estendersi a innumerevoli utenti a valle.
Gli obiettivi sembrano orientati verso sistemi simili a Unix. L'analisi rileva che la maggior parte la logica dannosa viene eseguita su Linux e macOS, basato sui controlli ambientali, sebbene la fase di scoperta dei segreti (in particolare con TruffleHog) possa verificarsi in modo più ampio. Questa focalizzazione ha ridotto l'impatto del worm, ma ha comunque lasciato esposta un'ampia gamma di macchine di sviluppo.
Sono stati interessati pacchetti di diverse organizzazioni importanti, insieme a moduli di comunità popolari. In un esempio di alto profilo, @ctrl/tinycolor pacchetto, scaricato milioni di volte a settimana, è stato tirato in ballo, dimostrando quanto profondamente l'infezione potesse insinuarsi nel grafico delle dipendenze.
Come funziona il worm (scomparsa tecnica)
Il payload principale viene fornito come un pesante file JavaScript, comunemente denominato bundle.js (oltre 3 MB nei campioni osservati). Viene eseguito tramite un hook postinstall aggiunto a package.json, il che significa che il codice dannoso viene eseguito automaticamente subito dopo che un utente installa il pacchetto da npm.
All'interno di bundle.js ci sono moduli per Interazione API GitHub, SDK cloud (AWS/GCP), helper di rete e routine per eseguire TruffleHog per la scoperta di segreti. Lo script esegue l'inventario del sistema operativo, individua un token npm e verifica la presenza di un token GitHub valido; se non ne trova nessuno, si ferma, altrimenti avvia l'esfiltrazione e la replica.
Una stranezza degna di nota: alcuni pacchetti infetti contenevano un archivio denominato pacchetto.tar invece della consueta convenzione di denominazione, un segnale che ha aiutato i ricercatori a segnalare gli artefatti compromessi. Gli analisti hanno anche osservato una variante che veniva eseguita come un hook di preinstallazione; uno dei primi casi citati era ngx‑bootstrap 18.1.4, che potrebbe aver costituito la prima testa di ponte nella diffusione.
Una volta in esecuzione, il malware enumera i pacchetti più scaricati dallo sviluppatore tramite l'API di ricerca npm, decomprime ogni tarball, elimina bundle.js, inietta un comando postinstall, aumenta la versione e ripubblica su npm con il token della vittima. Questo trasforma il portfolio dello sviluppatore in un veicolo per ulteriori infezioni.
Esfiltrazione di segreti e flussi di lavoro GitHub
Per la raccolta delle credenziali, Shai-Hulud esegue la scansione dei token npm, dei token di accesso personale GitHub e chiavi API cloud (AWS, GCP, Azure). Crea quindi un repository GitHub pubblico denominato "Shai-Hulud" con l'account della vittima, salvando un file di dati (ad esempio, data.json) con i segreti rubati, esponendoli di fatto al mondo.
Parallelamente, i ricercatori hanno osservato un angolo insidioso di GitHub Actions: il worm crea un ramo denominato 'shai‑hulud' attraverso repository accessibili e invia un file di flusso di lavoro (shai-hulud-workflow.yml). Attivato durante le distribuzioni, il flusso di lavoro raccoglie i segreti e li invia all'infrastruttura dell'aggressore, a volte dopo doppia codifica Base64 per offuscare i contenuti in transito.
Ci sono anche prove di uno script di migrazione che cloni privati/repository interni dalle organizzazioni a cui la vittima può accedere, ri-ospitandoli nell'account dell'utente come mirror pubblici. L'obiettivo sembra essere il furto automatizzato di codice sorgente da progetti privati, aumentando la pressione sulle organizzazioni interessate.
Diversi report segnalano artefatti di assistenza AI all'interno degli script bash (commenti e persino emoji), suggerendo che l'attaccante potrebbe aver utilizzato un LLM per accelerare lo sviluppo dei componenti di automazione del malware.
Ambito e pacchetti degni di nota
Attraverso rimozioni coordinate, GitHub ha rimosso Oltre 500 versioni compromesse per interrompere la propagazione del worm. Sebbene il totale esatto continui a evolversi, l'elenco abbraccia numerosi ecosistemi e organizzazioni, con un impatto a valle sugli sviluppatori che hanno effettuato l'aggiornamento durante la finestra attiva.
Tra i pacchetti e gli spazi dei nomi citati più frequentemente: @ctrl/tinycolor (milioni di download settimanali), multipli @crowdstrike/* componenti (come commitlint e librerie UI) e una vasta gamma di moduli della comunità tra cui ngx-bootstrap, caricamento file ng2, ngx-toastre altro ancora. CrowdStrike ha indicato che la sua piattaforma principale è rimasta inalterata e che le chiavi sono state ruotate prontamente dopo aver rilevato voci dannose nel registro pubblico.
- Esempi legati all'onda: @ctrl/tinycolor; @crowdstrike/commitlint; @crowdstrike/foundry‑js; @crowdstrike/glide‑core; ngx‑bootstrap; ng2‑file‑upload; ngx‑toastr; @nativescript‑community/*; @teselagen/*; @things‑factory/*; e altri.
- I ricercatori hanno anche visto più versioni dannose per pacchetto in alcuni casi, probabilmente a causa della diffusione del worm tramite gli account di diversi manutentori all'interno dello stesso progetto.
Risposta della piattaforma e modifiche alla sicurezza
Le azioni immediate di GitHub includevano eliminazione dei pacchetti errati noti da npm e bloccando i caricamenti che corrispondono agli Indicatori di Compromissione (IoC). L'azienda sta inoltre implementando controlli di pubblicazione più rigorosi: 2FA obbligatorio per la pubblicazione locale, token granulari di durata più breve (ad esempio, sette giorni) e un'adozione più ampia di Pubblicazione affidabile per ridurre la dipendenza da segreti di lunga durata.
Le prossime modifiche renderanno obsoleti i token classici legacy e l'autenticazione a due fattori basata su TOTP per la pubblicazione, impostazione predefinita per non consentire la pubblicazione di tokene ampliare i provider per la pubblicazione affidabile. GitHub ha segnalato un'implementazione graduale con documentazione e guide alla migrazione, riconoscendo che alcuni flussi di lavoro richiederanno degli aggiustamenti.
I team di intelligence sulle minacce e di risposta agli incidenti di tutto il settore (tra cui Unit 42, Kaspersky, Trend Micro e altri) hanno ha emesso linee guida e rilevazioni condividendo al contempo gli IoC con colleghi e alleanze per accelerare gli aggiornamenti di protezione.
Come ridurre il rischio adesso
Agire rapidamente partendo dal presupposto che qualsiasi macchina di sviluppo che abbia installato pacchetti npm di recente potrebbe aver divulgato segreti. La priorità è contenere abuso di credenziali, arrestare la persistenza ed eliminare le dipendenze contaminate dalle catene di build.
- Ruotare immediatamente i token npm, le chiavi GitHub PAT/SSH e le credenziali cloud (AWS/GCP/Azure); considerare compromessi tutti i segreti presenti sugli host degli sviluppatori.
- Controlla le dipendenze tramite package‑lock.json/yarn.lock; rimuovile o bloccale dalle versioni compromesse note; reinstallale da fonti pulite.
- Applicare MFA/2FA su GitHub e npm; passare alla pubblicazione attendibile ove possibile per escludere dal ciclo i token di lunga durata.
- Esamina attentamente GitHub per individuare repository pubblici inaspettati denominati "Shai‑Hulud", rami o flussi di lavoro non familiari ed esecuzioni di azioni anomale.
- Rafforzare CI/CD con RBAC con privilegi minimi, firma/verifica degli artefatti e scansione SCA continua; trattare il consumo open source come rischio gestito.
Suggerimenti per la ricerca delle minacce (controlli ad alto segnale)
Cerca connessioni in uscita verso webhook.site domini, in particolare l'URI osservato in più report. Sugli endpoint, cercare la presenza di bundle.js nelle directory temporanee o dei pacchetti e per un file GitHub Actions denominato shai‑hulud‑workflow.yml.
- Telemetria di rete: registri DNS/URL contenenti webhook.site; contrassegnare il percorso specifico bb8ca5f6‑4175‑45d2‑b042‑fc9ebb8170b7 se visualizzato.
- Telemetria dei file: creazione o esecuzione di bundle.js; presenza di shai‑hulud‑workflow.yml su host per sviluppatori Linux/macOS.
- Telemetria di processo: Invocazioni di TruffleHog dove non previsto (si noti che in alcune organizzazioni potrebbe esistere un uso legittimo).
Indicatori di compromesso (IoC)
Gli indizi di file e stringhe visti nelle indagini includono bundle.js e al shai‑hulud‑workflow.yml, con la stringa letterale 'shai‑hulud' che appare in rami, repository e flussi di lavoro.
- File: bundle.js; shai‑hulud‑workflow.yml
- Stringhe: shai‑hulud; pacchetto.tar
- Hashes (selected): 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09; b74caeaa75e077c99f7d44f46daaf9796a3be43ecf24f2a1fd381844669da777; dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c; 4b2399646573bb737c4969563303d8ee2e9ddbd1b271f1ca9e35ea78062538db; C96FBBE010DD4C5BFB801780856EC228; 78E701F42B76CCDE3F2678E548886860
- Rete: https://webhook.site/bb8ca5f6-4175-45d2-b042-fc9ebb8170b7 (varianti e sottopercorsi osservati)
Cronologia e analisi in corso
I rapporti attribuiscono la scoperta iniziale a metà settembre 2025, con azioni di contenimento di punta intorno al 16-19 settembreDa allora, GitHub e diversi fornitori hanno aggiornato protezioni, rilevamenti e linee guida. Si prevedono ulteriori risultati retroattivi man mano che le organizzazioni completano le revisioni degli incidenti e ampliano gli elenchi delle versioni interessate.
Alcune prove suggeriscono che l'incidente costruito su precedenti fughe di notizie segrete, sottolineando come token di lunga durata e credenziali memorizzate nella cache possano alimentare nuove ondate di compromissioni mesi dopo. Ciò dovrebbe rafforzare gli sforzi per ridurre la durata dei token e adottare modelli di pubblicazione che ridurre al minimo l'espansione dei segreti.
Non tutti i report concordano sui totali esatti o sui pacchetti first-in-chain, ma il quadro generale è allineato: a worm npm autoreplicante che ha trasformato la fiducia degli sviluppatori in un'arma e ha automatizzato i diritti di pubblicazione per scalare rapidamente, più velocemente di quanto molti team avrebbero potuto rilevare solo tramite revisione manuale.
L'evento illustra quanto rapidamente le moderne pipeline di build possano trasformarsi in autostrade per il malware. rafforzamento dell'autenticazione, rimuovendo i token di lunga durata dal percorso, rafforzando CI/CD e dando la caccia in modo aggressivo agli IoC, le organizzazioni possono contenere l'esposizione oggi e rendere l'esecuzione della prossima ondata molto più difficile.
