Mini Shai-Hulud, nuova ondata: 639 versioni npm compromesse in un'ora
La nuova ondata Mini Shai-Hulud del 19 maggio ha compromesso 639 versioni di pacchetti npm in meno di un'ora, sfruttando un singolo account maintainer. La novità tecnica: i pacchetti malevoli sono firmati con provenance Sigstore valida
di Andrea Bai pubblicata il 20 Maggio 2026, alle 16:21 nel canale SicurezzaIeri notte, attorno alle 01:56 UTC, una nuova ondata della campagna Mini Shai-Hulud ha colpito il registro npm pubblicando 639 versioni malevole su 323 pacchetti unici in meno di un'ora. Il dato circolato come "600 pacchetti compromessi" si riferisce in realtà alle versioni pubblicate: i pacchetti distinti effettivamente coinvolti sono sotto i 350.
Il vettore iniziale è l'account maintainer atool, che gestisce l'intero stack @antv di Alibaba (libreria di data visualization e charting) e pacchetti popolari come timeago.js, echarts-for-react, size-sensor e jest-canvas-mock. Quest'ultimo conta oltre 2 milioni di download settimanali, echarts-for-react circa 1,1 milioni, timeago.js circa 1,5 milioni. Una credenziale compromessa su un solo account ha aperto la propagazione su qualcosa come decine di milioni di download settimanali.
Provenance valida su codice malevolo
L'elemento di novità identificato da Endor Labs e Socket riguarda il sistema con cui i pacchetti open source vengono firmati per garantirne l'origine. Si chiama Sigstore ed è stato adottato negli ultimi due anni come elemento minimo contro la manomissione del software: quando un maintainer pubblica una nuova versione di un pacchetto, la macchina automatica che ne esegue la build (il "runner" della pipeline di integrazione continua) ottiene dal proprio provider, di norma GitHub, un tagliando di identità temporaneo. Quel tagliando, tecnicamente un token OIDC, viene presentato a Fulcio, l'autorità certificatrice di Sigstore, che in cambio rilascia un certificato di firma valido pochi minuti e vincolato a quella specifica identità. La firma viene poi registrata in un registro pubblico e auditabile chiamato Rekor. Chi installa il pacchetto può verificare in automatico che la firma sia autentica e che provenga da una pipeline riconosciuta, comprese le attestazioni di livello SLSA Build Level 3.

