PhantomRaven : Le malware caché dans 126 packages npm vole les tokens GitHub des développeurs
Séraphine Clairlune
PhantomRaven : Menace discrète mais dangereuse dans l’écosystème npm
Les chercheurs en cybersécurité viennent de dévoiler une campagne d’attaque logicielle particulièrement inquiétante qui cible directement les développeurs. PhantomRaven, ainsi nommé par l’équipe de Koi Security, représente une menace sophistiquée exploitant les dépendances des projets npm pour voler des tokens d’authentification, des secrets CI/CD et des identifiants GitHub. Cette campagne malveillante a déjà infiltré plus de 126 packages dans le registre npm, attirant plus de 86 000 installations depuis son lancement en août 2025. Dans un contexte où les chaînes d’approvisionnement logicielle sont devenues des cibles de choix pour les attaquants, PhantomRaven illustre parfaitement comment les menaces évoluent pour exploiter les faiblesses des systèmes de sécurité traditionnels.
L’attaque PhantomRaven : Mécanismes et techniques d’infiltration
La stratégie des dépendances dynamiques distantes (RDD)
Ce qui rend PhantomR particulièrement dangereux et difficile à détecter réside dans son utilisation des dépendances dynamiques distantes (RDD). Contrairement aux dépendances normales qui sont résolues depuis le registre officiel npmjs.com, ces packages malveillants pointent vers des URL HTTP personnalisées, dans ce cas précis vers “packages.storeartifact[.com]”. Chaque fois qu’un développeur instène l’un de ces packages, npm récupère le code malveillant depuis ce serveur externe contrôlé par l’attaquant.
Cette technique présente plusieurs avantages pour les attaquants :
- Invisibilité : Comme le souligne Oren Yomtov, chercheur en sécurité, “npmjs[.]com ne suit pas ces URLs”. Les scanners de sécurité ne les récupèrent pas et les outils d’analyse de dépendances les ignorent.
- Échappement aux contrôles : Pour tous les systèmes de sécurité automatisés, ces packages affichent “0 dépendances”, leur donnant une apparence totalement inoffensive.
- Flexibilité des payloads : Le contrôle de l’URL permet à l’attaquant de modifier à volonté les payloads malveillants, rendant l’analyse statique inefficace.
Dans la pratique, cette méthode permet aux attaquants d’adopter une approche “sournoise” en servant initialement un code parfaitement inoffensif, puis en poussant une version malveillante une fois le package largement adopté. Cette technique de contamination progressive rend la détection encore plus complexe pour les outils traditionnels.
Le phénomène du “slopsquatting”
Le choix des noms de packages par les attaquants n’est pas le fruit du hasard. PhantomRaven exploite un phénomène émergent connu sous le nom de “slopsquatting” ou “typosquatting amélioré”. Cette technique consiste à enregistrer des noms de packages qui semblent plausibles mais n’existent pas réellement, souvent générés par des modèles de langage (LLM) qui “hallucinent” des noms lors de suggestions aux développeurs.
Selon les experts, ce phénomène s’explique par plusieurs facteurs :
- L’utilisation croissante d’outils d’assistance IA qui génèrent des suggestions de packages
- La difficulté pour les développeurs de vérifier systématiquement l’existence d’un package
- La similarité intentionnelle entre les noms malveillants et les packages légitimes
Par exemple, des packages comme “op-cli-installer”, “unused-imports”, “badgekit-api-client”, “polyfill-corejs3” ou “eslint-comments” peuvent sembler familiers aux développeurs JavaScript/TypeScript, ce qui les encourage à les installer sans méfiance. Ces noms sont calculés pour capitaliser sur des tendances actuelles et des noms existants, augmentant ainsi la probabilité d’installation.
Impact et conséquences pour les développeurs
Ce que le malware vol réellement
Une fois installé, PhantomRaven déclenche son mécanisme malveillant via un hook pré-installation qui exécute le payload principal. Le malware est conçu pour collecter systématiquement plusieurs types d’informations sensibles :
- Adresses e-mail : Le scan de l’environnement de développement récupère toutes les adresses e-mail présentes sur la machine
- Informations CI/CD : Détails sur les environnements d’intégration continue et déploiement continu
- Empreinte système : Informations techniques sur la configuration de la machine
- Adresse IP publique : Localisation géographique approximative du développeur
Toutes ces données sont ensuite exfiltrées vers un serveur distant contrôlé par les attaquants. Cette collecte d’informations multiples permet aux attaquants de reconstruire un profil complet de l’environnement de développement, facilitant d’éventuelles attaques ultérieures.
Échelle et chronologie de l’attaque
L’activité de PhantomRaven a débuté en août 2025, avec le premier upload de packages malveillants dans le registre npm. Depuis, la campagne a considérablement grandi, passant d’un nombre limité de packages initiaux à 126 bibliothèques identifiées à ce jour. Ce nombre continue probablement d’augmenter, indiquant une campagne active et en expansion.
Selon les données recueillies, ces packages ont généré plus de 86 000 installations au total. Certains packages spécifiques ont des nombres d’installations particulièrement préoccupants :
- unused-imports : 1 350 téléchargements
- eslint-comments : 936 téléchargements
- op-cli-installer : 486 téléchargements
- badgekit-api-client : 483 téléchargements
- polyfill-corejs3 : 475 téléchargements
Ces chiffres révèlent que malgré les efforts de détection, de nombreux développeurs ont déjà installé ces packages compromis, exposant potentiellement leurs projets et leurs organisations à des violations de données.
Comment se protéger contre PhantomRaven
Détection précoce des packages compromis
La première étape pour se protéger consiste à identifier si des packages malveillants ont déjà été installés dans les projets existants. Plusieurs signes peuvent indiquer une potentielle infection :
- Présence de dépendances vers des domaines suspects comme “packages.storeartifact[.com]”
- Exécution inexpliquée de scripts lors de l’installation de packages
- Activité réseau inhabituelle après l’installation de nouvelles dépendances
Pour une détection efficace, les équipes de développement devraient :
- Auditer régulièrement les dépendances de tous les projets
- Utiliser des outils d’analyse de dépendances qui vérifient les URLs des ressources
- Surveiller les journaux d’activité réseau à la recherche de communications avec des serveurs suspects
- Mettre en place une politique de gestion des dépendances qui limite les installations automatiques
Prévention et meilleures pratiques
Pour prévenir les infections futures, plusieurs mesures de sécurité doivent être mises en œuvre :
- Validation rigoureuse des dépendances : Avant toute installation, vérifier l’existence et la légitimité des packages sur le registre npm officiel
- Restriction des scripts de cycle de vie : Configurer npm pour désactiver ou restreindre l’exécution des hooks pré-installation et post-installation
- Isolation des environnements : Utiliser des conteneurs ou environnements virtualisés pour limiter l’impact d’une potentielle infection
- Surveillance continue : Mettre en place des systèmes de détection d’intrusion pour surveiller l’activité réseau et les exécutions de processus suspects
Une autre mesure efficace consiste à utiliser des gestionnaires de packages alternatifs ou des registres internes qui appliquent des politiques de sécurité plus strictes. De nombreuses organisations ont déjà mis en place des registres privés qui agissent comme des intermédiaires sécurisés entre les développeurs et le registre public npm.
L’avenir de la sécurité dans les écosystèmes open source
Défis émergents
PhantomRaven n’est qu’un exemple des menaces émergentes qui ciblent les chaînes d’approvisionnement logicielle. Plusieurs défis majeurs se dessinent pour les années à venir :
- L’évolution des techniques d’attaque : Les attaquants continuent d’innover pour contourner les défenses existantes, comme en témoignent les dépendances dynamiques distantes
- Les limites des outils de sécurité traditionnels : La majorité des solutions actuelles se concentrent sur l’analyse statique, qui devient de moins en moins efficace contre les menaces dynamiques
- La complexité croissante des dépendances : Avec des projets modernes pouvant avoir des centaines, voire des milliers de dépendances indirectes, la gestion des risques devient exponentiellement plus complexe
- L’impact de l’IA sur la sécurité : D’une part, l’IA aide les attaquants à créer des noms de plausibles et des payloads sophistiqués ; d’autre part, elle offre également des solutions de détection avancées
Solutions et perspectives
Face à ces défis, plusieurs pistes d’amélioration se dessinent :
- Amélioration des plateformes d’hébergement de packages : Les registres comme npm devront renforcer leurs processus de validation et de surveillance pour détecter plus rapidement les packages malveillants
- Sécurité du cycle de vie des applications (DevSecOps) : Intégrer la sécurité à chaque étape du développement, de la conception au déploiement, plutôt que de l’ajouter comme une couche finale
- Collaboration et partage d’informations : Renforcer les mécanismes de partage de menaces entre organisations et développeurs pour une détection plus rapide
- Éducation et sensibilisation : Former les développeurs aux risques des dépendances et aux bonnes pratiques de sécurité
Selon une étude récente menée par l’ANSSI, plus de 65% des violations de données dans les logiciels open source proviennent de dépendances compromises. Ce chiffre souligne l’importance critique de sécuriser l’ensemble de la chaîne d’approvisionnement, pas seulement le code principal des applications.
Dans le contexte français, l’Agence nationale de la sécurité des systèmes d’information (ANSSI) a récemment publié des recommandations spécifiques pour les organisations utilisant des packages npm, insistant sur la nécessité d’adopter une approche proactive de la sécurité des dépendances.
Conclusion et prochaines actions
La découverte de PhantomRaven représente un rappel brutal des risques croissants auxquels sont confrontés les écosystèmes open source. En exploitant les dépendances dynamiques distantes et le phénomène du slopsquatting, les attaquants ont réussi à créer une campagne particulièrement insidieuse qui échappe aux détecteurs traditionnels. Avec plus de 86 000 installations potentiellement compromises, l’impact de cette campagne pourrait être considérable pour les développeurs et leurs organisations.
Pour se protéger contre PhantomRaven et les menaces similaires, les équipes de développement devraient immédiatement :
- Auditer leurs projets existants à la recherche de packages suspects
- Mettre en place des politiques strictes de validation des dépendances
- Désactiver ou restreindre l’exécution des scripts de cycle de vie
- Surveiller activement l’activité réseau des machines de développement
À plus long terme, cette campagne souligne la nécessité d’une approche holistique de la sécurité des dépendances, combinant outils automatisés, processus rigoureux et formation continue des développeurs. Dans un monde où chaque ligne de code peut potentiellement introduire une vulnérabilité, la vigilance et la proactivité ne sont plus des options mais des nécessités.
Face à l’évolution constante des menaces, PhantomRaven nous rappelle une évidence : la sécurité des logiciels dépend de chaque maillon de la chaîne d’approvisionnement, des concepteurs aux développeurs, en passant par les mainteneurs de packages et les fournisseurs d’outils. Seule une approche collaborative et proactive permettra de préserver la confiance dans les écosystèmes open source qui sont aujourd’hui fondamentaux pour notre infrastructure numérique.