Una grave compromissione della supply chain npm colpisce il pacchetto node-ipc con un backdoor stealer inserito nelle versioni 9.1.6, 9.2.3 e 12.0.1. I ricercatori di Socket e StepSecurity hanno identificato il 14 maggio 2026 un payload altamente offuscato capace di rubare credenziali cloud, chiavi SSH e token infrastrutturali da sviluppatori e pipeline CI/CD. L’attaccante ha preso il controllo dell’account maintainer inattivo “atiertant” sfruttando un dominio email scaduto per reimpostare la password e pubblicare versioni malevole del pacchetto su npm. Il malware si attiva semplicemente attraverso il require del modulo in ambiente CommonJS, senza usare lifecycle hooks o script di installazione tradizionali. Questa tecnica aggira molti sistemi di difesa automatici utilizzati dagli scanner di sicurezza npm. Il payload enumera file sensibili, comprime i dati raccolti e li esfiltra tramite HTTPS e query DNS TXT verso server di comando e controllo remoti. Le versioni pulite più recenti restano 9.2.1 e 12.0.0. Gli sviluppatori devono rimuovere immediatamente i pacchetti compromessi e ruotare tutte le credenziali potenzialmente esposte. L’incidente conferma ancora una volta quanto la supply chain open source rappresenti uno dei punti più vulnerabili dell’intero ecosistema JavaScript.
Cosa leggere
L’attaccante compromette l’account maintainer inattivo di node-ipc
L’attacco sfrutta un intervallo di circa 21 mesi dall’ultima release legittima del pacchetto avvenuta nell’agosto 2024. L’account “atiertant” figurava tra i maintainer di node-ipc ma non aveva mai pubblicato aggiornamenti ufficiali per il progetto. L’attaccante ha registrato il dominio email scaduto atlantis-software.net, ottenendo così la possibilità di reimpostare la password dell’account npm associato. Una volta preso il controllo del maintainer secondario, il threat actor ha pubblicato le versioni compromesse senza modificare gli script di lifecycle del pacchetto. Questo dettaglio risulta fondamentale perché molti strumenti di sicurezza controllano principalmente hook di installazione come preinstall e postinstall. Il payload malevolo viene invece inserito direttamente come Immediately Invoked Function Expression alla fine del file node-ipc.cjs, garantendo esecuzione automatica al caricamento del modulo. La versione 12.0.1 include inoltre un sistema di targeting basato su hash SHA-256 del percorso del modulo principale. Solo determinati sistemi attivano completamente il payload. Le versioni 9.x invece eseguono il malware indiscriminatamente su qualsiasi macchina che carichi il pacchetto.
Il payload di node-ipc usa un malware stealer altamente offuscato

Il malware si presenta come un blocco di circa 80 kilobyte altamente offuscato all’interno del bundle CommonJS. All’esecuzione il codice crea un processo figlio detached utilizzando la variabile di ambiente __ntw=1 per isolare le attività malevole dal processo principale dell’applicazione Node.js. Il payload enumera immediatamente le caratteristiche del sistema host raccogliendo piattaforma, release del sistema operativo, architettura CPU, hostname e output del comando uname -a. Successivamente avvia una scansione estesa del filesystem cercando oltre 90 pattern di file sensibili. Tra i target figurano credenziali AWS, configurazioni Azure, token Google Cloud, chiavi SSH, file Kubernetes, configurazioni Terraform, token GitHub CLI, file .env, database password e persino elementi collegati al portachiavi macOS. Il malware evita directory come node_modules e .git e ignora file superiori ai 4 megabyte per limitare il rumore operativo. I dati raccolti vengono rinominati, compressi in archivi TAR GZIP e accompagnati da metadati come uname.txt ed envs.txt. L’intero processo avviene quasi interamente in memoria per ridurre tracce persistenti sul sistema infetto.
node-ipc usa targeting selettivo con hash SHA-256

Uno degli aspetti più sofisticati della compromissione riguarda il sistema di targeting implementato nella versione 12.0.1. Il payload decodifica una configurazione base-16 che contiene l’indirizzo del server C2 e una chiave HMAC utilizzata per verificare l’integrità delle comunicazioni. Prima di procedere all’esfiltrazione, il malware calcola un hash SHA-256 del percorso del modulo principale dell’applicazione Node.js. Solo se il risultato corrisponde a valori predefiniti il payload si attiva completamente. Questo comportamento rende il malware praticamente invisibile su sistemi non targetizzati e complica enormemente l’analisi automatica in sandbox e ambienti di ricerca. Gli esperti ritengono che l’attaccante conoscesse preventivamente il percorso esatto del progetto vittima e abbia precalcolato gli hash necessari per l’attivazione selettiva. La tecnica permette di limitare l’esposizione pubblica della campagna e ridurre le probabilità di rilevamento precoce. Le versioni 9.x invece non implementano questo controllo e risultano aggressive verso qualsiasi ambiente che esegua il require del pacchetto compromesso.
Il malware esfiltra dati tramite HTTPS e DNS TXT stealth
Il backdoor utilizza due differenti canali di esfiltrazione per inviare i dati rubati agli operatori dell’attacco. Il primo consiste in richieste HTTPS POST verso il dominio sh.azurestaticprovider.net, progettato per imitare un servizio Azure legittimo. L’indirizzo IP reale del server punta a 37.16.75.69. Ogni richiesta include un hash HMAC-SHA256 generato con la chiave hard-coded qZ8pL3vNxR9wKmTyHbVcFgDsJaEoUi. Il secondo canale sfrutta query DNS TXT dirette verso il dominio bt.node.js. Prima di eseguire le query, il malware modifica dinamicamente il resolver DNS di sistema puntando a servizi pubblici come 1.1.1.1 o 8.8.8.8 per ottenere l’indirizzo IP del server C2. Successivamente reindirizza tutte le richieste direttamente verso l’infrastruttura malevola. Questo approccio evita i log dei resolver aziendali e rende l’esfiltrazione molto difficile da rilevare per i sistemi di monitoraggio tradizionali. I dati vengono spezzati in chunk esadecimali e trasmessi tramite prefissi specifici come xh., xd. e xf.. Il malware supporta inoltre fino a 160 richieste parallele per velocizzare il trasferimento delle informazioni rubate.
Gli ambienti CI/CD diventano bersagli immediati dell’attacco npm

