MALFEX: il pacchetto npm “imgdecode” nasconde un loader di shellcode per Windows
SafeDep ha individuato "imgdecode", pacchetto npm legato alla campagna supply chain MALFEX. Una DLL scarica da GitHub un payload cifrato e lo inietta in dllhost.exe.

- Il pacchetto npm imgdecode, legato a MALFEX, nasconde un loader di shellcode in una DLL Windows
- 979 download; ancora disponibile su npm, ultima versione 1.0.3
- Colpiti gli sviluppatori Windows: rubati seed phrase, credenziali e dati dei browser
- Isolare i sistemi, ruotare le credenziali, spostare i fondi su nuovi wallet
Alcuni ricercatori hanno scoperto un nuovo pacchetto npm malevolo, “imgdecode”, collegato alla campagna di supply chain nota come MALFEX. Secondo l’analisi di SafeDep, il pacchetto è stato caricato il 30 settembre 2026 dall’utente “malfexteste8”. Risulta scaricato 979 volte ed è ancora disponibile su npm. L’ultima versione è la 1.0.3.
La campagna MALFEX
MALFEX è stata documentata per la prima volta da Checkmarx e CloudSEK. Un attore sconosciuto pubblica pacchetti malevoli su npm dal 6 agosto 2023 per compromettere sistemi Windows. Gli account usati sono cinque: malfexkkj, malfex_user, malfexteste2, malfexteste3 e malfexteste4.
Degli otto pacchetti identificati, tre fanno da loader per Overlord RAT. Altri tre (“cdn-img-fetch”, “img-to-native” e “native-runner”) lavorano insieme per scaricare ed eseguire uno stealer in Node.js. Una terza via di infezione usa un hook postinstall per contattare un server esterno e recuperare un binario non specificato.
L’autore reagisce alle segnalazioni e alle rimozioni da parte di npm. Entro due giorni ha pubblicato “runhelper” e “imgbundle” al posto di “native-runner” e “img-to-native”. Lo stesso giorno è comparsa la prima versione di “imgdecode”.
Come funziona imgdecode
Il pacchetto contiene un file JavaScript di nove righe che carica una DLL Windows, cioè un addon nativo di Node.js. Quando un programma chiama require('imgdecode') da una console Windows, la DLL tenta di scaricare da GitHub uno shellcode cifrato. Lo decifra e lo inietta in un nuovo processo dllhost.exe.
La DLL è a 64 bit, compilata con MSVC. Verifica di essere eseguita nel terminale di uno sviluppatore. Poi scarica il file “banner.jpg” dal repository “cavecrew/proj” e decifra il payload incorporato. Dopo la decifratura controlla i primi byte: se corrispondono a una firma JPEG o PNG, si ferma. Per SafeDep l’operatore potrebbe così disattivare il loader servendo contenuto che si decifra in un’immagine.
Le versioni hanno una storia diversa:
- la
1.0.0attende che “imgbundle” scriva un file incdn-img-fetch/.runtime/, poi lo legge e lo passa all’addon; - dalla
1.0.1la DLL scarica e decifra da sola il payload; - le
1.0.1e1.0.2richiamano ancora “imgbundle”; - la
1.0.3elimina la dipendenza e non richiede altri pacchetti MALFEX.
La catena dello stealer
Nella catena dello stealer nessun pacchetto usa un install hook. Il codice parte quando viene caricato “native-runner”. “cdn-img-fetch” scarica “banner.png” da GitHub ed estrae un blob cifrato. “img-to-native” lo decifra e lo salva come eseguibile Go. “native-runner” lo avvia e scarica lo stealer (“setup.exe”, detto movinlike) dall’indirizzo indicato negli IoC.
Il malware esegue controlli anti-analisi su macchine virtuali, sandbox e strumenti come Process Monitor e Wireshark. Poi raccoglie file con seed phrase e con estensioni .kdbx, .pem, .ppk e .env. Raccoglie anche dati da browser basati su Chromium, Discord, Telegram, wallet di criptovalute e app di gaming (Steam, Epic Games, Riot, Battle.net, Minecraft, Ubisoft).
Tramite WebSocket con il server C2 accetta comandi per shell, trasferimento file, controllo dei processi, appunti, screenshot e input di mouse e tastiera. Per la persistenza aggiunge una chiave Run nel Registro e crea un’attività pianificata chiamata “MicrosoftEdgeUpdateService”. Un file .env contiene una chiave di licenza MALFEX: suggerisce l’uso di un builder o di un sistema di licenze.
Cosa fare
Chi ha installato uno dei pacchetti citati deve considerare il sistema Windows potenzialmente compromesso. Le indicazioni sono queste:
- isolare la macchina;
- controllare le voci di persistenza;
- ruotare le credenziali;
- trasferire i fondi su nuovi wallet, se le seed phrase erano salvate sul sistema.
Indicatori di compromissione (IoC)
imgdecode
malfexteste8
cdn-img-fetch
img-to-native
native-runner
runhelper
imgbundle
cavecrew/proj
104.234.65[.]75:700
104.234.65[.]75:7007
node_runtime_helper.exe
setup.exe
movinlike
MicrosoftEdgeUpdateService
malfexkkj
malfex_user
malfexteste2
malfexteste3
malfexteste4
Fonte: The Hacker News · Foto: The Hacker News



