En bref

  • Campagne TrapDoor : 34 paquets malveillants publiés sur npm, PyPI et Crates.io entre le 22 et le 29 mai 2026, ciblant les développeurs blockchain (Solana, Sui, Aptos, Ethereum) et IA.
  • Nouveau vecteur de persistance : injection de directives cachées via des caractères Unicode à largeur nulle dans les fichiers .cursorrules et CLAUDE.md, qui survivent à la suppression des paquets malveillants.
  • Action requise : auditer les dépendances installées du 22 au 29 mai 2026, inspecter les fichiers de contexte IA avec un éditeur hex, et révoquer l'ensemble des credentials présents sur les environnements potentiellement exposés.

Les faits

Le 25 mai 2026, les chercheurs de Socket Security ont détecté les premiers signaux d'une campagne de compromission de chaîne d'approvisionnement coordonnée, baptisée TrapDoor. Entre le 22 mai à 20h20 UTC et le 29 mai 2026, des acteurs malveillants — non encore formellement attribués à un groupe APT connu — ont publié 34 paquets malveillants répartis sur trois registres open-source majeurs : npm, PyPI (Python Package Index) et Crates.io (Rust). Ces paquets ont été déclinés en 384 versions distinctes, contaminant plus de 35 000 dépôts avant la divulgation publique le 29 mai. La médiane de détection post-publication s'est établie à 5 minutes et 27 secondes — mais les paquets ont circulé librement pendant trois jours complets, laissant le temps aux développeurs de les intégrer dans leurs projets et leurs pipelines CI/CD.

La stratégie de ciblage des victimes révèle une connaissance précise des workflows des développeurs blockchain et IA. Les paquets adoptent des noms conçus pour imiter des outils légitimes de sécurité ou des utilitaires de build : wallet-security-checker, defi-risk-scanner, sui-framework-helpers, eth-security-auditor, move-compiler-tools. La sémantique sécurité de ces noms — "security checker", "risk scanner", "auditor" — exploite le biais cognitif des développeurs qui perçoivent ces outils comme légitimes, voire nécessaires, dans un contexte de développement DeFi où la sécurité du code est une préoccupation constante. Le premier artefact documenté est eth-security-auditor sur PyPI, publié le 22 mai 2026 à 20h20 UTC.

Le payload est conçu pour une exfiltration maximale depuis les environnements de développement. Les cibles primaires sont les keystores de wallets cryptographiques des écosystèmes Solana, Sui et Aptos — des actifs directement convertibles en liquidités par les attaquants. Les cibles secondaires incluent les clés SSH, les credentials cloud (AWS, GCP, Azure), les données de navigateurs, les variables d'environnement et l'ensemble des clés API présentes dans les répertoires de travail. Cette double cible — wallets crypto et credentials d'infrastructure cloud — permet de monétiser la compromission à court terme (vol de fonds) et à long terme (accès persistant aux pipelines CI/CD et aux environnements de production).

