Nel maggio 2026, un’analisi congiunta di Microsoft Security Blog, Matrice Digitale e Group-IB ha rivelato un’escalation senza precedenti nell’abuso delle catene di approvvigionamento software. Un worm noto come Shai-Hulud — e una sua derivazione, Mini Shai-Hulud — ha infettato almeno 800 pacchetti pubblici su npm, il repository di pacchetti JavaScript più utilizzato al mondo. Il meccanismo? Semplice: sfruttare la fiducia implicita nelle dipendenze open source per eseguire payload malevoli durante l’installazione, senza richiedere privilegi elevati né interazione utente.

Il verme che si nutre di fiducia

Shai-Hulud non è un exploit zero-day. Non sfrutta una vulnerabilità nota come CVE-2026-12345. È un attacco di supply chain basato su ingegneria sociale e debolezze procedurali. Il worm, originariamente sviluppato e reso pubblico dal gruppo TeamPCP, è stato copiato e reinserito in pacchetti apparentemente innocui. Uno su tutti: chalk-tempalte, un falso clone del popolare chalk, progettato per attirare sviluppatori distratti.

Una volta installato, il payload attiva un infostealer in grado di esfiltrare credenziali da ambienti Linux, con un focus specifico su strumenti di CI/CD. Tra le vittime: token GitHub, chiavi AWS, configurazioni Kubernetes, segreti di HashiCorp Vault, credenziali npm e persino dati memorizzati in 1Password. Il tutto avviene in background, durante il normale processo di npm install, spesso in pipeline automatizzate dove i permessi sono eccessivi e i controlli assenti.

Matrice Digitale ha confermato che almeno quattro pacchetti sono stati direttamente coinvolti in questa campagna, ma il numero reale potrebbe essere più alto. Il modello di diffusione è virale: ogni pacchetto infetto può propagare il worm ad altri progetti che lo includono come dipendenza, creando una rete a catena di infezione difficile da tracciare e ancora più difficile da contenere.

Da infostealer a botnet: l’evoluzione del minaccia

Quello che inizia come furto di credenziali si trasforma rapidamente in qualcosa di più pericoloso. Mini Shai-Hulud, la variante rilevata nei pacchetti compromessi @antv, non si limita a rubare dati. In alcuni casi, stabilisce un canale di comando e controllo (C2) che permette ai threat actor di trasformare i sistemi infetti in nodi di una botnet per attacchi DDoS. Questo salto di fase — da spyware a infrastruttura offensiva condivisa — segnala un cambio di paradigma: non si tratta più di attacchi mirati, ma di industrializzazione del crimine informatico basato su open source abusato.

La scala del problema è aggravata da dati allarmanti. Secondo l’IBM Cost of a Data Breach Report 2025, una violazione legata a terze parti costa in media 4,91 milioni di dollari. Il Verizon DBIR 2025 conferma che il 30% delle violazioni coinvolge fornitori o dipendenze esterne, un raddoppio rispetto all’anno precedente. In questo contesto, Shai-Hulud non è un incidente isolato: è un sintomo di un sistema malato.

Il fallimento della third-party assurance

Il punto cruciale non è tecnico, ma organizzativo. Non si tratta di patchare un CVE, ma di ripensare il modo in cui le aziende gestiscono le dipendenze software. Il modello attuale si basa su una fiducia cieca: se un pacchetto è su npm, è considerato legittimo. Non esiste un processo standardizzato di verifica dell’identità del maintainer, della storia del pacchetto o della sua velocità di download anomala.

Il risultato? Un ecosistema in cui un pacchetto con pochi commit e un nome simile a uno popolare (chalk-tempalte invece di chalk) può essere scaricato migliaia di volte prima di essere segnalato. E quando viene segnalato, la risposta è lenta. npm non ha un sistema di revoca in tempo reale. I team di sicurezza non ricevono alert automatici. Le CI/CD continuano a eseguire npm install come se niente fosse.

La soluzione non è bandire l’open source — sarebbe come chiudere Internet. È invece applicare controlli automatici, rigorosi e obbligatori. Generare un SBOM (Software Bill of Materials) per ogni build. Scansionare ogni dipendenza con strumenti come oss-review-toolkit o Syft. Bloccare l’installazione se una dipendenza è in una blocklist di CISA o MSRC. Limitare i permessi degli account di servizio in CI/CD al minimo indispensabile. Isolare i segreti dagli ambienti di sviluppo.

E soprattutto: chiedersi, ogni settimana, chi possiede davvero i pacchetti che il proprio codice importa — e perché uno di loro ha visto i download salire del 3000% in 48 ore.