parser rat windows typosquatting npm

Pacchetto npm postcss-minify-selector-parser distribuisce un RAT Windows tramite PowerShell e Python

La sicurezza della supply chain software continua a rappresentare uno dei principali fronti di attacco contro sviluppatori e organizzazioni. Un nuovo caso individuato nel repository npm mostra come un pacchetto apparentemente innocuo possa nascondere una catena di compromissione estremamente sofisticata. Il pacchetto postcss-minify-selector-parser sfrutta infatti tecniche di typosquatting per impersonare strumenti legittimi dell’ecosistema PostCSS e distribuire un RAT per Windows attraverso una sequenza multi-stadio che coinvolge codice JavaScript cifrato, script PowerShell, componenti VBScript e un runtime Python compilato con Nuitka. L’attacco dimostra ancora una volta come la fiducia riposta nelle dipendenze open source possa trasformarsi in una superficie di compromissione estremamente efficace quando i controlli di integrità risultano insufficienti.

Il typosquatting colpisce l’ecosistema PostCSS

Il pacchetto malevolo sfrutta un nome attentamente studiato per apparire credibile agli occhi degli sviluppatori. postcss-minify-selector-parser richiama direttamente il popolare pacchetto postcss-selector-parser, componente utilizzato da numerosi strumenti per la manipolazione e l’ottimizzazione dei fogli di stile CSS. La presenza del prefisso “minify” rende il nome plausibile e coerente con le convenzioni di denominazione utilizzate all’interno dell’ecosistema PostCSS. Questo approccio aumenta significativamente la probabilità che il pacchetto venga installato accidentalmente durante attività di sviluppo, aggiornamenti di dipendenze o processi automatizzati di build. A rendere l’inganno ancora più convincente contribuisce il fatto che il pacchetto malevolo dichiari una dipendenza dal modulo legittimo, rafforzando l’apparenza di autenticità durante le verifiche superficiali.

Altri pacchetti collegati ampliano la superficie di attacco

L’analisi ha evidenziato che l’operazione non si limita a un singolo pacchetto. Lo stesso publisher risulta associato anche a moduli come postcss-minify-selector e aes-decode-runner-pro, tutti caratterizzati da una struttura simile e dalla capacità di convergere verso lo stesso payload finale. Questa strategia aumenta la probabilità di successo dell’attacco, distribuendo la minaccia attraverso più punti di ingresso all’interno del registro npm. L’utilizzo di nomi che richiamano librerie esistenti o funzionalità comunemente utilizzate dagli sviluppatori consente agli attaccanti di ampliare il bacino di potenziali vittime e ridurre la probabilità che i pacchetti vengano immediatamente identificati come sospetti.

Un blob AES nasconde il primo stadio del malware

Una volta installato il pacchetto, l’infezione inizia immediatamente. Il file package.json indica come entry point il modulo index.js, che richiama automaticamente il file src/config/defaults.js. All’interno di quest’ultimo è presente un payload cifrato tramite AES-256-GCM, accompagnato dalla logica necessaria alla sua decodifica. L’utilizzo di una cifratura moderna e robusta permette agli attaccanti di nascondere efficacemente il codice malevolo ai sistemi di scansione statici e agli strumenti automatici di analisi delle dipendenze. Dopo la decodifica in memoria viene generato un secondo script JavaScript che svolge il ruolo di dropper, incaricato di preparare la fase successiva dell’infezione. Questo approccio multi-livello rende molto più difficile comprendere la reale natura del pacchetto semplicemente esaminandone il contenuto iniziale.

Il dropper avvia PowerShell con policy aggirate

image 683
Pacchetto npm postcss-minify-selector-parser distribuisce un RAT Windows tramite PowerShell e Python 4

Lo script JavaScript ottenuto dalla decodifica crea un file denominato settings.ps1 e lo esegue utilizzando PowerShell. Il comando impiega parametri come -NoProfile e -ExecutionPolicy Bypass, una combinazione frequentemente osservata nelle campagne malware perché consente di evitare restrizioni predefinite e ridurre la visibilità dell’esecuzione. A questo punto il malware abbandona temporaneamente il contesto Node.js e trasferisce il controllo all’ambiente PowerShell, sfruttando uno strumento già presente in Windows e generalmente autorizzato all’interno delle infrastrutture aziendali. Questa tecnica riduce la necessità di introdurre binari aggiuntivi nelle fasi iniziali e contribuisce a minimizzare gli indicatori di compromissione più evidenti.

Il downloader recupera il payload da un dominio ingannevole

Lo script PowerShell funge da downloader e recupera un archivio remoto utilizzando curl.exe. Il file viene scaricato dal dominio nvidiadriver.net, scelto chiaramente per richiamare il nome di un noto produttore di GPU e apparire legittimo durante controlli superficiali. Il contenuto viene salvato nella directory temporanea di Windows come archivio ZIP e successivamente estratto tramite Expand-Archive. Questa fase introduce nel sistema una serie di file necessari all’esecuzione dello stadio successivo. L’utilizzo di cartelle temporanee contribuisce a limitare le tracce permanenti lasciate sul disco nelle prime fasi dell’attacco, rendendo più complessa l’individuazione immediata dell’infezione.

Un bootstrap VBScript prepara l’ambiente Python