La véritable innovation technique de TrapDoor réside dans son mécanisme de persistance. Les attaquants injectent des directives cachées utilisant des caractères Unicode à largeur nulle — U+200B (Zero Width Space), U+200C (Zero Width Non-Joiner), U+200D (Zero Width Joiner) — invisibles à la lecture humaine dans un éditeur de texte standard — dans deux types de fichiers de configuration spécifiques aux outils de codage assistés par IA : les fichiers .cursorrules (configuration de l'IDE Cursor) et les fichiers CLAUDE.md (configuration de Claude Code). Ces caractères invisibles contiennent des instructions qui manipulent les agents IA de codage pour exécuter de fausses "routines de scan de sécurité" lors des sessions futures. La persistance est maintenue même après la suppression complète des paquets malveillants du projet.

Ce mécanisme de persistance constitue un vecteur d'attaque inédit qui mérite une attention particulière de la communauté de la sécurité. Il démontre que des acteurs malveillants anticipent l'adoption massive des outils de développement assistés par IA et conçoivent des mécanismes qui survivent aux remèdes traditionnels — suppression des dépendances, rotation des secrets, réinstallation des environnements. Pour un attaquant, compromettre le fichier CLAUDE.md ou .cursorrules d'un développeur revient à compromettre son assistant de codage IA lui-même, transformant l'outil de productivité en vecteur de compromission persistant à chaque nouvelle session.

La campagne TrapDoor cible un écosystème à haute valeur financière et à maturité sécurité souvent insuffisante. Les développeurs DeFi et blockchain manipulent des keystores donnant accès à des actifs valant parfois plusieurs millions d'euros, dans des environnements de développement qui ne bénéficient pas des mêmes contrôles de sécurité que les systèmes de production. L'absence fréquente de secrets management structuré (HashiCorp Vault, AWS Secrets Manager) dans les environnements de développement blockchain rend ces cibles particulièrement vulnérables à l'exfiltration via des dépendances malveillantes.

Aucune attribution à un groupe APT connu n'a été établie par Socket Security au 31 mai 2026. La sophistication de la campagne — coordination simultanée sur trois registres de packages, ciblage précis de niches de développement spécialisées, mécanisme de persistance exploitant les outils IA — suggère un acteur avec des capacités opérationnelles avancées, potentiellement motivé par le vol direct de fonds cryptographiques ou la compromission d'infrastructures de projets blockchain à capitalisation significative.

Pour les équipes de sécurité et les RSSI, TrapDoor marque un point d'inflexion dans la menace supply chain. La chaîne d'attaque est désormais complète et automatisable : compromission de l'environnement de développement via une dépendance malveillante, exfiltration de credentials, persistance via les fichiers de contexte IA, et potentiellement — si les credentials dérobés incluent des accès CI/CD — compromission des pipelines de déploiement en production. Les développeurs blockchain et IA ne sont plus seulement des cibles finales : ils deviennent le vecteur d'entrée vers les protocoles DeFi et les infrastructures cloud qui gèrent des actifs de valeur considérable.

Impact et exposition

Les développeurs ayant installé l'une des 34 dépendances malveillantes entre le 22 et le 29 mai 2026 sont à considérer comme compromis. L'exposition dépasse les keystores de wallets : tout credential présent dans l'environnement de développement — AWS, GCP, Azure, GitHub, tokens npm, clés API — est potentiellement exfiltré. Le mécanisme de persistance via .cursorrules et CLAUDE.md signifie que les environnements infectés restent compromis même après suppression des paquets. Les organisations utilisant ces environnements pour des déploiements CI/CD doivent considérer leur pipeline comme potentiellement backdooré. La surface d'exposition réelle dépasse les 35 000 dépôts identifiés car de nombreux développeurs n'ont pas tracé leurs installations de dépendances.

Recommandations

  • Audit immédiat des dépendances : Vérifier l'historique d'installation npm, pip et cargo entre le 22 et le 29 mai 2026 via les lock files, npm audit, pip audit et cargo audit — croiser avec la liste des 34 paquets publiée par Socket Security.
  • Rotation complète des credentials : Révoquer et régénérer immédiatement tous les keystores de wallets cryptographiques, clés SSH, credentials AWS/GCP/Azure, tokens GitHub et clés API présents sur les machines potentiellement exposées.
  • Purge des fichiers de contexte IA : Inspecter .cursorrules et CLAUDE.md avec un éditeur hex (xxd fichier | grep -E "e2 80 8b|e2 80 8c|e2 80 8d") pour détecter les caractères Unicode à largeur nulle. En cas de doute, supprimer et régénérer ces fichiers depuis une version git antérieure au 22 mai 2026.
  • Audit des pipelines CI/CD : Vérifier les secrets et variables d'environnement dans GitHub Actions, GitLab CI, Jenkins — procéder à une rotation complète si des accès CI/CD étaient présents sur les machines compromises.
  • Gouvernance des dépendances : Implémenter la vérification des signatures de packages (Sigstore pour npm/PyPI) et bloquer les packages non signés dans les environnements de développement sensibles.

Comment détecter les caractères Unicode invisibles dans mes fichiers .cursorrules ou CLAUDE.md ?

Sous Linux ou macOS, exécutez xxd .cursorrules | grep -E "e2 80 8b|e2 80 8c|e2 80 8d|ef bb bf" pour détecter les caractères Unicode à largeur nulle les plus courants (U+200B, U+200C, U+200D, U+FEFF). Alternativement, cat -v .cursorrules révèle les caractères non imprimables. Sous Windows, ouvrez le fichier dans HxD ou 010 Editor et cherchez les séquences d'octets E2 80 8B, E2 80 8C ou E2 80 8D. Si vous trouvez des séquences suspectes, ne tentez pas de les éditer manuellement — supprimez le fichier entier et recréez-le depuis une version propre vérifiée dans votre historique git, en vous assurant que le commit source précède le 22 mai 2026.

Votre infrastructure est-elle exposée ?

Ayi NEDJIMI réalise des audits de sécurité ciblés pour identifier et corriger vos vulnérabilités avant qu'elles ne soient exploitées.

Demander un audit