Contexte de la campagne

Depuis août 2023, un acteur isolé a publié douze paquets npm, dont huit ont été identifiés comme malveillants. Le groupe de recherche CloudSEK et Checkmarx a baptisé l’opération MALFEX. Au total, les paquets ont été téléchargés 40 767 fois, avec function-flag responsable de 37 419 téléchargements, ce qui en fait le principal vecteur de diffusion. La première version de ce paquet est apparue en juillet 2024, la plus récente datant du 4 août 2025.

Mécanismes d’infection via npm

Les paquets tlxbnhd, tldriver et mxdriver agissent comme chargeurs du RAT Overlord, écrit en Go. Le code malveillant s’exécute grâce à des hooks de cycle de vie (postinstall) qui téléchargent et lancent un exécutable Windows. Un autre sous‑ensemble, dont img-to-native, dépend de cdn-img-fetch pour récupérer un exécutable Go, lequel charge ensuite un voleur Node.js capable d’extraire des informations depuis Discord, les navigateurs, Telegram et les portefeuilles cryptographiques.

// Exemple de script postinstall dans function-flag
"postinstall": "node example.js"
// example.js appelle la fonction ASCII art avec le paramètre 'Bloody'
// qui déclenche le téléchargement de node.exe depuis cdnzona.discloud.app

Le paquet function-color ne contient pas de charge utile propre, mais déclare function-flag comme dépendance, assurant ainsi la chaîne d’exécution. Dans la version 1.7.3, le script postinstall télécharge node.exe depuis le domaine brésilien cdnzona.discloud.app, le place dans %APPDATA%\node.exe et l’exécute en mode caché.

Analyse des charges utiles et des vecteurs

Le RAT Overlord utilise des transactions Solana pour récupérer l’adresse de commande‑et‑contrôle (C2), rendant la traçabilité réseau plus difficile. Le voleur Node.js collecte des jetons d’authentification et des cookies, ciblant les services de messagerie et les portefeuilles crypto. La combinaison d’un exécutable Go et d’un script JavaScript augmente la surface d’attaque : le premier contourne les protections natives de Windows, le second exploite la confiance accordée aux dépendances npm.

Outre la chaîne npm, Overlord a été réutilisé dans deux campagnes distinctes en juillet 2026 : une exploitation de failles WordPress (CVE‑2026‑63030 et CVE‑2026‑60137) et une diffusion via un faux installateur Zoom sur macOS. Ces campagnes partagent un opérateur lusophone, identifié par des commits horodatés GMT‑3 et un profil GitHub brésilien, mais la distribution npm reste globale, sans ciblage géographique explicite.

Implications et limites

La campagne montre comment des hooks npm, souvent considérés comme inoffensifs, peuvent servir de point d’entrée pour des charges utiles complexes. La dépendance à des services d’hébergement tiers (cdnzona.discloud.app) rend la détection basée sur les listes noires difficile, car les domaines peuvent changer à chaque version du paquet. Cependant, la visibilité du nombre de téléchargements et la présence de scripts postinstall offrent des indicateurs exploitables pour les systèmes de gestion de paquets et les solutions de SAST.

Le manque de transparence sur les serveurs C2 et la rotation fréquente des payloads limitent la capacité des équipes de réponse à incident à neutraliser rapidement la menace. Une surveillance accrue des hooks npm et une validation stricte des dépendances tierces restent les meilleures pratiques pour réduire le risque de réinfection.