ChainDrop: Malware NPM che si auto-riproduce e infetta 1,300+ Package
L’attacco
A luglio 2026, ricercatori di sicurezza hanno scoperto una campagna massiva di malware auto-propagante su npm (Node Package Manager), il repository di pacchetti JavaScript più grande al mondo.
Il malware, chiamato ChainDrop, è particolare perché non è un attacco “one-shot”: è un worm: quando un package è compromesso e viene eseguito, il malware automaticamente:
- Ruba credenziali npm dell’utente
- Accede all’account dell’utente su npm
- Compromette altri package posseduti da quell’utente
- Si propaga ad altri package sulla piattaforma
Risultato: 1,300+ package compromessi, con 2 miliardi di download mensili complessivi.
Come funziona la self-propagation
graph TD
A["Utente installa package compromesso"] --> B["ChainDrop si esegue durante npm install"]
B --> C["Ruba ~/.npmrc<br/>(contiene token npm)"]
C --> D["Utilizza token per accedere<br/>all'account npm dell'utente"]
D --> E["Elenca tutti i package<br/>posseduti dall'utente"]
E --> F["Compromette versione latest<br/>di ogni package"]
F --> G["Pubblica versione malevola<br/>su npm registry"]
G --> H["Quando altri scaricano il package<br/>ChainDrop si propaga ulteriormente"]
H --> I["Il ciclo continua:<br/>1,300+ package infetti"]
Timeline di scoperta
| Fase | Timeline | Dettagli |
|---|---|---|
| Infezione iniziale | Metà luglio | Un o pochi package inizialmente compromessi |
| Propagazione esplosiva | 20-26 luglio | ChainDrop si auto-propaga; 100+ → 500+ → 1,300+ package |
| Rilevamento | 28 luglio | Ricercatori di sicurezza notano pattern anomalo di package updates |
| Disclosure | 30 luglio | npm e community notificati; advisory pubblico |
| Remediation | 31 luglio+ | npm revoca token compromessi; package rimossi/ripristinati |
La finestra di esposizione è stata circa 10 giorni, durante i quali ChainDrop ha infettato migliaia di developer machines.
Impatto: chi è stato colpito?
Con 2 miliardi di download mensili, ChainDrop ha potenzialmente raggiunto:
Tipo di sviluppatori:
- Sviluppatori frontend (React, Vue, Angular dipendono da centinaia di pacchetti)
- Sviluppatori backend Node.js
- DevOps engineers (package usati in CI/CD pipelines)
- Startup e aziende enterprise che usano npm
Paesi colpiti: Globale, npm ha utenti in 195+ paesi
Livello di criticità: Se ChainDrop è stato installato in una CI/CD pipeline, potrebbe aver compromesso:
- Source code repositories
- Build artifacts
- Credentials di deployment
- Infrastruttura cloud
Il payload: cosa fa ChainDrop
Oltre al furto di credenziali, ChainDrop:
- Rubare informazioni sensibili:
- Variabili d’ambiente (API keys, secrets, credentials)
- Contenuto di file home directory
- SSH keys private
- Git credentials
- Installare backdoor:
- Aggiungere crypto-miner all’infrastruttura compromessa
- Installare C2 beacon per accesso persistente
- Esfiltrare dati:
- Inviare stolen credentials a server controllato dall’attaccante
- Esfiltrare source code
- Auto-propagarsi:
- Come descritto sopra, compromettere altri package
npm response e mitigazione
npm ha:
- ✅ Revocato i token compromessi (invalidando le credenziali rubate)
- ✅ Rimosso le versioni malevole di 1,300+ package
- ✅ Ripristinato le versioni clean dai backup
- ✅ Publicato advisory sulla comunità
- ✅ Aumentato il monitoraggio per rilevare simili attacchi in futuro
Limiti della response:
- ❌ Il malware era stato installato su milioni di dev machines, il ripristino su npm non li pulisce
- ❌ Qualsiasi credenziale / secret esfiltrata è permanentemente compromessa: sviluppatori devono ruotarle tutti
- ❌ Qualsiasi artifact di build generato durante l’infezione potrebbe contenere malware
Cosa fare se sei stato esposto
Se hai installato npm packages tra il 20-28 luglio:
- Upgrade npm alla versione più recente
- Pulisci il tuo sistema:
-
Cerca processi strani (netstat -tulpn grep ESTABLISHED) - Controlla ~/.npmrc per modifiche non autorizzate
- Controlla ~/.ssh/id_rsa per accessi recenti
-
- Ruota tutti i secrets:
- npm token
- API keys (AWS, GitHub, etc.)
- SSH keys
- Credenziali database
- Rivedi i log:
- CI/CD logs per esecuzioni anomale
- Git logs per commit non autorizzati
- Accessi ai repository
Se gestisci build CI/CD:
- Rerun il build con npm registry pulita
- Revoca credenziali di deployment usate durante la finestra di infezione
- Ripubblica gli artifact (Docker images, compiled binaries, etc.)
Lezione: npm supply chain è vulnerabile
ChainDrop dimostra che il modello di npm (chiunque può pubblicare package, e milioni li scaricano di default) è un perfetto vettore per supply chain attack.
Il problema non è npm specificamente, è l’intera ecosistema dei package manager (pip per Python, RubyGems, NuGet, etc.):
- Fiducia implícita: quando installi un package, assumi che è safe
- Esecuzione automatica:
npm installesegue script automaticamente (package.json “install” script) - Scala massiccia: una singola infezione si propaga a milioni di developer
Conclusione
ChainDrop è una demonstrazione di perché la supply chain security è il nuovo perimetro di sicurezza. Non puoi più assumere che tutto il codice che scarichi da un repository pubblico è sicuro.
Per gli sviluppatori:
- ✅ Usa version pinning (specifica versione esatta, non “latest”)
- ✅ Revedi il source code di package critici (open source, quindi puoi)
- ✅ Usa tools di scanning per rilevare package malevoli (npm audit, Snyk)
- ✅ Separa CI/CD credentials da dev environment
Per le organizzazioni:
- ✅ Implementa supply chain verification (Software Bill of Materials, signed artifacts)
- ✅ Usa private npm registries per controllare quali package sono consentiti
- ✅ Monitora l’attività di CI/CD pipeline anomala
ChainDrop non è il primo attacco npm supply chain, e non sarà l’ultimo.