È stata registrata un'attacco di phishing contro librerie JavaScript, in cui è stato inviato, a nome del servizio NPM, un messaggio che notificava la necessità di confermare la propria email. L'attacco ha consentito ai malintenzionati di ottenere i token NPM associati a uno dei principali progetti JavaScript e di rilasciare aggiornamenti con codice dannoso per cinque pacchetti NPM, che in totale hanno accumulato circa 100 milioni di download a settimana.
Il messaggio inviato era stilizzato come le tipiche notifiche NPM inviate dall'indirizzo "support@npmjs.org", ma il dominio riportato come link era "npnjs.com" invece di "npmjs.com" (la terza lettera «n» anziché «m»). Gli aggressori hanno sfruttato un effetto psicologico, per cui il cervello, anticipando un risultato atteso, non nota piccole distorsioni, come la sostituzione di lettere simili o il cambio nell'ordine delle lettere in una parola. Cliccando sul link si apriva una copia esatta del sito npmjs.com (probabilmente era stato impostato un proxy che intercettava il token di accesso).

Durante l'attacco sono state generate nuove versioni dei pacchetti:
- eslint-config-prettier: 8.10.1, 9.1.1, 10.1.6, 10.1.7.
- eslint-plugin-prettier: 4.2.2, 4.2.3.
- synckit: 0.11.9.
- @pkgr/core: 0.2.8.
- napi-postinstall: 0.3.1.
Negli aggiornamenti creati è stato aggiunto codice dannoso per attaccare gli utenti che utilizzano la piattaforma Windows. Le modifiche apportate caricavano la libreria node-gyp.dll, contenente funzionalità per l'esecuzione remota di comandi nel sistema.
Il mantenitore ha notato di essere diventato vittima di phishing circa un'ora dopo la ricezione della prima segnalazione riguardo alla pubblicazione di versioni sospette. Ha immediatamente revocato il token di accesso, cambiato le password e contrassegnato le versioni problematiche come obsolete per prevenire il download da parte dei sistemi di build automatizzati, e ha inviato una richiesta di rimozione delle versioni problematiche dal repository al supporto NPM.
Non è specificato quante persone siano riuscite a scaricare le versioni dannose (ad esempio, la versione dannosa del pacchetto eslint-plugin-prettier è rimasta nel repository per circa due giorni). Nella settimana scorsa, il pacchetto eslint-config-prettier ha registrato 30 milioni di download ed è stato utilizzato come dipendenza da 11.762 pacchetti, il pacchetto eslint-plugin-prettier ha avuto 21 milioni di download (8.468 pacchetti dipendenti), synckit ha registrato 18 milioni, @pkgr/core 16 milioni e napi-postinstall 10 milioni.
Fonte: opennet.ru
