Un grave incidente di sicurezza ha colpito la comunità degli sviluppatori JavaScript: la popolare libreria Axios, utilizzata da milioni di sviluppatori per effettuare richieste HTTP, è stata compromessa. Un attacco sofisticato ha permesso a degli hacker di pubblicare versioni infette della libreria nel registro npm, diffondendo un Trojan capace di colpire sistemi macOS, Windows e Linux.
Le versioni compromesse, axios@1.14.1 e axios@0.30.4, sono rimaste disponibili per il download per un breve periodo, circa due o tre ore. Durante questo lasso di tempo, chiunque abbia scaricato e installato queste versioni potrebbe aver compromesso il proprio sistema. Gli esperti di sicurezza raccomandano di considerare compromesse tutte le macchine su cui sono state installate queste versioni.
L'attacco, come riportato da Tom's Hardware, è stato scoperto il 30 marzo ed è stato realizzato attraverso una dipendenza nascosta chiamata plain-crypto-js@4.2.1. Questo pacchetto era in realtà una versione contraffatta della libreria CryptoJS, una libreria legittima che implementa algoritmi crittografici standard in JavaScript. La tecnica utilizzata è un classico esempio di "supply chain attack", dove un componente apparentemente sicuro viene sfruttato per introdurre codice malevolo.
L'installazione del pacchetto malevolo innescava uno script che scaricava un virus adattato ai diversi sistemi operativi. Secondo gli analisti di StepSecurity, il codice dannoso si connetteva a un server di controllo (sfrclak.com) in tempi brevissimi, appena 1,1 secondi dopo l'inizio dell'installazione del pacchetto npm. Questo dimostra la rapidità e l'efficacia dell'attacco.
Il Trojan si comportava in modo diverso a seconda del sistema operativo. Su macOS, si installava nella directory /Library/Caches/com.apple.act.mond. Su Windows, copiava PowerShell in %PROGRAMDATA%wt.exe. Su Linux, scaricava una versione Python del RAT (Remote Access Trojan) in /tmp/ld.py. La versatilità del malware e la sua capacità di adattarsi ai diversi ambienti lo rendono particolarmente pericoloso.
Considerando che la libreria Axios viene scaricata circa 100 milioni di volte a settimana, l'incidente ha creato una potenziale minaccia per un'enorme platea di sviluppatori e aziende. La vasta diffusione della libreria ha amplificato notevolmente l'impatto dell'attacco.
La preparazione all'attacco è stata meticolosa e ha richiesto circa 18 ore. Inizialmente, gli hacker hanno caricato una versione pulita di plain-crypto-js per creare una cronologia di pubblicazioni e ingannare i sistemi di controllo. Successivamente, hanno sostituito la versione pulita con quella contenente il Trojan. A quel punto, sfruttando l'account compromesso del manutentore, Jason Saayman, hanno pubblicato le versioni infette di Axios a distanza di soli 39 minuti l'una dall'altra. Dopo la diffusione del malware, lo script si auto-eliminava per nascondere le tracce, rendendo più difficile la scoperta dell'attacco.
Le versioni infette sono rimaste attive per circa tre ore prima che l'amministrazione di npm le rimuovesse e bloccasse la dipendenza malevola. È importante sottolineare che queste versioni sono state pubblicate al di fuori del normale flusso di lavoro CI/CD, il che spiega perché non sono mai apparse nel repository ufficiale di Axios su GitHub. Questo evidenzia l'importanza di proteggere adeguatamente gli account dei manutentori e di monitorare attentamente le pubblicazioni nel registro npm.
Grandi aziende del settore IT, tra cui Snyk, Wiz e Vercel, hanno immediatamente diramato avvisi e raccomandazioni, suggerendo di considerare compromesse le macchine coinvolte e di cambiare immediatamente tutte le credenziali di accesso. La rapidità di reazione e la collaborazione tra le aziende sono fondamentali per mitigare i danni di un attacco di questa portata.
Questo incidente sottolinea la crescente importanza della sicurezza della supply chain software. Gli sviluppatori devono prestare massima attenzione alle dipendenze che utilizzano nei loro progetti e adottare misure di sicurezza adeguate per proteggersi da attacchi simili. L'utilizzo di strumenti di analisi delle dipendenze, l'adozione di pratiche di sviluppo sicuro e la vigilanza costante sono essenziali per garantire la sicurezza delle applicazioni.