Il pacchetto node-ipc viene utilizzato da migliaia di applicazioni Node.js per la comunicazione tra processi. Questo trasforma l’attacco in una minaccia estremamente ampia per sviluppatori individuali, startup e grandi aziende. Molti progetti scaricano automaticamente le versioni compromesse attraverso range semver flessibili come ^9 o ^12, installando inconsapevolmente il malware durante build e deployment automatici. Gli ambienti di sviluppo locali e soprattutto le pipeline CI/CD risultano bersagli ideali perché spesso contengono credenziali cloud privilegiate, token GitHub, accessi Kubernetes e chiavi di produzione. L’attaccante può quindi ottenere accesso a infrastrutture enterprise, repository privati e servizi cloud attraverso un semplice require del pacchetto compromesso. La natura stealth dell’esfiltrazione rende il rilevamento particolarmente difficile. Molti sistemi di monitoraggio non identificano traffico DNS TXT anomalo o connessioni HTTPS verso domini apparentemente legittimi. Le versioni 9.x risultano particolarmente pericolose perché completamente fabbricate e mai esistite nella storia legittima del progetto. Questo dettaglio amplia notevolmente il raggio operativo dell’attacco nella supply chain npm.
Gli sviluppatori devono rimuovere immediatamente le versioni compromesse
Le raccomandazioni di mitigazione risultano estremamente urgenti. Gli sviluppatori devono verificare immediatamente la presenza di node-ipc nei propri progetti e rimuovere le versioni 9.1.6, 9.2.3 e 12.0.1. Le versioni considerate pulite restano 9.2.1 e 12.0.0. Dopo la rimozione del pacchetto è necessario ruotare tutte le credenziali potenzialmente esposte comprese chiavi cloud, token GitHub, accessi Kubernetes e segreti Terraform. Gli amministratori devono controllare i log delle pipeline CI/CD per identificare attività sospette e verificare eventuali operazioni anomale sugli account IAM cloud. Bloccare il traffico verso sh.azurestaticprovider.net e bt.node.js rappresenta una misura temporanea efficace per limitare ulteriori esfiltrazioni. Gli sviluppatori che utilizzano strumenti automatici di scanning devono inoltre rigenerare le lockfile npm e pulire completamente le cache locali del package manager. Socket e StepSecurity hanno già aggiornato i rispettivi threat feed classificando ufficialmente le versioni malevole del pacchetto. L’ecosistema npm viene ora spinto a rivedere le policy relative ai maintainer inattivi e ai takeover tramite domini email scaduti.
La supply chain npm continua a essere il punto debole dell’ecosistema JavaScript
L’incidente di node-ipc conferma ancora una volta quanto la supply chain npm rappresenti un rischio sistemico per l’intero ecosistema JavaScript. I pacchetti dormienti ma molto scaricati costituiscono target ideali per operazioni di takeover silenzioso. In questo caso l’attacco non ha richiesto la compromissione diretta dell’infrastruttura dell’autore originale riaevangelist, ma soltanto il controllo di un maintainer secondario inattivo. La tecnica di iniezione nel bundle CommonJS senza lifecycle hooks dimostra inoltre un livello di sofisticazione superiore rispetto alle tradizionali campagne npm malevole. L’utilizzo combinato di esfiltrazione HTTPS e DNS TXT evidenzia una chiara volontà di aggirare i moderni sistemi di monitoraggio enterprise. Gli sviluppatori devono adottare policy più rigide di version pinning e verificare costantemente l’integrità dei pacchetti open source utilizzati nelle pipeline software. Tool come Socket e StepSecurity diventano sempre più essenziali per il monitoraggio continuo della supply chain. L’episodio del maggio 2026 dimostra che anche librerie storiche e apparentemente stabili possono trasformarsi improvvisamente in vettori di compromissione quando un maintainer secondario viene abbandonato o compromesso.
Iscriviti alla Newsletter
Non perdere le analisi settimanali: Entra nella Matrice Digitale.
Matrice Digitale partecipa al Programma Affiliazione Amazon EU. In qualità di Affiliato Amazon, ricevo un guadagno dagli acquisti idonei. Questo non influenza i prezzi per te.








