Direct naar de inhoud
Cybersecurity

MALFEX imgdecode: kwaadaardige npm lader uitgelegd

MALFEX imgdecode

Cybersecurityonderzoekers waarschuwen voor MALFEX imgdecode: een kwaadaardige npm-package die zich voordoet als iets onschuldigs, maar in werkelijkheid een Windows-gebaseerde shellcode-lader in gang zet. Het gaat om een supply-chain aanval waarbij code via npm kan worden misbruikt om Windows-systemen te compromitteren.

De kern: wanneer een Node.js-project require('imgdecode') aanroept, start een native add-on een keten die versleutelde payloads ophaalt, decodeert en injecteert in een proces. Je leest hieronder hoe de aanval werkt, wat er bekend is over de verspreiding en vooral welke praktische acties je vandaag nog kunt uitvoeren.

Wat is MALFEX imgdecode?

MALFEX imgdecode is onderdeel van een bredere campagne die onderzoekers “MALFEX” noemen. Die campagne publiceert sinds augustus 2023 schadelijke npm-pakketten met als doel Windows-machines aan te vallen. In oktober 2026 is imgdecode op npm verschenen en is het nog beschikbaar geweest in meerdere versies.

De package imgdecode werd op 30 september 2026 geüpload (versiegeschiedenis lopend tot en met 1.0.3). Volgens de onderzoekers is imgdecode een wrapper die via een gecompileerde Node.js addon een DLL laadt. Die DLL haalt vervolgens versleutelde shellcode op vanaf GitHub, decodeert de inhoud en injecteert die in een nieuw proces (met dllhost.exe als onderdeel van het procesgedrag).

Zo werkt de lader in het kort

Het mechanisme draait om een klein JavaScript-bestand in de npm-package dat de Windows DLL laat uitvoeren. In plaats van direct “zichtbare” schadelijke code uit te voeren, doet de DLL het werk op een manier die past bij native aanvallen.

Concreet melden onderzoekers:

  • De JavaScript-code laadt de compiled Windows component wanneer een Node.js programma require('imgdecode') gebruikt op een Windows-console.
  • De DLL downloadt een versleutelde respons van GitHub.
  • Die respons wordt gedecrypt en vervolgens geïnjecteerd in een nieuw dllhost.exe-proces.

Om de kans op detectie te verkleinen, zit er bovendien controle logica in die de inhoud “controleert” op het begin van de gedecryptte bytes. Als die overeenkomen met een JPEG- of PNG-signature, zou de loader stoppen. De onderzoekers leiden hieruit af dat de aanvaller de decryptie mogelijk kan “uitschakelen” door inhoud aan te bieden die na decryptie als afbeelding eindigt, in plaats van als payload.

De bredere MALFEX supply-chain: meerdere pakketten, meerdere routes

MALFEX imgdecode staat niet op zichzelf. De campagne maakt gebruik van meerdere npm-pakketten en varianten van download- en uitvoerroutes. Onderzoekers beschrijven ten minste acht geïdentificeerde packages, waarvan sommige dienen als loader voor Overlord RAT, terwijl andere een Node.js stealer keten opstarten.

Er zijn in de analyses drie belangrijke infectieroutes beschreven:

  • Loader-route naar Overlord RAT: drie pakketten zouden functioneren als loader.
  • Node.js stealer-keten: drie packages werken samen om een stealer te downloaden en uit te voeren.
  • Postinstall pathway: één route gebruikt een postinstall hook om JavaScript te laten contact maken met een externe server en vervolgens een volgende binair bestand op te halen.

Opvallend is dat de Node.js stealer keten volgens de onderzoekers geen install-hook gebruikt. In plaats daarvan start het kwaadaardige gedrag wanneer een specifiek package wordt geladen, dus wanneer de dependency-chain in Node.js “doorloopt”. Dat maakt het gedrag minder afhankelijk van npm-installatie en meer van hoe jouw app dependencies gebruikt.

Hoe de stealer-route loopt

De stealer-keten bestaat onder meer uit pakketten als cdn-img-fetch, img-to-native en native-runner. Daarbij gebruikt de keten meerdere stappen:

  • cdn-img-fetch downloadt een banner.png uit een GitHub repository en haalt daar een versleutelde blob uit.
  • img-to-native decodeert die blob met een sleutel (genoemd als malfexteam2027) en schrijft de inhoud weg als een Go executable onder het pad %APPDATA%
    ode_runtime_helper.exe
    .
  • native-runner voert die Go executable uit, die vervolgens de stealer binary ophaalt van een externe host (zoals beschreven in de analyse) en start.

Later dook er ook runhelper op, dat in vergelijkbare richting werkt maar shellcode uit een JPG-bestand extraheert, kopieert naar executable memory en via een FFI-module uitvoert. Die toevoeging volgt op het moment dat bepaalde oorspronkelijke varianten op npm werden verwijderd.

Waarom de timing rond npm-verwijderingen belangrijk is

Een kenmerk van deze campagne is het “reactieve” karakter. Onderzoekers zien dat MALFEX snel vervangende packages publiceert zodra npm verwijdert of beperkingen oplegt. In het tijdlijnoverzicht komt naar voren dat er binnen dagen en soms zelfs dezelfde dag opvolgers verschenen.

