Ce qui se passe
La campagne MALFEX, racontée ici le 8 octobre, continue. Chaque fois que npm
retire un paquet, l'opérateur en remet un autre. imgdecode a été publié le
30 septembre 2026 par le compte malfexteste8 ; il est toujours en ligne en version
1.0.3, avec 979 téléchargements au moment de l'article. SafeDep, dont la source
reprend l'analyse, le décrit ainsi : un fichier JavaScript de neuf lignes charge une DLL
Windows qui récupère du shellcode chiffré sur GitHub.
| Date (UTC) | Événement |
|---|---|
| 26 septembre | cdn-img-fetch, img-to-native et native-runner 1.0.0 publiés |
| 28 septembre, 16:06 | npm retire native-runner et img-to-native |
| 30 septembre, 03:29 et 03:37 | imgbundle remplace img-to-native, runhelper remplace native-runner |
| 30 septembre, 16:13 | runhelper est dépublié |
| 30 septembre, 22:32 | imgdecode 1.0.0, suivi des 1.0.1 puis 1.0.2 (1er octobre) |
| 7 et 8 octobre | npm retire imgbundle, puis cdn-img-fetch |
| 11 octobre, 22:09 | imgdecode 1.0.3, sans dépendance à un autre paquet MALFEX |
Comment imgdecode charge
Quand un programme appelle require('imgdecode') depuis une console Windows, la DLL
64 bits (un addon Node.js compilé) vérifie qu'elle tourne dans un terminal de
développeur. Elle télécharge ensuite banner.jpg depuis le dépôt GitHub
cavecrew/proj, aujourd'hui inaccessible, déchiffre la charge avec la clé
nif-runtime-2027 et l'injecte dans un nouveau processus dllhost.exe. Si le contenu
déchiffré commence par une signature JPEG ou PNG, la DLL s'arrête : SafeDep en déduit
que l'opérateur peut désactiver le chargeur à distance. Une capture d'archive du
6 octobre montre que l'image est le même téléchargeur Go que dans la chaîne précédente.
Il n'y a pas de script d'installation : le code s'exécute au chargement du module.
Désactiver les hooks postinstall ne protège donc pas.
Ce qui arrive ensuite
Le téléchargeur récupère un voleur Node.js, setup.exe alias movinlike, sur
104.234.65.75. La source écrit le port 700 d'un côté et 7007 de l'autre pour le
serveur de commande : elle se contredit, à vérifier chez SafeDep. Le voleur :
- contrôle la présence de machines virtuelles, de bacs à sable, de Process Monitor et de Wireshark ;
- collecte phrases de récupération, fichiers
.kdbx,.pem,.ppket.env, données des navigateurs Chromium, de Discord, de Telegram, des portefeuilles crypto et des clients de jeux ; - ouvre un WebSocket vers le serveur pour exécuter des commandes, transférer des fichiers, lire le presse-papiers, faire des captures d'écran et piloter souris et clavier ;
- persiste par une clé Run du registre et une tâche planifiée
MicrosoftEdgeUpdateService.
Que faire
Chercher les onze noms de la campagne, ceux du 8 octobre compris, dans les fichiers de verrouillage :
grep -nwE 'cdn-img-fetch|img-to-native|native-runner|runhelper|imgbundle|imgdecode|function-flag|function-color|tlxbnhd|tldriver|mxdriver' \
package-lock.json pnpm-lock.yaml yarn.lock 2>/dev/nullSur une machine Windows où l'un d'eux a pu tourner :
Get-ScheduledTask -TaskName MicrosoftEdgeUpdateService
Test-Path "$env:APPDATA\Microsoft\Windows\node_runtime_helper.exe"En cas de résultat positif, la source recommande d'isoler la machine, de contrôler les entrées de persistance, de renouveler les identifiants et, si des phrases de récupération y étaient stockées, de transférer les fonds vers de nouveaux portefeuilles.
Limites
L'attaque vise Windows. Les paquets antérieurs utilisaient la clé malfexteam2027 pour
le même type de chaîne. Tout vient de rapports de SafeDep, Checkmarx et CloudSEK lus
par l'intermédiaire de The Hacker News.
Source : MALFEX npm Package 'imgdecode' Hides Shellcode Loader in Windows Native Addon, The Hacker News, 17 octobre 2026.