Aller au contenu

MALFEX : un malware npm resté indétecté pendant 14 mois

MALFEX, une campagne de malware npm menée par une seule personne, a publié 12 paquets depuis 2023 et totalisé 40 767 téléchargements. Certains paquets sont encore en ligne, sans avis de sécurité.

Par Tech AI Wire Team

4 min de lecture

XLinkedIn
Screenshot of CloudSEK's blog post MALFEX - A malicious npm postinstall no advisory has caught for fourteen months, above the report's header image.

En chiffres

npm packages published by one operator
12
total downloads, per Checkmarx
40,767
downloads of function-flag alone
37,419
when the first package appeared
Aug 2023

Un seul attaquant publie des malwares sur npm depuis août 2023, et une partie d'entre eux restait installable fin septembre 2026. L'éditeur de sécurité CloudSEK a baptisé la campagne MALFEX le 30 septembre. Il a trouvé un paquet malveillant qu'aucun avis de sécurité n'avait signalé pendant 14 mois. Checkmarx a suivi le 5 octobre avec un décompte de 40 767 téléchargements pour l'ensemble des paquets de la campagne. Si l'un d'eux figure dans votre arbre de dépendances, une machine Windows qui l'a installé exécute peut-être un outil d'accès à distance.

Comment fonctionne l'attaque

npm est le registre de paquets de JavaScript. Quand vous installez un paquet, npm peut exécuter un script « postinstall », une commande choisie par l'auteur du paquet. MALFEX se sert de ce script pour télécharger et lancer un malware Windows dès qu'un développeur exécute npm install.

Les charges utiles se cachent à la vue de tous. D'après CloudSEK, les scripts téléchargent des programmes Windows déguisés en images PNG. Checkmarx a retracé trois chaînes de diffusion distinctes.

  1. Overlord RAT. Les paquets tlxbnhd, tldriver et mxdriver récupèrent un faux PNG sur api.imghippo.com. Il contient un programme AutoIt3 signé et un script chiffré qui charge Overlord, un outil d'accès à distance open source écrit en Go. Un outil d'accès à distance, ou RAT, permet à l'attaquant de contrôler la machine à distance.
  2. Un voleur de données. Une chaîne composée de native-runner, img-to-native et cdn-img-fetch récupère un programme chiffré sur un compte GitHub nommé « cavecrew ». Elle télécharge ensuite un voleur Node.js de 64 Mo que Checkmarx appelle « movinlike ».
  3. Un téléchargeur de longue durée. function-flag continue de récupérer de nouvelles charges utiles auprès d'hôtes qui changent, dont discloud.app, squareweb.app, render.com et un proxy CDN de Discord.

Les trois chaînes visent Windows. Checkmarx note que le téléchargeur échoue sous macOS et Linux, car un paramètre propre à Windows dont il dépend n'y existe pas.

Ce qu'il vole et comment il se cache

Overlord n'a pas d'adresse de serveur fixe. « Il peut lire des notes chiffrées que l'opérateur publie dans des transactions Solana, les déchiffrer et utiliser le résultat comme liste de serveurs », écrit Checkmarx. Solana est une blockchain publique, l'opérateur peut donc changer de serveurs sans modifier le malware.

Le voleur cible huit clients Discord et les cookies de Chrome, Edge, Brave, Opera, Vivaldi et Yandex. Il s'en prend aussi à Telegram Desktop et aux portefeuilles crypto MetaMask, Phantom et Coinbase. Les données volées sortent par un webhook Discord, créé le 26 septembre 2026 selon Checkmarx.

La persistance est discrète elle aussi. Checkmarx a trouvé une tâche planifiée nommée \Maiden, exécutée toutes les cinq minutes, dont la date est reculée au 1er janvier 2020. L'opérateur a aussi poussé du code malveillant très loin vers la droite avec des espaces, si bien qu'il se trouve au-delà du bord d'une fenêtre d'éditeur normale.

Selon CloudSEK, l'opérateur signe son travail « Murizada » sous plusieurs identifiants, dont malfexkkj, malfex_user et cavecrew.

Les paquets à vérifier

PaquetRôleTéléchargements, selon CheckmarxStatut
function-flagTéléchargeur37 419En ligne, sans avis
function-colorNon précisé300En ligne, sans avis
cdn-img-fetchChaîne du voleur643L'avis ne couvre que 1.0.0-1.0.1
img-to-nativeChaîne du voleur967Avis publié
native-runnerChaîne du voleur872Listé par Checkmarx
tlxbnhdOverlord RAT139Saisi
tldriverOverlord RAT138Saisi
mxdriverOverlord RAT289Saisi

Les deux sociétés comptent un peu différemment. CloudSEK indique que function-flag, cdn-img-fetch et function-color sont toujours installables. « Les trois paquets sans avis sont les seules menaces actives que les défenseurs peuvent cibler aujourd'hui », écrit-il. Checkmarx explique l'écart sur cdn-img-fetch : son avis, MAL-2026-17320, couvre les versions 1.0.0 et 1.0.1, mais les versions malveillantes sont les 1.0.2 et 1.0.3.

Selon Checkmarx, l'opérateur a publié 12 paquets au total : huit malveillants et quatre leurres inoffensifs. Pendant la semaine jusqu'au 1er octobre, les paquets ont encore été téléchargés 3 017 fois.

Les développeurs sont une cible fréquente ce mois-ci. Début octobre, une autre campagne a été signalée, qui cache des malwares dans des hooks Git post-checkout au sein de faux dépôts de recruteurs.

Ce que cela signifie pour les développeurs

  • Fouillez vos fichiers de verrouillage dès maintenant. Cherchez chaque nom de paquet du tableau dans package-lock.json, yarn.lock ou pnpm-lock.yaml, y compris dans les dépendances transitives. npm ls <name> montre l'origine d'un paquet.
  • Ne vous fiez pas aux seuls avis de sécurité. L'avis sur cdn-img-fetch couvre les mauvaises versions, et deux paquets actifs n'en avaient aucun. Un npm audit propre ne prouve pas que vous êtes à l'abri de cette campagne.
  • Désactivez les scripts d'installation quand c'est possible. npm install --ignore-scripts, ou ignore-scripts=true dans .npmrc, empêche l'exécution du code postinstall. N'autorisez les scripts que pour les paquets qui en ont besoin.
  • Vérifiez les machines Windows qui ont installé un paquet listé. Cherchez une tâche planifiée nommée \Maiden et un fichier nommé node_runtime_helper.exe sous %APPDATA%\Microsoft\Windows\. Checkmarx cite aussi l'adresse 104.234.65.75 sur le port 700 comme serveur de téléchargement.
  • Renouvelez ce que le voleur emporte. Si une machine a été touchée, déconnectez-vous de Discord et de Telegram, effacez les sessions du navigateur, changez les mots de passe enregistrés et déplacez les fonds de tout portefeuille de navigateur.

Les 37 419 téléchargements de function-flag sont le chiffre à retenir. Un petit utilitaire au nom banal a porté presque toute la campagne.

Sources

  1. MALFEX - A malicious npm postinstall no advisory has caught for fourteen months - CloudSEK
  2. MALFEX npm Malware Campaign: Three Payloads And An Adversary That Signs Their Work - Checkmarx

Articles liés