
La société de sécurité Socket Security a divulgué le 25 mai une campagne d’attaque de type supply chain visant le vol de cryptomonnaies baptisée TrapDoor. Celle-ci a été repérée dans npm, PyPI et Crates.io, avec plus de 34 paquets malveillants et 384 versions associées. Socket a signalé aux registres concernés les dépôts affectés, et certains paquets malveillants ont déjà été supprimés ; au moment de la publication, il en restait encore quelques-uns.
Les mécanismes d’exécution malveillants des trois principaux registres
(Source:Socket Security)
npm(22 paquets)déploie une charge utile de collecte de données d’authentification partagées, trap-core.js, via des hooks d’installation après coup (postinstall hooks) contenant 1 149 lignes. Les identifiants volés sont validés à l’aide des API AWS et GitHub, puis une persistance est mise en place via des hooks Git, des hooks shell, des services systemd, cron et SSH. Les machines de développement compromises peuvent servir de pont pour un mouvement latéral vers d’autres infrastructures.
PyPI(7 paquets)exécute automatiquement lors de l’importation : le code JavaScript est téléchargé depuis un domaine GitHub Pages contrôlé par l’attaquant, puis exécuté avec node -e. L’attaquant n’a pas besoin de publier une nouvelle version pour faire évoluer le comportement. Crates.io(6 paquets, tous ciblant les développeurs Sui et Move)utilise un script de build.rs malveillant : pendant la compilation Rust, il recherche dans le dépôt de clés locales, puis chiffre la clé via un XOR codé en dur avant de l’envoyer à GitHub Gist.
Les types de données volées par TrapDoor (confirmés par Socket)
D’après l’analyse de Socket, TrapDoor dérobe les données suivantes :
· Clés SSH (utilisables pour le mouvement latéral)
· Données de portefeuille Sui, Solana et Aptos
· Identifiants AWS et jetons GitHub
· Données de configuration du navigateur et bases de données de connexion
· Données des extensions de portefeuilles cryptographiques
· Variables d’environnement et clés API
· Fichiers de configuration de développement local
Injection d’objectifs via l’IA : .cursorrules, CLAUDE.md et PR malveillantes
TrapDoor utilise les fichiers .cursorrules et CLAUDE.md, en injectant des instructions cachées via des caractères Unicode à largeur nulle. L’objectif est de tromper des outils de codage IA (comme Cursor, Claude) afin qu’ils effectuent des « analyses de sécurité », entraînant le vol des clés des développeurs. L’attaquant utilise le compte GitHub ddjidd564 et envoie simultanément des demandes de tirage (pull requests) aux projets open source IA grand public tels que browser-use, langchain, langflow, llama_index, MetaGPT et OpenHands. Il tente d’insérer des fichiers .cursorrules et CLAUDE.md pointant vers des URL de configuration contrôlées par l’attaquant ; l’activité est marquée comme P-2024-001.
Questions fréquentes
Quelles mesures d’urgence les développeurs touchés par TrapDoor doivent-ils prendre ?
Identifiez et supprimez immédiatement tous les paquets malveillants concernés (la liste complète couvre npm 22 paquets, PyPI 7 paquets et Crates.io 6 paquets), puis révoquez immédiatement tout identifiant AWS, jeton GitHub et clé SSH exposés. Socket a signalé l’incident aux trois registres et continue de mettre à jour sa page de suivi des activités d’attaque TrapDoor.
À quoi ressemble l’infrastructure utilisée pour l’attaque TrapDoor ?
L’attaquant utilise le compte GitHub ddjidd564 pour héberger la charge utile et la configuration, avec le domaine GitHub Pages ddjidd564[.]github[.]io/defi-security-best-practices/. Le compte maintient également une série de documents techniques rédigés par l’attaquant (dont AUDIT-MATRIX.md, BYPASS.md, PAYLOAD.md et SWARM.md), ainsi que plusieurs dépôts leurres centrés sur la DeFi et la sécurité.
Comment les développeurs peuvent-ils vérifier si leur environnement a été infecté ?
Socket recommande de vérifier si, dans l’environnement de développement local, des fichiers .cursorrules ou CLAUDE.md contiennent des configurations anormales incluant des caractères Unicode à largeur nulle, ainsi que des processus anormaux dans des hooks postinstall, des services systemd ou des tâches cron. La liste complète des noms de paquets malveillants de Socket est publiée ; les développeurs peuvent ainsi contrôler un par un les paquets installés.