Sécurité et confidentialité

Des packages npm malveillants distribuent le RAT Overlord et des voleurs d'informations via des hooks cachés

Huit packages npm malveillants de la campagne MALFEX ont été téléchargés plus de 40 000 fois, livrant des chevaux de Troie d'accès à distance et des voleurs d'informations aux systèmes Windows.

A glass box containing tangled red wires and padlocks on a desk beside a laptop, symbolizing trapped malicious code in open source packages.
Illustration générée pour cet article

Traduit automatiquement depuis l'original anglais.

Les chercheurs en cybersécurité de CloudSEK et Checkmarx ont révélé une attaque persistante sur la chaîne d'approvisionnement visant le registre npm. Baptisée MALFEX, cette campagne implique un acteur de menace solitaire qui a publié plusieurs packages malveillants depuis août 2023. L'opération vise à infecter les hôtes Windows avec des chevaux de Troie d'accès à distance et des voleurs de données via des bibliothèques open source trompeuses.

Ce qui s'est passé

L'enquête a identifié huit packages malveillants parmi douze publiés par l'acteur. Ces packages ont été collectivement téléchargés 40 767 fois. Le contributeur le plus significatif à ce volume est un package nommé "function-flag", qui représente 37 419 de ces téléchargements. Publié pour la première fois en juillet 2024, sa dernière version a été publiée le 4 août 2025. La description du projet pour ce package inclut un message en portugais affirmant qu'il a été créé avec amour par la "Malfex team".

Le code malveillant opère via trois voies d'infection distinctes. La première implique des packages chargeurs qui déploient Overlord, un cheval de Troie d'accès à distance open source écrit en Go. La deuxième voie installe un voleur Node.js appelé movinlike, qui cible les données sensibles provenant de Discord, des navigateurs web, de Telegram et des portefeuilles de cryptomonnaies. La troisième voie agit comme un simple téléchargeur pour récupérer des charges utiles supplémentaires depuis des serveurs distants.

Les chercheurs ont noté que l'opérateur semble être lusophone, avec des commits git horodatés à -0300 et des détails GitHub pointant vers un pseudonyme brésilien. Cependant, les analystes soulignent que cette empreinte linguistique ne signifie pas que le Brésil est la cible principale. Le mécanisme de livraison via npm et Discord est mondial, et le ciblage ultérieur des victimes semble opportuniste plutôt que géographiquement spécifique.

Comment cela fonctionne

L'attaque repose fortement sur les hooks de cycle de vie npm, spécifiquement les scripts postinstall, pour exécuter du code malveillant automatiquement lorsqu'un développeur installe le package. Par exemple, le package "function-flag" contient un hook postinstall qui exécute une charge utile JavaScript. Ce script télécharge des charges utiles supplémentaires depuis divers emplacements distants selon la version du package. Un autre package, "function-color", ne contient pas de malware lui-même mais liste "function-flag" comme dépendance, déclenchant ainsi indirectement le processus d'installation malveillant.

Dans le cas des chargeurs du RAT Overlord, tels que "tlxbnhd", "tldriver" et "mxdriver", le code malveillant est déclenché via des hooks de cycle de vie pour télécharger et exécuter un exécutable Windows. Overlord utilise les transactions blockchain Solana pour extraire son adresse de commande et contrôle (C2), rendant la détection plus difficile. Un autre sous-ensemble de packages, y compris "img-to-native", nécessite "cdn-img-fetch" pour récupérer un exécutable Go. Cet exécutable récupère ensuite le voleur Node.js capable de collecter les identifiants et les données de portefeuille.

Checkmarx a mis en évidence une technique spécifique dans la version 1.7.3 de "function-flag". Le script postinstall exécute un fichier appelé example.js, qui appelle une fonction d'art ASCII utilisant une valeur de police nommée "Bloody". Cette valeur de police spécifique déclenche une routine cachée qui télécharge node.exe depuis un service d'hébergement brésilien, le sauvegarde dans le dossier AppData de l'utilisateur et l'exécute avec la fenêtre masquée pour éviter la détection.

Détails clés

  • Huit packages npm malveillants ont été identifiés, dont trois sont toujours actifs sur le registre : "function-flag", "function-color" et "cdn-img-fetch".
  • La campagne a généré 40 767 téléchargements au total, "function-flag" étant responsable de la grande majorité avec 37 419 téléchargements.
  • Le malware livre le RAT Overlord, qui utilise les transactions Solana pour la communication C2, et le voleur movinlike.
  • Les vecteurs d'infection incluent les hooks de cycle de vie npm, les chaînes de dépendances et les routines cachées déclenchées par des arguments de fonction spécifiques comme les noms de polices.
  • L'acteur de menace montre des liens linguistiques avec le Brésil mais cible les victimes mondialement via une infection opportuniste des systèmes Windows.
  • Le RAT Overlord a également été observé dans des campagnes distinctes exploitant des failles WordPress et distribuant de faux installateurs Zoom pour macOS.

Pourquoi c'est important

Cette campagne met en lumière le risque continu des attaques sur la chaîne d'approvisionnement dans les écosystèmes open source. Les développeurs font souvent confiance implicitement aux packages npm, supposant que les bibliothèques vérifiées par la communauté sont sûres. Cependant, l'utilisation des hooks de cycle de vie permet aux attaquants d'exécuter du code lors de l'installation, contournant les outils d'analyse statique qui ne scannent que le dépôt de code source. Le nombre élevé de téléchargements de "function-flag" suggère que de nombreux développeurs ont peut-être compromis involontairement leurs environnements de développement ou leurs systèmes de production.

Pour les équipes d'ingénierie, les implications vont au-delà de la suppression immédiate du malware. L'utilisation de descriptions de projets d'apparence légitime et la nature modulaire de l'attaque, où un package dépend d'un autre pour déclencher le malware, rendent la détection difficile. Les outils de sécurité doivent désormais examiner plus profondément les arbres de dépendances et les comportements d'exécution lors de l'installation, et non seulement le code stocké dans le contrôle de version. Le chevauchement avec d'autres clusters de menaces, tels que UNK_DeadDrop, suggère également que ces tactiques sont partagées ou adoptées entre différents groupes, augmentant le paysage global des menaces.

Ce que vous pouvez faire

  • Auditez immédiatement les dépendances de votre projet pour vous assurer qu'aucun des packages malveillants identifiés n'est présent dans vos fichiers de verrouillage (lock files).
  • Configurez votre gestionnaire de paquets pour restreindre ou alerter sur l'exécution des scripts postinstall et preinstall lors de l'installation des paquets.
  • Mettez en œuvre des outils d'analyse de composition logicielle capables de détecter les paquets malveillants connus et les modèles comportementaux suspects dans les dépendances.
  • Surveillez le trafic réseau issu de vos projets pour détecter toute communication suspecte.

Outils de la Boutique Bytechap

Continuer la lecture

Tous les articles