Une nouvelle campagne de vol de cryptomonnaies cible les développeurs les plus susceptibles de conserver des clés de portefeuille, des identifiants cloud et des accès aux environnements de production sur leurs machines.
Les chercheurs de la société de sécurité Socket ont déclaré plus tôt cette semaine avoir identifié une attaque sur la chaîne d'approvisionnement appelée TrapDoor, diffusée sur trois grands registres de programmation open source, avec plus de 34 paquets malveillants et des centaines de versions et artefacts associés.
Un enseignement clé est que les attaquants deviennent plus ciblés. En plus de l'ingénierie sociale, qui vise les individus détenant des informations cruciales, les attaques sur la chaîne d'approvisionnement sont conçues non pas pour attraper des utilisateurs finaux au hasard, mais des développeurs. Ce sont précisément ces personnes qui peuvent avoir des fichiers de portefeuille, des clés SSH, des tokens GitHub, des identifiants cloud et des accès à la production sur la même machine qu'elles utilisent pour créer des outils crypto et IA.
Socket n'a pas identifié de victimes ni de fonds volés, mais a indiqué que les paquets étaient actifs sur npm, PyPI et Crates.io et contenaient des charges utiles capables de voler des données de portefeuille, d'exfiltrer des identifiants, de tester des tokens AWS et GitHub, et de laisser des fichiers pour maintenir l'accès actif.
Les paquets programmés en JavaScript, Python et Rust ont été déguisés en aides pour développeurs, scanners de sécurité, outils de portefeuille, utilitaires Solidity, paquets de prompts IA et aides à la compilation Sui ou Move.
Des noms volontairement ennuyeux
Les noms ont été volontairement conçus pour être ennuyeux. Les paquets étaient nommés « wallet-security-checker », « defi-risk-scanner », « solidity-build-guard », « move-compiler-tools » et « llm-context-compressor », ressemblant au type de petits utilitaires qu'un développeur crypto ou IA pourrait installer sans trop y réfléchir.
Cependant, une fois installés, les charges utiles ont tenté d'extraire bien plus que des données de paquets.
Dans les paquets npm, le logiciel malveillant a recherché sur la machine du développeur des clés privées, des mots de passe, des tokens GitHub et des identifiants cloud. Il a également testé certains identifiants volés, tenté de se déplacer vers d'autres systèmes via des clés SSH et laissé des fichiers pouvant maintenir l'infection active.
Les clés SSH sont des fichiers de connexion que les développeurs utilisent pour accéder à des serveurs, des dépôts de code et d'autres machines. Si elles sont volées, elles peuvent permettre à un attaquant de passer d'un ordinateur portable compromis à l'infrastructure plus large d'une entreprise.
L'attaque utilise également des fichiers tels que .cursorrules et claude.md, qui permettent aux développeurs de donner des instructions spécifiques au projet aux outils de codage IA. Socket a indiqué que la campagne a planté des instructions cachées en utilisant des caractères Unicode de largeur nulle, tentant apparemment de faire exécuter aux futures sessions d'assistants IA de faux « scans de sécurité » qui collectaient et exfiltraient des secrets.
Cela a transformé l'attaque d'un simple voleur de paquets en quelque chose de plus proche d'un logiciel malveillant pour environnement de développement. L'installation du paquet n'est que la première étape, la cible réelle étant le poste de travail, comme les portefeuilles, les dépôts, les données du navigateur, les clés cloud, l'accès SSH et tout ce que les outils de codage IA liront ensuite.
Les paquets Rust ont utilisé des scripts build.rs malveillants pour s'exécuter lors de la compilation, ciblant les développeurs sui et move. Les paquets PyPI ont exécuté du JavaScript distant à l'importation. Les paquets sur npm ont utilisé des hooks postinstall.
Socket a déclaré avoir signalé les paquets aux registres concernés et classé les paquets de la campagne comme malveillants. L'entreprise a également averti que l'attaquant a ouvert des pull requests vers des projets IA et de développement, tentant d'ajouter des fichiers .cursorrules et CLAUDE.md via des chemins de contribution open source normaux.