Axios è uno strumento talmente diffuso nell’ecosistema JavaScript che la sua presenza in un progetto web viene data quasi per scontata. Gestisce le richieste HTTP tra client e server (GET, POST, PUT, DELETE) con un’interfaccia semplice e affidabile che ne ha fatto uno standard di fatto sia nel browser che in Node.js. Proprio questa ubiquità lo rende un bersaglio di altissimo valore per chi vuole colpire la supply chain del software, tanto che compromettere un pacchetto del genere significa potenzialmente toccare una quota enorme del codice in produzione globale.

Nella notte tra il 30 e il 31 marzo 2026, qualcuno ha sfruttato esattamente questa leva. Due versioni malevole di Axios (axios@1.14.1 e axios@0.30.4) sono state pubblicate sul registro npm a distanza di meno di un’ora l’una dall’altra, rispettivamente alle 00:21 e alle 01:00 UTC. Le società di sicurezza Endor Labs, Socket, Aikido e StepSecurity hanno rilevato e analizzato l’incidente nelle ore successive.

Come è stato possibile pubblicare versioni false?

L’accesso al pacchetto è stato ottenuto compromettendo l’account npm di Jason Saayman, il principale maintainer di Axios. Secondo la community OpenSourceMalware, l’attaccante ha poi preso il controllo anche dell’account GitHub associato, modificandone l’indirizzo email in ifstap@proton.me e rimuovendo una segnalazione che un collaboratore del progetto stava tentando di pubblicare per avvisare gli altri sviluppatori.

Un segnale d’allarme era già leggibile nei metadata delle pubblicazioni stesse. Entrambe le versioni malevole mancavano infatti della verifica automatica OIDC sull’origine del pacchetto e non corrispondevano ad alcun commit su GitHub, due anomalie che avrebbero dovuto far scattare un avviso immediato nei sistemi di monitoraggio. Il periodo di esposizione è invece durato quasi tre ore prima che le versioni venissero rimosse.

La catena d’infezione: elegante, modulare, multipiattaforma

axios

Crediti: Shutterstock

L’attaccante non ha modificato il codice di Axios, ma ha inserito una dipendenza malevola (plain-crypto-js@^4.2.1) nel file package.json. Durante l’installazione del pacchetto, questa dipendenza esegue automaticamente uno script post-install che lancia un dropper offuscato (setup.js), il quale contatta un server di comando e controllo (C2) all’indirizzo sfrclak.com per scaricare un payload specifico per il sistema operativo rilevato.

Su Windows, la sequenza sfrutta VBScript e PowerShell attraverso una finestra di Prompt nascosta, copia PowerShell in %PROGRAMDATA%\wt.exe per eludere il rilevamento e garantire la persistenza al riavvio. Su macOS, AppleScript scarica un binario in /Library/Caches/com.apple.act.mond, lo rende eseguibile e lo avvia in background. Su Linux, invece, il dropper recupera un payload Python salvato in /tmp/ld.py e lo esegue con il comando nohup per renderlo resistente alla chiusura del terminale.

In tutti e tre i casi, il risultato finale è l’installazione di un Remote Access Trojan capace di eseguire comandi remoti, enumerare directory, estrarre ed eseguire binari codificati in base64 e mantenere la persistenza sul sistema compromesso. Una volta completata l’infezione, il dropper cancella se stesso, elimina il package.json modificato e lo sostituisce con una copia pulita per ostacolare le analisi forensi.

Un’operazione pianificata

StepSecurity ha sottolineato che la dipendenza malevola era stata preparata e caricata 18 ore prima della pubblicazione delle versioni false di Axios, un dettaglio che esclude un attacco improvvisato. La differenziazione dei payload per sistema operativo e l’autodistruzione degli artefatti dopo l’infezione sono ulteriori indicatori di un’operazione strutturata con precisione.

John Hultquist, chief analyst del Google Threat Intelligence Group, ha attribuito l’attacco a un attore nordcoreano tracciato internamente come UNC1069, specializzato nel colpire exchange di criptovalute, sviluppatori software in ambito finanziario, aziende tecnologiche e fondi di venture capital. Il collegamento con BlueNoroff (il sottogruppo Lazarus focalizzato su attacchi a motivazione finanziaria) rimane una pista concreta, ma non ancora confermata ufficialmente al momento della pubblicazione.

Charles Carmakal, CTO di Mandiant, ha messo in guardia dal considerare questo incidente isolato, visto che l’attacco si estende a tutti i pacchetti che hanno Axios come dipendenza, estendendosi potenzialmente a un numero enorme di progetti.

Nei sistemi che hanno installato axios@1.14.1, axios@0.30.4 o qualsiasi versione di plain-crypto-js, è necessario considerare l’ambiente compromesso, ruotare immediatamente le credenziali ed eseguire un’analisi forense approfondita. I team di sicurezza dovrebbero verificare che Axios sia aggiornato alle versioni sicure 1.14.0 o 0.30.3, o retrocedere a una versione precedente confermata come integra. Gli indicatori di compromissione sono disponibili attraverso le analisi pubblicate da Endor Labs, Socket, Aikido e StepSecurity.

(Immagine in apertura: Shutterstock)