Des packages npm malveillants ont été découverts dans le cadre d’une attaque ciblée de la chaîne d’approvisionnement logicielle. L’objectif : livrer un cheval de Troie d’accès à distance (RAT) capable d’agir sur plusieurs systèmes, notamment chez des développeurs utilisant des outils liés à l’écosystème d’outils d’Alibaba.
Selon l’analyse des chercheurs, l’opération vise particulièrement des environnements en langue chinoise. Le procédé repose sur une combinaison de paquets “leurres” et d’étapes internes qui déclenchent progressivement le chargement de charges utiles distantes, avant de tenter de rester en place longtemps après l’installation.
Une chaîne d’approvisionnement pensée pour tromper l’écosystème npm
Les packages npm malveillants repérés s’intègrent à une structure de dépendances où plusieurs projets jouent le rôle de passerelles. L’idée n’est pas seulement d’infecter un paquet unique, mais de déclencher le comportement malveillant via la résolution des dépendances, dans des conditions où certains paquets privés sont “impostés”.
Parmi les éléments observés, un paquet non attribué (non “scope”) se distingue : lib-mtop. Il portait le même nom qu’un paquet privé utilisé sous le scope @ali. Une première publication est apparue en novembre 2023 sans fonctionnalités notables. Puis, plus tard, trois versions supplémentaires (v1.0.1, v1.0.2 et v1.0.3) ont été mises en ligne au début du printemps, avec du code nouvellement ajouté.
Le point de bascule : un chargeur qui récupère et exécute du JavaScript distant
L’une des modifications clés observées concerne un chargeur conçu pour récupérer un script distant en utilisant curl, puis l’exécuter sur la machine cible. Autrement dit, même si le dépôt npm semble banal au départ, l’exécution réelle intervient après une étape de chargement additionnelle.
Le paquet lib-mtop n’est pas isolé : le même compte de mainteneur, associé au pseudonyme ch4ce, aurait publié plusieurs autres projets. Au moment de l’observation, ce compte redirigeait vers une page d’erreur “not found” sur la plateforme npmjs.
Des “leurres” vides et un assemblage de dépendances
Trois paquets — aone-kit, aone-kit-cli et aone-sandbox — sont décrits comme des emballages vides (wrappers). Leur rôle serait de porter des noms proches de paquets privés appartenant à l’écosystème @ali et déclarés comme dépendances dans les fichiers package.json. Ainsi, la structure de dépendances “semble” correcte, tout en préparant l’installation de composants malveillants.
Le paquet local-config-parser combine quant à lui un objectif différent : il implémente un parseur légitime de configuration JSON. Le piège se situe dans les dépendances. Individuellement, elles ne semblent pas forcément dangereuses, mais une fois combinées, elles servent de conduit pour acheminer les éléments qui déclenchent le comportement malveillant.
En pratique, les packages npm malveillants observés sont répartis sur plusieurs niveaux : des paquets “haut de pile” servent d’amorces, une couche intermédiaire relie l’ensemble, puis des composants plus bas dans l’arbre de dépendances réalisent des actions concrètes vers le chargement d’un RAT et de charges supplémentaires.
Règles et exécution selon le système : vm et signature de “masquage”
Un élément notable dans l’attaque réside dans l’usage d’un moteur d’exécution : les chercheurs indiquent que l’étape de règle recourt au module vm pour gérer la phase finale. Cette approche permettrait de charger et télécharger une charge utile en fonction du système de l’utilisateur.
Le téléchargement final s’appuie aussi sur un domaine masquant une marque liée à Alibaba, afin de rendre le trafic moins évident et de réduire les chances de détection. Les analystes citent un domaine déguisé du type aone-cli-next.oss-cn-beijing.aliyuncs.com.
Ce que le RAT fait sur Windows, Linux et macOS
Une fois le mécanisme déclenché, la charge utile agit différemment selon l’OS. Les chercheurs décrivent plusieurs scénarios.
Sur Windows
La charge utile tente d’interrompre une application de sécurité d’entreprise nommée Alilang enterprise security, ainsi qu’une application VPN et des outils de productivité bureautique. Ensuite, elle remplacerait des éléments centraux par une version altérée contenant un code de type trojan.
Sur Linux
Le RAT télécharge un binaire dans le répertoire /tmp, l’exécute comme processus détaché, puis supprime le fichier du disque après l’avoir chargé en mémoire.
Sur macOS
Sur macOS, l’attaque injecte un script d’arrière-plan dans ~/.zshrc, puis configure un Launch Agent planifié pour une persistance sur environ dix minutes.
Une porte dérobée complète, avec mouvement latéral et persistance
La charge finale est décrite comme une porte dérobée (backdoor) relativement riche : elle inclut la capacité d’exécuter des commandes, d’envoyer et récupérer des fichiers, de réaliser de la reconnaissance sur l’hôte et de préparer des étapes supplémentaires. Les analystes évoquent aussi la possibilité de mouvements latéraux, ce qui augmente la portée potentielle dans un environnement compromis.
Autre point important : le RAT viserait la persistance en injectant du code malveillant dans des applications de collaboration d’entreprise. Les noms cités incluent DingTalk, Wukong et Qoder.
Qui est derrière ? Des indices linguistiques et un ciblage par environnement
Le commanditaire exact reste inconnu. En revanche, des commentaires en chinois dans le code source, combinés au fait que les commits GitHub affichent un décalage horaire cohérent avec UTC+08:00, suggèrent la possibilité qu’un acteur parlant chinois cible des développeurs opérant dans des environnements également liés à cette zone linguistique.
Les chercheurs estiment que la finalité ressemble à de l’espionnage industriel. Même si le nombre de téléchargements des paquets malveillants ne serait pas très élevé, l’impact peut être difficile à mesurer, car le RAT a été conçu pour fonctionner dans des scénarios ciblés et pour se propager ensuite.
Liste des paquets associés à la campagne
Les packages npm malveillants et composants listés dans l’ensemble observé incluent : lib-mtop, aone-kit, aone-kit-cli, aone-sandbox, local-config-parser, smart-config-manager, cloud-config-fetcher, fast-transform-pipeline, aone-cloud-cli, colder-cli, def-open-client, feedback-ai-sdk, flight-compare-analyzer, lwp-web-client, lzd-unified-station-sdk, open-worker-cli, test-skill-zip, uniapi-bridge.
Et pour le second cas : bibliothèque Python empoisonnée
En parallèle, un autre signal a été rapporté : des acteurs inconnus auraient publié une version empoisonnée du paquet mrmustard (0.7.4), une bibliothèque Python associée au calcul quantique photonic par Xanadu.
Le but annoncé : déclencher un outil de vol d’informations capable de collecter des clés SSH privées, des identifiants AWS et des configurations Kubernetes, puis d’exfiltrer ces données vers un serveur contrôlé par l’attaquant.
Les analystes indiquent que la charge utile s’exécute à chaque import du paquet. D’autres détails rapportent l’existence de mécanismes de persistance qui maintiennent le voleur actif même après la désinstallation du package. Les cibles seraient notamment des environnements de recherche et HPC, avec la collecte de files d’attente SLURM et d’inventaires GPU, en plus des secrets “cloud”.
Que faire si vous avez installé ces packages
Si vous avez installé l’un des packages npm malveillants listés, les chercheurs recommandent de considérer la machine comme potentiellement compromise.
- Changez et faites tourner les identifiants sensibles depuis une machine “propre”.
- Auditez les systèmes de développement pour détecter des signes d’activité suspecte.
- Recherchez des traces de chargement distant, de processus inattendus et de mécanismes de persistance.
Cette approche permet de réduire le risque de réutilisation de secrets et limite la probabilité de compromission persistante dans vos environnements de build et de déploiement.
Pourquoi cette campagne doit vous alerter
Ce qui rend l’affaire particulièrement préoccupante, c’est l’attention portée à la chaîne d’approvisionnement : l’attaque ne repose pas uniquement sur un binaire, mais sur des dépendances qui s’installent “normalement”. En combinant impostures de paquets, résolution de dépendances et exécution de charges utiles différenciées par système, l’opération vise à rendre l’infection plus discrète.
La conséquence directe : la sécurité n’est plus seulement une question de code applicatif, mais aussi de gestion des dépendances. Si vos projets s’appuient sur des paquets npm, la vérification des sources, la surveillance des changements de versions et la revue des dépendances deviennent indispensables.
Conclusion
Les packages npm malveillants identifiés montrent comment une chaîne d’approvisionnement peut être détournée pour livrer un RAT cross-plateforme, avec des mécanismes d’exécution conditionnelle et une persistance durable. En parallèle, des cas similaires existent aussi dans d’autres écosystèmes, comme la bibliothèque Python empoisonnée citée dans le même contexte.
Protégez vos environnements en traitant toute installation suspecte comme un incident potentiel : révoquez et remplacez les secrets, inspectez vos systèmes et durcissez vos pratiques de dépendances. Cela réduit l’impact et limite la propagation dans des environnements déjà sensibles, notamment ceux des développeurs.
Source: https://thehackernews.com/2026/08/18-malicious-npm-packages-deliver-cross.html
