Registrato un attacco di massa ai pacchetti nel repository NPM, condotto utilizzando un nuovo worm autoriproducente chiamato ChainDrop, che inserisce malware nelle dipendenze. A seguito dell'attacco sono stati pubblicati 2212 rilasci dannosi per 444 pacchetti. I pacchetti compromessi più popolari, keyv, flat-cache e file-entry-cache, hanno rispettivamente 154, 149.9 e 147.6 milioni di download a settimana.
Il caricatore del worm era contenuto nei file setup.mjs e Math_Symbol.js, che venivano eseguiti tramite un gestore preinstallazione ("preinstall": "node setup.mjs"), richiamato durante l'installazione del pacchetto compromesso. Gli script menzionati caricavano il runtime legittimo di Bun e codice offuscato del worm, della dimensione di 710 Kb. Dopo l'attivazione, il worm cercava nel sistema e nelle variabili d'ambiente i token per NPM, PyPI, CircleCI, AWS, GCP, Docker, Azure, HashiCorp, KubernetesK8s e altri servizi (analizzando più di 140 percorsi file, tipo ~\/ .npmrc), e analizzava anche la memoria (tramite \/proc\/\/mem) dell'ambiente GitHub Actions alla ricerca di token e credenziali.
Se il worm trovava un token per accedere al catalogo NPM, pubblicava automaticamente nuovi rilasci dannosi per i pacchetti in fase di sviluppo nell'ambiente corrente, infettando l'albero delle dipendenze. A differenza del worm precedentemente identificato Shai-Hulud 2.0 in ChainDrop è stata implementata la tecnica EtherHiding per ricevere comandi di gestione tramite il blockchain pubblico di Ethereum, utilizzando la crittografia per nascondere i dati sensibili trasmessi al server degli attaccanti e garantendo l'inserimento nei file di configurazione di Claude Code, VS Code e GitHub Copilot per consolidare la presenza nel sistema.
L'attacco è iniziato con la compromissione del processo di generazione dei rilasci basato su GitHub Actions per il pacchetto keyv, che conta 154 milioni di download a settimana ed è utilizzato come dipendenza in 1703 pacchetti. Gli attaccanti hanno creato una nuova versione 6.0.0, inserendo codice dannoso, e l'hanno pubblicata utilizzando il meccanismo di "Trusted Publishers" e una corretta certificazione SLSA. Dopo la pubblicazione, il worm ha infettato molti pacchetti dipendenti da keyv e, in catena, ha iniziato a colpire le dipendenze indirette.
Tra i pacchetti più popolari colpiti dal worm che ha pubblicato rilasci dannosi per essi ci sono:
- flat-cache 6.1.24 (149.8 milioni di download a settimana);
- file-entry-cache 11.1.6 (147.5 milioni);
- cacheable-request 13.0.20 (33.9 milioni);
- @cacheable/utils 2.5.1 (8.7 milioni);
- cacheable 2.5.1 (7.8 milioni);
- @cacheable/memory 2.2.1 (7.1 mln);
- cache-manager 7.2.10 (4.2 mln);
- @cacheable/node-cache 3.1.2 (1.5 mln).
Fonte: linux.org.ru
