Fuite de S1ngularity : GitHub et NPM affectés 🚨
Des enquêtes récentes sur l'attaque de la chaîne d'approvisionnement baptisée « s1ngularity » contre Nx révèlent une fuite massive d'identifiants : des milliers de jetons de compte et de secrets de dépôt ont été exposés, avec des répercussions sur plusieurs phases de l'incident. Un rapport post-incident de Wiz détaille l'ampleur de l'exfiltration et fournit un aperçu de son évolution et de son impact.
Selon l'évaluation publiée par les chercheurs de Wiz, la violation a entraîné l'exposition de 2 180 comptes et 7 200 référentiels en trois phases distinctes, avec de nombreux secrets toujours valides et risque de dommages continusLe livre blanc fournit des détails sur la chronologie, les techniques de l'attaquant et la nature des secrets divulgués. 🔍📈
L'attaque de la chaîne d'approvisionnement Nx ⚠️🚀
Nx est un système open source de création et de gestion de référentiels unique, largement utilisé dans les écosystèmes JavaScript/TypeScript à l'échelle de l'entreprise. Avec des millions de téléchargements hebdomadaires sur le registre NPM, un package compromis a un impact considérable sur de nombreuses intégrations et pipelines de développement. ⚙️
Vecteur de compromis et date de l'incident 📅
Le 26 août 2025, un attaquant a exploité un workflow GitHub Actions vulnérable dans le dépôt Nx pour publier une version malveillante du package sur NPM. Ce package contenait un script de post-installation malveillant nommé « telemetry.js » qui agissait comme un logiciel malveillant d'extraction d'identifiants sur les systèmes affectés. 🔥
Comment fonctionne le malware telemetry.js 🕵️♂️
Le malware telemetry.js agissait comme un voleur d'identifiants sous Linux et macOS, tentant de voler des jetons GitHub, des jetons NPM, des clés SSH, des fichiers .env, des portefeuilles de cryptomonnaies et d'autres secrets, puis de les transférer vers des dépôts GitHub publics nommés « s1ngularity-repository ». Ce modèle permettait à l'attaquant de centraliser et d'exposer les informations volées. 🔐

Source : Wiz
L'attaquant a également intégré des outils de ligne de commande pour plateformes d'IA (par exemple, Claude, Q et Gemini) afin d'automatiser la recherche et la collecte à l'aide d'invites ciblées. Wiz documente l'évolution de l'invite pendant l'attaque, optimisant l'extraction et contournant les rejets de modèles pour certaines instructions, reflétant ainsi l'adaptation active de l'acteur aux techniques LLM. ✨💡
Portée d'impact : rayon et phases des dégâts 📈🔥
L'incident s'est déroulé en trois phases. Lors de la première, entre le 26 et le 27 août, des versions compromises de Nx ont directement affecté 1 700 utilisateurs et divulgué plus de 2 000 secrets uniques, en plus d'exposer environ 20 000 fichiers provenant de systèmes infectés. GitHub est intervenu, mais une grande partie des données avait déjà été dupliquée.
- 🔹 Phase 1 (26-27 août) : 1 700 utilisateurs touchés, environ 2 000 secrets divulgués, 20 000 fichiers compromis.
- 🔸 Phase 2 (28-29 août) : Utilisation de jetons divulgués pour convertir des référentiels privés en référentiels publics ; 480 comptes supplémentaires compromis et 6 700 référentiels exposés.
- 🔹 Phase 3 (à partir du 31 août) : attaque ciblant une organisation victime utilisant comptes compromis pour publier 500 dépôts privés supplémentaires.
Au cours de la deuxième phase, les attaquants ont utilisé des jetons GitHub volés pour rendre publics des dépôts privés et les renommer avec la chaîne « s1ngularity », amplifiant ainsi l'exposition. Lors de la troisième phase, une cible spécifique a été exploitée pour publier des centaines de dépôts privés supplémentaires, démontrant ainsi la persistance et l'intensification de l'attaque. 🎯

Source : Wiz
Réponse et atténuation du projet Nx 🔧✅
L'équipe Nx a publié une analyse des causes profondes sur GitHub expliquant comment une injection dans le titre d'une pull request combinée à une utilisation non sécurisée de pull_request_target a permis l'exécution de code arbitraire avec des autorisations élevées, déclenchant le pipeline de publication et facilitant l'exfiltration du jeton de publication npm. 🛠️
Les mesures mises en œuvre comprenaient la suppression des packages malveillants, la révocation et la rotation des jetons compromis, et l'instauration d'une authentification à deux facteurs pour tous les comptes d'éditeur. De plus, Nx a adopté le modèle d'éditeur de confiance de NPM et a ajouté l'approbation manuelle des workflows déclenchés par les relations publiques.
Conseils rapides et points clés ✏️
- ✅ Examinez et faites pivoter les jetons et les secrets immédiatement si une compromission est suspectée.
- 📌 Évitez l’utilisation dangereuse de pull_request_target et appliquez les approbations manuelles sur les flux sensibles.
- 🔧 Implémentez une authentification multifacteur et des modèles de publication fiables tels que Trusted Publisher.
- ⚡ Surveillez les référentiels publics et effectuez des recherches secrètes automatisées pour une détection précoce.
Définition des extraits et FAQ ✨
Qu'est-ce que telemetry.js ?
telemetry.js est le nom du script post-installation malveillant inclus dans la version compromise du package Nx ; il a agi comme un voleur d'informations d'identification sur les systèmes Linux et macOS pour récolter et exfiltrer des secrets vers des référentiels publics contrôlés par l'attaquant.
Combien de comptes et de référentiels ont été affectés ?
Selon le rapport de Wiz, l'attaque a exposé 2 180 comptes et 7 200 référentiels au cours des trois phases documentées de l'incident, avec de nombreux secrets toujours valables et un risque d'impact continu. 📊
461 environnements TP3T ont connu des mots de passe compromis, soit près du double des 251 environnements TP3T de l'année précédente. Téléchargez le rapport Picus Blue 2025 pour une analyse complète de la prévention, de la détection et des tendances en matière d'exfiltration de données. 📈
Le rapport fournit des mesures, des recommandations et des études de cas pour renforcer les défenses et améliorer la réponse aux fuites secrètes.