Il worm Mini Shai-Hulud sfrutta questo meccanismo: il payload viene eseguito durante l'installazione di una dipendenza compromessa, quindi quasi sempre dentro il runner di un altro maintainer che sta pubblicando un proprio pacchetto. Da lì il malware legge il token OIDC che il runner ha appena ricevuto e lo usa per chiedere a Fulcio un certificato a suo nome. Fulcio ne emette uno, correttamente poiché il token è autentico e il workflow è quello dichiarato. Il worm firma il pacchetto malevolo con quel certificato, registra l'attestazione su Rekor e lo pubblica su npm con il badge di provenance verde. La crittografia ha funzionato come previsto, ma quello che è stato compromesso è l'assunto sottostante: che una pipeline legittima firmi solo codice legittimo. Se la pipeline ospita il malware come dipendenza al momento della firma, l'identità certificata resta vera ma il contenuto firmato è ostile. Quanto accaduto rischia di essere uno spartiacque dove la provenance signing, presentata da circa diciotto mesi come baseline contro gli attacchi alla supply chain, smette di funzionare come garanzia sull'integrità del codice pubblicato.
Il payload raccoglie più di venti tipologie di credenziali: chiavi AWS, GCP e Azure, service account Kubernetes, token HashiCorp Vault, credenziali npm e GitHub, stringhe di connessione database, oltre ai vault locali di 1Password e Bitwarden. L'esfiltrazione avviene attraverso la rete P2P Session, che maschera il traffico come comunicazione cifrata di messaggistica, con GitHub usato come canale di backup: in presenza di un token GitHub utilizzabile, il malware crea un repository pubblico sotto l'account della vittima e committa il bottino in formato JSON. La descrizione dei repository riporta la stringa invertita niagA oG eW ereH :duluH-iahS, che letta nel verso giusto restituisce "Shai-Hulud: Here We Go Again". I repository censiti oscillano fra i 1.900 di Socket e i 2.700 di Aikido, divergenza compatibile con il fatto che la campagna è ancora in corso.
Persistenza oltre la rimozione del pacchetto
Rimuovere il pacchetto malevolo non risolve il problema: il payload scrive backdoor in .vscode/tasks.json e .claude/settings.json, le configurazioni di task autorun di VS Code e degli hook di Claude Code, e installa servizi a livello di sistema operativo, quali un systemd user service su Linux e un LaunchAgent su macOS. Un processo denominato kitty-monitor interroga GitHub ogni ora cercando commit firmati che fungano da canale di comando, mentre gh-token-monitor verifica ogni sessanta secondi se il token rubato è ancora valido. La vittima che revoca le credenziali notifica l'attaccante in tempo reale.
Il meccanismo di autopropagazione è invariato rispetto alle ondate precedenti. Una volta acquisito un token npm valido, il worm enumera i pacchetti su cui il proprietario ha permessi di pubblicazione, scarica i tarball, inietta il payload e ripubblica con versione incrementata. Ogni account compromesso diventa il punto di ingresso per il successivo.
L'attribuzione a TeamPCP, il gruppo dietro le ondate Mini Shai-Hulud precedenti (TanStack, Mistral AI, UiPath, Bitwarden CLI, pacchetti SAP), è probabile ma non confermata: il codice sorgente del worm è stato rilasciato dallo stesso gruppo su BreachForums nei giorni scorsi nell'ambito di un "contest" di supply-chain attack, rendendo il framework disponibile a copycat. Datadog ha già osservato versioni clonate del worm con infrastruttura C2 indipendente. Secondo Socket, l'intera campagna Mini Shai-Hulud totalizza adesso 1.055 versioni malevole su 502 pacchetti unici fra npm, PyPI e Composer.
Chi ha installato uno dei pacchetti coinvolti deve trattare la macchina come compromessa: ruotare tutte le credenziali raggiungibili dal runner, eseguire npm ci --ignore-scripts nelle build CI per sopprimere i lifecycle hook, e ispezionare .vscode/tasks.json e .claude/settings.json per gli artefatti di persistenza. Il badge di provenance Sigstore, in questo contesto, non è un indicatore di sicurezza attendibile.









Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
Agente IA fa quello che vuole su Fedora: patch errate accettate dai manutentori
Ubisoft chiude gli studi di Winnipeg e Belgrado e avvia centinaia di nuovi licenziamenti
Fractal è un kernel che spia cosa succede dentro le CPU. E ha trovato qualcosa di inaspettato in Apple M1
Acqui Terme 'elegge' Eva Statiella, la prima assessora creata con l'intelligenza artificiale
ECOFLOW DELTA 3 Max Plus con coupon da 300€: power station 2.048 Wh espandibile fino a 10 kWh con ricarica 0–80% in 47 minuti
F1: la FIA cambia le regole sui motori per il 2027 e 2028
L'IA fa strage di posti di lavoro negli USA: gli ultimi dati shock sui licenziamenti
Espresso senza acqua calda: l'ultrasuono riduce i consumi energetici fino al 75%
Samsung Crystal UHD 50'' a 336€ e Metz QD-MiniLED 60'' a 454,99€: due Smart TV 4K molto diverse, entrambe in offerta
Microsoft blocca Claude Fable 5 per i propri dipendenti: ecco cosa succede e perché
Samsung Galaxy S25 a 599€: scorsa generazione, ma tanta eleganza e Snapdragon 8 Elite, ecco perché vale la pena
Tagli storici al personale in casa Microsoft: ha il via l'operazione XBOX Reset
Amazon Haul: 30% di sconto su almeno 2 articoli fino al 14 giugno, con spedizione gratis se si spendono 15€ o più
GOODRAM semplifica l'offerta di RAM e SSD: arrivano i nuovi marchi RIVAL e PRO









0 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - infoDevi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".