PhantomRaven : La menace cachée dans 126 packages npm volant les tokens GitHub
Aurélien Fontevive
Une véritable bombe à retardement dans l’écosystème npm
Cybercriminales infiltrés 86 000 installations par des packages npm malveillants codés sous le nom de PhantomRaven dérobant les tokens d’authentification, les secrets CI/CD et les identifiants GitHub. Décryptage de cette attaque sophistiquée utilisant des dépendances dynamiques invisibles aux scanners traditionnels.
Les chercheurs de Koi Security ont révélé une campagne active d’attaque par la chaîne logicielle ciblant le registre npm avec plus de 100 packages dangereux. L’activité a été évaluée comme ayant commencé en août 2025, avec un total de 126 bibliothèques npm infectées cumulant plus de 86 000 téléchargements d’après les données recueillies par la société de sécurité DCODX. Cette menace représente un risque majeur pour les équipes DevSecOps, puisqu’elle permet à des attaquants d’accéder aux environnements de développement complets.
Selon une étude récente d’ANSSI, plus de 70% des développeurs utilisent des packages npm sans vérification rigoureuse de leurs dépendances, créant un terrain propice à ce type d’attaques.
Le mécanisme d’infection : contourner les systèmes de sécurité
L’attaque repose sur une technique innovante utilisée par les cybercriminels pour contourner les mécanismes de sécurité standard. Plutôt que d’intégrer directement le code malveillant dans les packages, les attaquants utilisent ce qu’on appelle des Remote Dynamic Dependencies (RDD). Ces dépendances pointent vers des URL personnalisées hébergées sur des serveurs tiers (dans ce cas, “packages.storeartifact[.]com”), au lieu d’utiliser les sources officielles npmjs[.]com.
Voici comment l’infection se déroule :
- Le développeur installe un package “apparemment innocent” visible dans le registre npm
- Ce package contient une instruction de dépendance dynamique pointant vers un serveur distant
- npm, conformément à sa configuration standard, ne suit pas ces URLs externes
- Les scanners de sécurité et les outils d’analyse des dépendances ignorent également ces ressources externes
- Une fois installé, le package exécute un hook de pré-installation qui récupère la dépendance malveillante depuis le serveur distant
- Le payload principal se charge et commence à collecter des informations sur l’environnement
“npmjs[.]com ne suit pas ces URLs, les scanners de sécurité ne les récupèrent pas et les outils d’analyse des dépendances les ignorent. Pour tous les systèmes de sécurité automatisés, ces packages apparaissent comme ayant ‘0 dépendances’”, explique Oren Yomtov, chercheur en sécurité cité par Koi Security.
Analyse technique du malware PhantomRaven
Une fois déployé, le malware PhantomRaven met en œuvre plusieurs techniques avancées pour collecter des informations sensibles et contourner les mécanismes de détection :
Collecte systématique de données
Le malware exécute un balayage complet de l’environnement développeur pour :
- Collecter les adresses e-mail associées au compte utilisateur
- Identifier les secrets de CI/CD présents dans les variables d’environnement
- Recueillir des informations sur les systèmes de build utilisés
- Capturer des empreintes système incluant l’adresse IP publique
- Extraire les tokens d’accès GitHub et autres plateformes de versionnement
Transmission discrète des données
Les informations collectées sont exfiltrées vers un serveur contrôlé par les attaquants via des connexions HTTPS standard, rendant difficile leur détection par les outils de surveillance réseau traditionnels. Le malware encode les données sensibles avant transmission pour éviter les détections basées sur des signatures spécifiques.
Évolution dynamique du payload
La capacité de modifier les dépendances dynamiques permet aux attaquants de :
- Servir du code totalement inoffensif initialement pour éviter la détection
- Mettre à jour silencieusement le payload après que le package ait acquis en popularité
- Personnaliser les attaques en fonction de l’environnement ciblé
L’impact sur les écosystèmes open source français
L’attaque PhantomRaven expose les vulnérabilités critiques des écosystèmes open source français, particulièrement concernant les pratiques de développement logiciel. Une analyse des packages affectés révèle une exploitation stratégique du phénomène du slopsquatting - l’enregistrement de noms de packages apparemment plausibles mais inexistant par des attaquants qui exploitent l’IA pour générer des noms convaincants que les développeurs confondent avec des packages légitimes.
Voici quelques exemples des packages les plus infectés :
| Package | Téléchargements | Risque identifié |
|---|---|---|
| op-cli-installer | 486 | Vol de tokens secrets |
| unused-imports | 1,350 | Capture données CI/CD |
| badgekit-api-client | 483 | Injection code distant |
| polyfill-corejs3 | 475 | Phishing technique |
| eslint-comments | 936 | Collection données système |
Stratégies de détection et réponses recommandées
Identification des packages suspects
Les équipes de sécurité doivent rechercher les éléments suivants dans les dependencies de leurs projets :
- Dépendances pointant vers des URLs externes non vérifiées
- Scripts lifecycle (preinstall, install, postinstall) avec des appels vers des serveurs tiers
- Packages avec des noms similaires à des projets légitimes mais hébergés sur des serveurs non officiels
- Packages avec un historique de publication récent et peu de dépendants
Mesures de prévention immédiates
- Audit des packages existants : Utiliser des outils de vérification statique pour examiner les dépendances existantes
- Configuration restrictive de npm : Interdire les dépendances dynamiques externes via la configuration npm
- Protection des secrets : Utiliser des systèmes de stockage sécurisés pour les tokens et secrets
- Protection des environnements CI/CD : Isoler les builds automatisés des environnements de développement
- Éducation des développeurs : Former les équipes à identifier les packages suspects
Le rôle des normes et référentiels de sécurité
Les recommandations suivantes s’inspirent des bonnes pratiques décrites dans les normes ANSSI et ISO 27001 :
Normes applicables
- ANSSI, Guide de cybersécurité pour les projets logiciels : Privilégier les dépendances vérifiées et maintenues par des organisations reconnues
- ISO 27034-2 : Évaluer les risques associés aux dépendances tiers et contrôler leur intégrité
- OWASP Top 10 CI/CD Security : Sécuriser les pipelines de build et de déploiement
Bonnes pratiques de sécurité
- Utiliser une liste blanche des sources de packages autorisées
- Exécuter des analyses statiques et dynamiques régulières
- Limiter les permissions des tokens d’accès GitHub à la portée minimale nécessaire
- Utiliser des systèmes de protection des secrets avec rotation automatique
- Isoler les environnements automatisés des réseaux sensibles
Perspectives et recommandations pour les équipes techniques
La menace PhantomRaven illustre une évolution critique dans les techniques d’attaque ciblant les chaînes d’approvisionnement logicielle. Les équipes techniques doivent adapter leurs stratégies pour répondre à ces défis :
Pour les architectes logiciels :
- Adopter une approche de développement plus sécurisée avec vérification des dépendances
- Implémenter des mécanismes de vérification de signature des packages
- Utiliser des solutions de protection des secrets avec rotation automatique
Pour les équipes DevSecOps :
- Intégrer des contrôles de sécurité dans les pipelines CI/CD
- Mettre en place des systèmes d’alerte pour les comportements anormaux
- Surveiller les communications sortantes des environnements de build
Pour les responsables sécurité informatique :
- Évaluer la posture de sécurité des écosystèmes open source
- Former les équipes à l’identification des menaces avancées
- Mettre en place des politiques de limitation des permissions
Conclusions et prochaines étapes
L’attaque PhantomRaven représente un exemple frappant des vulnérabilités critiques de l’écosystème npm et plus largement des chaînes d’approvisionnement logicielle. Cette menace exploitait des blindages dans les outils de sécurité traditionnels en utilisant des dépendances dynamiques externes invisibles aux systèmes automatisés de détection.
Pour protéger efficacement les écosystèmes open source français et internationaux, les organisations doivent :
- Adopter une approche proactive de sécurité des dépendances
- Implémenter des contrôles de sécurité robustes dans les pipelines de développement
- Former les équipes techniques aux menaces émergentes
- Collaborer avec les mainteneurs de packages pour améliorer la transparence
Dans le contexte actuel de cybersécurité où l’IA génère des noms de packages plausibles (slopsquatting) et où les attaquants exploitent les lacunes des outils de sécurité, la vigilance et une posture défensive proactive sont absolument essentielles pour protéger les secrets et les infrastructures critiques des équipes de développement.