Tecnologie

Shai-Hulud malware: il worm npm che passa dagli agenti AI

Il malware Shai-Hulud è tornato su npm e ora entra anche dai coding assistant AI. Come funziona, come capire se sei infetto e la checklist per difenderti.

Cosmin-Anton Mihoc
9 min di lettura
Shai-Hulud malware: il worm npm che passa dagli agenti AI
Indice dei contenuti (8 sezioni)

Il malware Shai-Hulud è tornato a settembre 2026, e questa volta non passa solo da npm. In un incidente reale documentato questo mese, l'attaccante è entrato dalla sessione di un coding assistant AI sulla workstation di uno sviluppatore, e da lì il worm è finito in circa 100 repository interni di un'azienda SaaS.

Io lavoro ogni giorno con npm, Node.js, Claude Code e server MCP (ne ho uno in produzione per questo blog). Quindi questa storia non la leggo come una notizia di cronaca: la leggo come un elenco di cose da controllare stasera sul mio portatile. In questo articolo ti spiego cos'è il malware Shai-Hulud, cosa è cambiato a settembre, come capire se sei stato colpito e la checklist che consiglio per difendere npm, estensioni e agenti AI.

Cos'è il malware Shai-Hulud, in due righe

Shai-Hulud è un worm della supply chain npm: un codice malevolo che si nasconde dentro pacchetti JavaScript apparentemente normali e, una volta installato, si replica da solo. Il nome viene dal verme gigante di Dune, e non è un caso: il worm crea su GitHub repository con nomi ispirati alla saga.

La differenza rispetto a un malware classico è l'autoreplicazione. Non ha bisogno che un attaccante pubblichi a mano ogni pacchetto infetto: usa i token dello sviluppatore colpito per infettare i pacchetti che quello sviluppatore mantiene, e così via a catena.

Come funziona il ciclo di infezione

  • Installazione: installi una dipendenza compromessa. Lo script preinstall lancia un file index.js nella cartella principale del pacchetto, con il comando bun run index.js. Il codice gira prima ancora che tu usi la libreria.
  • Furto dei segreti: il worm cerca token npm, token GitHub, chiavi cloud, file .env e configurazioni degli strumenti di sviluppo e AI. Una variante analizzata a settembre controlla 469 percorsi diversi.
  • Verifica dei token: interroga il registro npm per capire quali token rubati sono validi.
  • Ripubblicazione: scarica i pacchetti che quei token possono pubblicare, inietta il payload, alza il numero di versione e li ripubblica. Chi aggiorna quei pacchetti si infetta a sua volta.
  • Persistenza ed esfiltrazione: lascia tracce in file di configurazione dell'editor e degli agenti AI, e può creare repository pubblici su GitHub per portare fuori i dati.

Cosa è cambiato a settembre 2026

Le novità di questo mese sono due, e insieme spiegano perché il malware Shai-Hulud oggi riguarda chi usa l'AI per programmare, non solo chi pubblica pacchetti.

Il ritorno su npm dopo 111 giorni

Il 9 settembre sono comparse quattro pubblicazioni infette su npm, caricate nell'arco di un'ora dopo 111 giorni di silenzio. Il payload era identico a quello della campagna di maggio, quando un account di manutenzione compromesso aveva pubblicato 639 versioni malevole in un'ora.

Il punto che mi ha colpito di più: nel frattempo npm aveva introdotto la scansione alla pubblicazione, che trattiene ogni pacchetto da 5 a 15 minuti prima di renderlo installabile. Il file infetto aveva lo stesso hash di quello già documentato a maggio, eppure è passato. La lezione è semplice: il controllo del registro è un livello in più, non una garanzia. La difesa deve stare anche dalla tua parte.

Il coding assistant usato come porta d'ingresso

La seconda novità è più grave. In un report di settore pubblicato questo mese è descritto un incidente reale presso un'azienda SaaS. L'attaccante ha preso il controllo di una sessione attiva di un coding assistant AI sulla macchina di uno sviluppatore. Il prodotto non è stato reso noto, e la compromissione iniziale non viene attribuita al modello.

Da quella posizione, l'attaccante ha fatto "consigliare" all'assistente l'installazione di un pacchetto PyPI già avvelenato. Lo sviluppatore ha accettato il suggerimento. Risultato: un infostealer in esecuzione, token OAuth di GitHub rubati e il worm Shai-Hulud distribuito su circa 100 repository interni. Poi è stato compromesso anche un pacchetto nel namespace ufficiale dell'azienda, e un secondo dipendente si è infettato scaricandolo.

Ecco perché questo episodio conta: l'assistente AI è diventato un intermediario di cui ci fidiamo. Sceglie librerie, propone comandi, legge documentazione. Se qualcuno controlla quel canale, i suoi suggerimenti hanno la stessa autorevolezza dei tuoi.

BragJack: lo stesso problema nel browser

Negli stessi giorni è stata pubblicata BragJack, una tecnica che usa una normale estensione del browser per inviare comandi agli assistenti AI integrati: Gemini in Chrome, Edge, Comet, Opera Neon e Claude in Chrome. Non serve ingannare il modello con una prompt injection: l'estensione si inserisce nel canale da cui l'agente riceve i comandi "fidati".

A seconda del prodotto, nei test si è arrivati a file locali, screenshot, microfono, fotocamera, cronologia e controllo dell'agente. Sono stati assegnati i CVE-2026-0628 per Chrome e CVE-2026-55945 per Edge. Il filo che unisce BragJack e il malware Shai-Hulud è lo stesso: il bersaglio non è l'intelligenza artificiale, sono i privilegi che le abbiamo dato.

Come capire se sei stato colpito da Shai-Hulud