Zo is onder meer gemeld:

  • Op 28 september 2026 zijn native-runner en img-to-native verwijderd.
  • Op 30 september 2026 volgen publicaties als imgbundle en runhelper als vervanging.
  • Later in oktober 2026 worden ook andere varianten weer verwijderd (zoals imgbundle en cdn-img-fetch), terwijl imgdecode in versie 1.0.3 nog wordt uitgegeven.

Voor organisaties betekent dit: zelfs als je eerder al “even” keek en niets vond, kan het alsnog relevant worden door nieuwe versies of vervangende pakketten die in dezelfde dependency-omgeving opdoken.

Wat doet MALFEX imgdecode precies op een besmet systeem?

Naast het downloaden en injecteren, beschrijven onderzoekers ook het gedrag van de payload in de keten. De malware bevat anti-analysis checks die controleren op virtual machines en sandbox-achtige omgevingen. Ook wordt er gekeken naar analyse-tools zoals Process Monitor en Wireshark.

Wanneer de checks “doorstaan”, richt de malware zich op gegevensverzameling. Daarbij worden bestanden en data gezocht die aansluiten op seed-phrases en specifieke extensies, plus bronnen uit browsers en applicaties zoals Chromium-based browsers, Discord, Telegram, en diverse game- en crypto-gerelateerde omgevingen.

Verder kan de malware communicatie opzetten met een command-and-control endpoint via een WebSocket. Daarna kunnen operators opdrachten uitvoeren zoals shell-commando’s, bestandsverkeer, procescontrole, screenshot/clipboard-activiteiten en interactie met muis en toetsenbord.

Voor persistentie worden wijzigingen gedaan in het registry en wordt ook een scheduled task aangemaakt met een naam die verwijst naar een update-service-achtige aanduiding.

Stappenplan: wat je nu moet doen als je MALFEX imgdecode gebruikte

Als je MALFEX imgdecode of aanverwante MALFEX-pakketten hebt geïnstalleerd (direct of via dependencies), behandel je Windows-systeem dan als mogelijk gecompromitteerd. Hieronder staat een praktisch stappenplan op hoofdlijnen.

1) Isoleer en stop de uitvoering

Haal de betreffende machine of de applicatie onmiddellijk uit productie of netwerk. Zet waar mogelijk de Node.js processen stil die het pakket laden. Zo verklein je de kans dat de malware live opdrachten blijft ontvangen.

2) Zoek naar persistence en sporen

Controleer op persistence-entries, zoals registry Run keys en geplande taken. Richt je inspectie ook op bestandspaden die in de analyse genoemd worden, zoals uitvoerbare helpers die in gebruikersmappen terechtkomen.

3) Credential hygiene: rotatie en herstel

Omdat de malware bestanden kan uitlezen en opdrachten kan uitvoeren, is het verstandig om wachtwoorden en tokens te roteren. Beperk je herstel niet tot het direct getroffen systeem: als credentials hergebruikt zijn in CI/CD of beheeromgevingen, moet je die keten meenemen.

4) Let extra op bij wallets en seed-phrases

Als er seed-phrases zijn opgeslagen op het systeem of in bestanden die door de malware worden geraakt, adviseert de analyse om gelden over te zetten naar nieuwe wallets. Daarbij is het doel: de impact beperken als een aanvaller al toegang heeft gehad tot de verzamelde gegevens.

5) Vernieuw dependencies en verifieer je supply chain

Gebruik een opgeschoonde dependency-set en update je lockfiles zodra je de besmette pakketten hebt verwijderd. Als je software supply chain security serieus neemt, helpt het om dependencies te valideren, reputaties te bewaken en alerts in te richten voor verdachte publicaties.

Wil je bredere context over verdachte dependency-events en wat je kunt doen? Lees dan ook AOMEI Backupper supply chain backdoor: wat te doen en voor aanpak rond “losse” meldingen die je omzet in actie: Contextuele cyberdefensie: van losse meldingen naar actie.

Waarom dit type aanval relevant blijft

Deze casus laat opnieuw zien dat supply-chain aanvallen niet altijd “met één malafide script” beginnen. De combinatie van npm, compiled native add-ons en Windows-injectie maakt het lastiger om het gedrag meteen te herkennen, zeker wanneer de malware pas actief wordt bij runtime of bij het laden van een native component.

Bovendien illustreert de snelle vervangingsstrategie rond npm-verwijderingen waarom organisaties niet alleen moeten vertrouwen op één checkmoment. Het is belangrijk om continu te monitoren welke packages in je build- en runtime-omgeving daadwerkelijk worden gebruikt.

Conclusie

MALFEX imgdecode is een concreet voorbeeld van hoe een npm-pakket kan uitgroeien tot een serieuze Windows-aanval. Zodra de native add-on in actie komt, kunnen versleutelde payloads worden gedownload, gedecodeerd en geïnjecteerd, terwijl de malware daarna gegevens verzamelt en persistentie opzet.

Heb je imgdecode (of gerelateerde MALFEX-pakketten) geïnstalleerd? Isoleer het systeem, check op persistence en roteer credentials. Door je dependency-aanpak en monitoring te verscherpen, verlaag je de kans dat je opnieuw in zo’n supply-chain val terechtkomt.

Bron: https://thehackernews.com/2026/10/malfex-npm-package-imgdecode-hides.html