MALFEX revine: pachetul npm „imgdecode" ascunde un loader de shellcode într-un addon nativ Windows
O operațiune malware de lungă durată pe npm, urmărită sub numele MALFEX, a revenit cu o metodă de livrare mai greu de observat: în loc să-și pună logica malițioasă în cod JavaScript lizibil, cel mai nou pachet, imgdecode, o ascunde într-un addon nativ Node.js compilat — un DLL Windows care descarcă shellcode criptat și îl injectează într-un proces legitim al sistemului.
Ce s-a întâmplat
imgdecode a apărut pe npm pe 30 septembrie 2026, publicat de contul malfexteste8. La momentul raportării avea aproape 1.000 de descărcări, era încă disponibil în registru și ajunsese la versiunea 1.0.3.
La suprafață pachetul pare aproape gol — un fișier JavaScript de câteva rânduri. Singurul lui rol real este să încarce un DLL inclus. Când un dezvoltator apelează require('imgdecode') dintr-o consolă Windows, DLL-ul:
- verifică dacă rulează în terminalul unui dezvoltator,
- descarcă un fișier imagine dintr-un repository GitHub controlat de atacator (
cavecrew/proj), - decriptează payload-ul ascuns în imagine și
- injectează shellcode-ul rezultat într-un proces
dllhost.exenou creat.
Loader-ul are și un „comutator de oprire" discret: dacă conținutul decriptat este o imagine JPEG sau PNG, se oprește. Asta sugerează că operatorul îl poate dezactiva de la distanță doar schimbând fișierul servit din repository.
O campanie care se adaptează din mers
MALFEX nu este nou. Gruparea — documentată anterior de Checkmarx și CloudSEK, iar în această rundă analizată de SafeDep — publică pachete malițioase pe npm din august 2023, vizând constant sisteme Windows. Actorul din spatele ei nu a fost identificat.
Activitatea recentă arată un operator atent la eliminările din registru:
- 26 sep. 2026 – sunt publicate
cdn-img-fetch,img-to-nativeșinative-runner. - 28 sep. – npm elimină
native-runnerșiimg-to-native. - 30 sep. – înlocuitorii
imgbundleșirunhelperapar în câteva ore;runhelpereste retras în aceeași după-amiază; seara apareimgdecode1.0.0. - 1–11 oct. –
imgdecodeajunge la 1.0.3, în timp ce npm eliminăimgbundleșicdn-img-fetch.
Fiecare versiune a redus dependența de celelalte pachete, până când 1.0.3 a devenit complet autonom.
Lanțul anterior de trei pachete merită și el atenție: niciunul nu folosea un install hook. Codul malițios rula doar când pachetul era efectiv încărcat — o metodă deliberată de a ocoli protecțiile concentrate pe scripturile postinstall. Acel lanț decripta și salva un downloader scris în Go în %APPDATA%\Microsoft\Windows\node_runtime_helper.exe, care apoi descărca un stealer Node.js.
Ce face payload-ul
Implantul final, scris în Node.js, este un stealer complet și un instrument de acces de la distanță:
- Anti-analiză – caută mașini virtuale, sandbox-uri și unelte precum Process Monitor și Wireshark înainte de a acționa.
- Furt de date – colectează fraze seed crypto, fișiere
.kdbx,.pem,.ppkși.env, date din browsere Chromium, Discord și Telegram, portofele crypto și conturi Steam, Epic Games, Riot, Battle.net, Minecraft și Ubisoft. - Control de la distanță – printr-un canal WebSocket către serverul de comandă, operatorul poate rula comenzi, transfera fișiere, gestiona procese, citi clipboard-ul, face capturi de ecran și controla mouse-ul și tastatura.
- Persistență – o cheie Registry Run și un task programat deghizat ca
MicrosoftEdgeUpdateService.
Un fișier de configurare inclus conținea o „cheie de licență" MALFEX, ceea ce indică un builder sau un model malware-as-a-service în spatele payload-urilor.
De ce contează
Stațiile de lucru ale dezvoltatorilor sunt ținte valoroase: conțin chei SSH, credențiale cloud, secrete .env, seifuri de parole și materiale de semnare. Addon-urile native sunt un punct orb pentru multe procese de review, pentru că o privire rapidă asupra codului JavaScript nu arată nimic suspect — payload-ul stă într-un binar pe care puțini îl analizează. Adăugați un operator care republică în câteva ore după o eliminare și devine clar că listele de blocare vor rămâne mereu în urmă.
Ce trebuie făcut
- Căutați pachetele. Verificați lockfile-urile, cache-urile și log-urile CI pentru
imgdecode,imgbundle,runhelper,cdn-img-fetch,img-to-nativeșinative-runner, precum și pentru pachete publicate de conturimalfex*. - Tratați sistemele Windows afectate ca fiind compromise. Izolați-le și căutați task-ul programat
MicrosoftEdgeUpdateService, chei Run neașteptate,node_runtime_helper.exeîn%APPDATA%și conexiuni către104.234.65[.]75. - Rotiți tot ce a existat pe mașină — chei SSH și API, token-uri cloud, secrete
.env, parole salvate în browser; mutați fondurile în portofele noi dacă frazele seed erau stocate acolo. - Ridicați ștacheta pentru dependențe noi. Semnalați pachetele care includ binare
.node/.dllprecompilate, care au doar câteva zile sau care vin de la publisheri noi; fixați versiunile și folosiți un registru intern verificat sau o listă de pachete aprobate. - Nu vă bazați doar pe verificarea install hook-urilor — această campanie le evită intenționat.
Detectarea timpurie a acestui tip de problemă este exact rolul analizei dependențelor dintr-un code review asistat de AI: verificarea a ceea ce proiectele voastre aduc efectiv — inclusiv pachete noi, cu reputație redusă sau care conțin binare — înainte să ajungă pe laptopul unui dezvoltator sau în pipeline-ul de build.
Credit cercetare: SafeDep (analiza recentă), cu raportări anterioare despre MALFEX de la Checkmarx și CloudSEK. Raportat inițial de The Hacker News.