Se usi npm, Bun o un agente di coding, questi sono i controlli che farei subito. Non servono strumenti a pagamento per partire.

  • Script preinstall sospetti: cerca nelle dipendenze installate un index.js in root lanciato da bun run index.js in preinstall. Un comando utile: grep -r "bun run index.js" node_modules/*/package.json.
  • File di persistenza: controlla modifiche recenti e non tue a .vscode/tasks.json e ai file di impostazioni dell'agente (per esempio settings.json nella cartella di configurazione di Claude). Sono i punti usati dal worm per rientrare a ogni avvio.
  • Repository GitHub mai creati da te: apri il tuo profilo e cerca repository con nomi ispirati a Dune o con la parola Shai-Hulud scritta al contrario nella descrizione.
  • Versioni pubblicate a tua insaputa: se mantieni pacchetti, controlla su npm la cronologia delle versioni. Un aumento di patch che non hai fatto è un campanello d'allarme.
  • Accessi anomali: rivedi la sezione sicurezza di GitHub e npm (sessioni, token, app OAuth autorizzate).

Se trovi anche solo uno di questi segnali, non limitarti a cancellare il pacchetto. Il worm ha già letto i tuoi segreti: vanno ruotati tutti.

Cosa fare se sei stato infettato

  1. Isola la macchina dalla rete o almeno smetti di usarla per pubblicare codice.
  2. Revoca tutti i token: npm, GitHub (personal access token e app OAuth), chiavi cloud, chiavi API dei provider AI. Vale anche per quelli che "non c'entrano".
  3. Controlla i pacchetti che mantieni e depreca le versioni pubblicate dal worm.
  4. Pulisci i file di persistenza e reinstalla le dipendenze da zero, con lockfile verificato.
  5. Avvisa chi usa i tuoi pacchetti o il tuo team: la catena si ferma solo se gli altri sanno cosa aggiornare.

Sulle chiavi API dei modelli AI ho scritto un approfondimento a parte, perché sono diventate un bottino molto richiesto: trovi tutto nell'articolo sul threat report di Anthropic e le API key rubate.

La mia checklist per difendere npm, estensioni e agenti AI

Queste sono le regole che consiglio per qualsiasi progetto Node.js o Next.js. Nessuna da sola basta, insieme riducono molto la superficie d'attacco.

Su npm e sulle dipendenze

  • Disattiva gli script di installazione di default con npm config set ignore-scripts true, e abilitali solo per i pacchetti che ne hanno davvero bisogno. È la singola mossa che blocca il vettore preinstall.
  • Usa sempre il lockfile e in CI installa con npm ci, non con npm install.
  • Non aggiornare il giorno stesso: lasciare qualche giorno di ritardo sulle nuove versioni ti protegge dalle ondate che vengono scoperte e rimosse in poche ore.
  • Token npm granulari con scadenza e permessi minimi, e autenticazione a due fattori obbligatoria per pubblicare.

Sugli agenti di coding e i server MCP

  • Tratta la sessione dell'agente come una sessione privilegiata, alla pari di un accesso amministrativo. È la stessa conclusione del report di settembre.
  • Non accettare installazioni suggerite dall'AI senza leggerle: nome esatto del pacchetto, editore, data di pubblicazione, numero di download. I nomi quasi uguali a quelli veri sono una trappola frequente.
  • Tieni i segreti fuori dalla portata dell'agente: niente .env di produzione nella cartella di lavoro, credenziali in un gestore di segreti.
  • Installa solo server MCP e plugin di cui conosci l'origine, e verifica la firma o il checksum quando disponibile.
  • Chiedi conferma umana per i comandi che installano, pubblicano o fanno push.

Su browser ed editor

  • Riduci le estensioni al minimo nel profilo del browser che usi con gli assistenti AI. Meglio un profilo separato.
  • Aggiorna subito Chrome ed Edge: le vulnerabilità legate a BragJack sono state corrette con le patch.
  • Controlla le estensioni di VS Code e disinstalla quelle che non usi da mesi.

Il tema della fiducia negli agenti non è nuovo su questo blog: ne avevo parlato raccontando gli incidenti in cui Claude ha raggiunto sistemi reali e analizzando PromptPwnd e le pipeline CI/CD. Shai-Hulud è l'anello mancante: dimostra che la catena funziona anche nel mondo reale.

Perché riguarda anche le PMI, non solo chi pubblica pacchetti

Un errore comune è pensare: "io non pubblico librerie su npm, quindi non mi riguarda". Non è così. Se il sito o il gestionale della tua azienda è costruito con Node.js, Next.js o React, installa centinaia di dipendenze. Basta che una sia infetta perché il worm legga le chiavi del tuo hosting, del gateway di pagamento o del CRM.

E se chi sviluppa per te usa un coding assistant senza regole, il rischio passa anche da lì. Quando mi occupo di sviluppo di web app per un cliente, la sicurezza della toolchain fa parte del lavoro, non è un extra.

Leggi anche

Conclusione

Il malware Shai-Hulud non è più solo un problema di npm: a settembre 2026 ha dimostrato di poter entrare dalla porta di un coding assistant e usare la fiducia che diamo all'AI. La buona notizia è che le difese sono note e costano poco: script di installazione disattivati, token minimi, segreti lontani dall'agente e conferma umana sulle azioni rischiose.

Se vuoi che controlli la toolchain del tuo progetto o impostiamo insieme regole sicure per usare gli agenti AI nel tuo team, scrivimi dalla pagina contatti: rispondo io.

Condividi questo articolo
Hai domande? Contattami

Pronto a dare vita al tuo progetto?

Contattami per discutere della tua idea e ricevere una consulenza gratuita.

Iniziamo insieme