Dopo l’estrazione dell’archivio, il malware avvia wscript.exe per eseguire il file update.vbs. Questo componente rappresenta il ponte tra il downloader PowerShell e il runtime Python utilizzato dal RAT finale. Lo script estrae ulteriori file contenuti in un archivio secondario e avvia il processo chost.exe passando come parametro il file loader.py. L’aspetto interessante è che chost.exe non è altro che una copia rinominata di pythonw.exe, utilizzata per eseguire codice Python senza mostrare finestre console. Rinominando il processo, gli attaccanti riducono ulteriormente la probabilità che strumenti di monitoraggio basati su firme o controlli superficiali identifichino immediatamente la presenza di un interprete Python in esecuzione.

Nuitka viene utilizzato per nascondere il RAT

Annuncio

Il malware vero e proprio viene distribuito attraverso moduli Python compilati con Nuitka, una tecnologia che converte codice Python in binari nativi. All’interno dell’archivio sono presenti file come api.cp310-win_amd64.pyd, audiodriver.cp310-win_amd64.pyd, command.cp310-win_amd64.pyd, config.cp310-win_amd64.pyd, auto.cp310-win_amd64.pyd e util.cp310-win_amd64.pyd. La compilazione tramite Nuitka rende molto più difficile l’analisi del codice rispetto a normali script Python. Ogni modulo svolge una funzione specifica: gestione della comunicazione con il server remoto, raccolta di informazioni sul sistema, esecuzione di comandi, furto di credenziali e compressione dei dati destinati all’esfiltrazione. Questa struttura modulare consente agli operatori della minaccia di aggiornare o sostituire singoli componenti senza modificare l’intera infrastruttura malware.

Il RAT comunica con un server C2 dedicato

Una volta completata l’installazione, il malware stabilisce una connessione verso il server di comando e controllo all’indirizzo 95.216.92.207 sulla porta 8080. La comunicazione utilizza richieste HTTP POST cifrate tramite RC4, mentre l’integrità dei dati viene verificata attraverso checksum MD5. Sebbene RC4 sia considerato obsoleto in ambito crittografico moderno, continua a essere utilizzato in numerose famiglie malware grazie alla sua semplicità e rapidità di implementazione. Il RAT rimane in ascolto di istruzioni provenienti dal server remoto e può eseguire una vasta gamma di operazioni, dalla raccolta di informazioni di sistema fino all’esecuzione di comandi arbitrari. I dati raccolti vengono compressi in archivi generati direttamente in memoria prima di essere inviati all’infrastruttura controllata dagli attaccanti.

Il malware ruba credenziali da Google Chrome

Una delle funzionalità più pericolose riguarda il furto di credenziali memorizzate in Google Chrome. Il modulo dedicato accede ai file Local State e Login Data, interrogando direttamente la tabella logins del database SQLite utilizzato dal browser. Le informazioni recuperate comprendono URL di origine, nomi utente, password e timestamp associati alle credenziali salvate. Per ottenere le password in chiaro, il malware sfrutta Windows DPAPI insieme alle chiavi di cifratura utilizzate da Chrome, supportando sia schemi AES-GCM sia ChaCha20-Poly1305. Alcuni riferimenti nel codice suggeriscono inoltre l’utilizzo di tecniche avanzate che coinvolgono lsass.exe e il privilegio SeDebugPrivilege, tipicamente associati a operazioni di accesso a dati protetti all’interno del sistema operativo.

Persistenza e rilevamento di ambienti virtualizzati

Per mantenere il controllo sul sistema compromesso, il RAT crea una voce nella chiave di registro HKCU\Software\Microsoft\Windows\CurrentVersion\Run utilizzando il nome csshost. Questa configurazione garantisce l’esecuzione automatica del malware a ogni accesso dell’utente. Il codice implementa inoltre diversi controlli anti-analisi progettati per identificare ambienti virtualizzati. Attraverso query WMI, verifica parametri relativi a produttore, modello, numero seriale e caratteristiche hardware. Vengono inoltre esaminati i processi attivi e gli indirizzi MAC alla ricerca di indicatori associati a VMware, VirtualBox, KVM, QEMU e Hyper-V. Se viene rilevata la presenza di una macchina virtuale o di un ambiente di analisi, il comportamento del malware può essere modificato o interrotto per ostacolare le attività di reverse engineering.

La minaccia evidenzia i rischi della supply chain open source

Il caso di postcss-minify-selector-parser rappresenta un esempio particolarmente sofisticato di attacco alla supply chain software. L’utilizzo combinato di typosquatting, crittografia AES-256-GCM, downloader PowerShell, bootstrap VBScript, runtime Python nascosto e moduli compilati con Nuitka crea una catena di infezione complessa e difficile da analizzare. Per gli sviluppatori, l’episodio sottolinea l’importanza di verificare attentamente l’origine delle dipendenze, utilizzare sistemi di controllo dell’integrità e limitare l’installazione di pacchetti non verificati. Per i team di sicurezza, gli indicatori più rilevanti includono l’esecuzione di script PowerShell da directory temporanee, processi Python rinominati, download da domini sospetti e connessioni verso infrastrutture di comando e controllo non riconducibili a fornitori legittimi. In un panorama dove la fiducia nel software open source rappresenta una risorsa fondamentale, attacchi di questo tipo dimostrano quanto sia diventato cruciale affiancare alla velocità dello sviluppo moderne strategie di monitoraggio e difesa comportamentale.

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.

Torna in alto