MALFEX : la campagne npm dépasse 40 000 téléchargements
Une campagne visant la chaîne d'approvisionnement logicielle via le registre npm sévit depuis plus de trois ans, et ses paquets malveillants ont été téléchargés plus de 40 000 fois, selon Checkmarx.
Les chercheurs ont baptisé cette campagne MALFEX. Elle a servi à diffuser le cheval de Troie d'accès à distance (RAT) Overlord ainsi que des logiciels de vol d'informations. L'acteur malveillant a publié son premier paquet en août 2023.
Trois paquets malveillants toujours disponibles
L'opérateur a publié 12 paquets sur npm, le principal registre de paquets des développeurs JavaScript et Node.js. Huit d'entre eux sont malveillants. Cinq ont été supprimés. Au 1er octobre, trois pouvaient encore être installés : function-flag, function-color et cdn-img-fetch.
Checkmarx s'est penché en particulier sur function-flag. Le paquet est malveillant depuis juillet 2025 et a été téléchargé plus de 37 000 fois. Aucun avis de sécurité ne le signale actuellement comme malveillant.
D'autres volets de la campagne ont été documentés. Open Source Vulnerabilities (OSV), une base de données publique d'avis de sécurité pour les paquets open source, recense six des paquets malveillants : tlxbnhd, tldriver, mxdriver, img-to-native, native-runner et cdn-img-fetch. Mais l'entrée consacrée à cdn-img-fetch ne couvre que deux des quatre versions malveillantes de ce paquet.
Trois modes de diffusion distincts
Checkmarx a identifié trois voies indépendantes par lesquelles la campagne diffuse ses logiciels malveillants. Elles ne partagent aucune infrastructure, mais les chercheurs les attribuent toutes les trois au même acteur.
Les chargeurs du RAT Overlord. La première voie repose sur des scripts obfusqués qui s'exécutent pendant npm install, accompagnés de chargeurs pour le RAT Overlord. Les scripts peuvent se lancer sous Windows, macOS et Linux, mais la charge utile ne fonctionne que sous Windows.
Une fois installé, Overlord offre à l'opérateur de vastes capacités de surveillance et de contrôle sur la machine infectée. Parmi ses fonctions :
- capture d'écran
- enregistrement des frappes au clavier
- surveillance des fenêtres
- accès à un shell distant
- recherche de fichiers
- un bureau caché, qui permet à l'attaquant d'agir sur le système sans être repéré
Le stealer movinlike. Dans la deuxième voie, du code malveillant s'exécute au chargement du paquet et dépose un infostealer Node.js nommé "movinlike". Le logiciel malveillant dérobe les données de huit clients Discord, de sept navigateurs populaires et de portefeuilles de cryptomonnaies.
Les téléchargeurs de function-flag. La troisième voie est celle qui est active depuis le plus longtemps. Chaque version malveillante de function-flag embarque son propre téléchargeur, et chacun récupère sa charge utile à un emplacement différent.
Checkmarx souligne que la routine d'infection est conçue pour que le paquet s'installe même si le téléchargement de la charge utile échoue. Sous macOS et Linux, la routine échoue sans bruit, si bien que seuls les systèmes Windows sont touchés.
Qui est exposé
Les paquets ne sont pas profondément ancrés dans l'écosystème. Selon Checkmarx, seuls les systèmes ayant installé les paquets malveillants en les désignant par leur nom sont exposés, car aucun d'eux n'est une dépendance d'un paquet légitime.
"Aucun paquet légitime ou largement utilisé ne dépend d'un paquet de l'opérateur, l'exposition se limite donc aux systèmes qui ont installé directement ces noms de paquets. Nous n'avons constaté aucun ciblage géographique ou organisationnel ; quiconque installe le stealer devient une cible", indique Checkmarx.
Cela limite la propagation de l'infection. Les chiffres de téléchargement n'en restent pas moins préoccupants, en particulier pour function-flag, resté en ligne et non signalé pendant des mois.
Vue d'ensemble
Le plus frappant avec MALFEX, c'est sa longévité. La campagne tourne depuis août 2023, et un paquet totalisant plus de 37 000 téléchargements est toujours en ligne sans le moindre avis de sécurité. La suppression des paquets et la publication d'avis n'ont manifestement pas suivi le rythme de l'opérateur. L'entrée OSV incomplète pour cdn-img-fetch révèle la même faille. Les équipes qui se fient uniquement aux flux d'avis de sécurité risquent de se croire à l'abri alors qu'elles ne le sont pas.
Les échecs silencieux, des charges utiles hébergées à différents endroits et le choix de ne viser que Windows rendent la campagne plus difficile à repérer. Ces caractéristiques s'inscrivent dans une tendance plus large de campagnes de logiciels malveillants multiplateformes conçues pour échapper à la détection plutôt que pour se propager rapidement. Le risque plus général qui pèse sur les dépôts logiciels a aussi été mis en lumière récemment avec la compromission de l'Artifactory d'OpenInfra Europe.
Les développeurs doivent vérifier si leurs projets et leurs systèmes de build contiennent les noms de paquets cités plus haut. Toute machine Windows touchée doit être considérée comme compromise, et les identifiants, données de navigation et portefeuilles qui y sont stockés doivent être considérés comme volés. Reste à voir à quelle vitesse npm supprimera les trois paquets restants, et si des avis de sécurité suivront pour function-flag et function-color.
