CSIRT Toscana

Supply Chain Attack: compromissione del pacchetto NPM Axios (BL01/260331/CSIRT-ITA)

Data:
31 Marzo 2026

Sintesi

È stata recentemente rilevata la compromissione della supply chain che ha interessato Axios , libreria JavaScript largamente utilizzata che fa da client HTTP per effettuare richieste verso API e servizi web. L’attacco, dovuto alla compromissione ( hijacking ) dell’account di un’utenza maintainer , ha permesso la pubblicazione sul registro NPM di versioni opportunamente predisposte, che integravano un malware dropper. Tali versioni sono progettate per installare un Remote Access Trojan (RAT) su sistemi Windows, macOS e Linux.

Tipologia

Remote Code Execution

Descrizione dell’incidente

L’evento è scaturito dalla compromissione (hijacking) dell’account NPM di uno dei maintainer del progetto Axios . L’attaccante, dopo aver acquisito il controllo dell’utenza e averne modificato l’indirizzo e-mail (passando a un provider crittografato ProtonMail ), ha pubblicato manualmente, sul registro NPM, le versioni malevole 1.14.1 (per il ramo stabile 1.x) e 0.30.4 (per il ramo legacy 0.x). Tale operazione ha permesso l’elusione della pipeline di rilascio automatizzata su GitHub Actions e i relativi controlli basati su OIDC (OpenID Connect Trusted Publishing) , infrangendo la catena di fiducia tra codice sorgente verificato e pacchetto distribuito.

Vettore di Infezione e Payload

Si evidenzia che la scelta dell’attaccante è stata quella di non alterare il codice sorgente del pacchetto Axios, utilizzando una tecnica di shadow injection che ha permesso di eludere i controlli di analisi statica (SAST) e le revisioni manuali dei diff tra le versioni.

Nel dettaglio all’interno di tali versioni, l’attaccante ha iniettato una singola dipendenza malevola: plain-crypto-js@4.2.1 , che sfrutta la funzionalità automatica di postinstall di NPM per lanciare istantaneamente uno script ( setup.js ) durante l’installazione della libreria.

Lo script, fortemente offuscato per eludere l’analisi dinamica, contatta un server di Command and Control (C2) identificando il sistema operativo della vittima e scaricando payload specifici di secondo livello, per Windows, macOS o Linux.

Completata l’installazione silente del Remote Access Trojan (RAT), il malware avvia routine di auto-eliminazione del dropper e ripristina lo stato originale dei file di configurazione del progetto (come package.json e i file di lock). Rimuovendo ogni riferimento alla dipendenza malevola plain-crypto-js dalla directory node_modules , il malware rende l’infezione invisibile ai comuni strumenti di auditing locale, garantendo la persistenza silenziosa a livello di sistema operativo.

La diffusione delle versioni compromesse è stata interrotta tramite l’intervento del registro NPM, che ha provveduto al “ritiro forzato” (unpublish) delle versioni malevole di Axios (1.14.1 e 0.30.4). Contestualmente, il pacchetto plain-crypto-js è stato rimosso e sostituito con un security stub [1] per inibirne il download e l’esecuzione automatica.

Potenziali Impatti

1. Data Breach: esfiltrazione di variabili d’ambiente, file di configurazione cloud (AWS, Azure, GCP), token di autenticazione e chiavi SSH.

2. Compromissione CI/CD: l’infezione di un runner permette all’attaccante di iniettare codice malevolo in altri progetti o manipolare gli artefatti finali (immagini Docker, binari), estendendo la compromissione alla supply chain dei propri clienti.

3. Lateral Movement: impiego delle informazioni carpite per ottenere l’accesso a risorse interne, database o segmenti di rete protetti, eludendo eventuali controlli grazie alla fiducia intrinseca degli ambienti di sviluppo.

4. Rischio Persistenza: la semplice eliminazione della directory node_modules o la rimozione del pacchetto Axios non elimina l’infezione, che rimane attiva e silente come processo di sistema indipendente.

Prodotti e versioni affette

  • axios – stable (1.x), versione 1.14.1
  • axios – legacy (0.x), versione 0.30.4

Pacchetti correlati

  • @shadanai/openclaw, versioni 2026.3.28-2, 2026.3.28-3, 2026.3.31-1 e 2026.3.31-2
  • @qqbrowser/openclaw-qbot, versione 0.0.130

Azioni di mitigazione

Gli utenti e le organizzazioni possono far fronte a questa tipologia di attacchi valutando l’implementazione delle misure di mitigazione raccomandate riportate di seguito:

  • Audit : verificare nelle dipendenze ( package-lock.json , o altri) la presenza delle versioni compromesse 1.14.1 o 0.30.4 ;
  • Downgrade e Cache : forzare il ritorno a una versione stabile (ad esempio 1.7.9) e svuotare la cache di sistema con il comando npm cache clean –force (o comandi equivalenti);
  • Rotazione di Credenziali e Token : revocare e rigenerare chiavi API, token cloud (AWS/Azure/GCP) e chiavi SSH presenti sulle macchine o nei runner CI/CD coinvolti;
  • Bonifica Host : considerare ogni sistema che ha eseguito l’installazione del pacchetto in oggetto, come compromesso. La persistenza del malware a livello di sistema operativo richiede la formattazione o il ripristino dell’immagine degli host (laptop o server di build) interessati.

Per verificare l’eventuale compromissione dei propri sistemi si raccomanda di valutare l’utilizzo dei meccanismi di rilevamento riportati al seguente link , nella sezione “ Am I Affected? ”.

Infine, si raccomanda di valutare l’implementazione sui propri apparati di sicurezza degli Indicatori di Compromissione (IoC) [2] presenti nei link disponibili nella sezione Riferimenti.

  1. Security Stub: pacchetto segnaposto (placeholder) privo di codice funzionale, pubblicato dai gestori del registro NPM in sostituzione di un pacchetto rimosso per motivi di sicurezza. Lo scopo dello stub è inibire il download della versione malevola e generare un errore o un avviso di sicurezza esplicito qualora un sistema tenti di risolvere tale dipendenza, impedendo così la propagazione del malware e l’esecuzione di script dannosi (come i postinstall) legati al pacchetto originale.
  2. Per definizione, non tutti gli indicatori di compromissione sono malevoli. Questo CSIRT non ha alcuna responsabilità per l’attuazione di eventuali azioni proattive (es. inserimento degli IoC in blocklist) relative agli indicatori forniti. Le informazioni contenute in questo documento rappresentano la migliore comprensione della minaccia al momento del rilascio.

Riferimenti

Change log

Versione Note Data
1.0 Pubblicato il 31-03-2026 31/03/2026

Il presente articolo è un prodotto originale di csirt.gov.it, riproposto qui a solo scopo di aumentarne la visibilità. Può essere visualizzato in versione originale al seguente link

Ultimo aggiornamento

31 Marzo 2026, 16:26