PhantomRaven a utilisé des paquets npm et du code distant pour traquer les secrets des développeurs

Découvrez comment PhantomRaven exploite plus de 100 paquets npm malveillants pour voler des secrets de développeurs et des identifiants CI/CD.

Texte généré par intelligence artificielle, publié sans relecture humaine. Transparence IA

PhantomRaven a utilisé des paquets npm et du code distant pour traquer les secrets des développeurs
Malware

Image d’illustration générée par IA

CrowdStrike a établi un lien entre PhantomRaven et un opérateur motivé par l’appât du gain qui se faisait passer pour un chasseur de bugs. PhantomRaven est un voleur d’informations JavaScript distribué par l’intermédiaire de plus de 100 paquets npm malveillants.

Cette campagne visant la chaîne d’approvisionnement ciblait les développeurs au moyen de techniques de slopsquatting et de typosquatting. Une fois installés, les paquets récupéraient du code supplémentaire depuis une infrastructure contrôlée par l’attaquant, permettant à PhantomRaven d’inspecter les environnements de développement et d’exfiltrer des identifiants, des informations de configuration et des secrets CI/CD.

CrowdStrike estime avec un haut degré de confiance qu’un grand modèle de langage a contribué à produire le malware. Parmi les éléments avancés figurent des commentaires de code exceptionnellement nombreux, des sections incomplètes servant d’emplacements réservés et une analyse statistique des motifs de tokens du code source.

Plus de 100 paquets ciblaient les environnements de développement

Koi Security et DCODX ont identifié la campagne pour la première fois fin octobre 2025. Les paquets malveillants avaient été déposés dans le registre npm, où des développeurs pouvaient les rencontrer en recherchant des dépendances ou en saisissant le nom de paquets.

L’opération combinait deux stratégies de nommage. Le typosquatting consiste à utiliser des noms proches de ceux de paquets légitimes, en espérant que les utilisateurs commettent une faute de frappe ou ne remarquent pas de légères différences. Le slopsquatting cible des noms de paquets plausibles, mais susceptibles d’être suggérés par un LLM alors qu’aucun paquet légitime n’existe sous ce nom.

Plus de 100 paquets ont été mis en ligne au cours de la campagne. Toutefois, aucune liste complète des paquets supprimés, aucun inventaire des versions affectées ni aucun avis de sécurité npm n’ont été publiés.

Au moins deux comptes npm étaient associés à des paquets PhantomRaven publiés :

  • jpdhellonpm1, qui a publié transform-jsbi-to-bigint
  • jpd15, qui a publié sort-imports-es6-autofix

Les deux comptes étaient inaccessibles au moment de la préparation des résultats. D’autres identités liées à cette activité comprennent jpd12, jpd13, npmhell, npmpackagejpd, npmtestdharsh, jpdhackerone11 et packagedharsh.

La perte d’accès à deux comptes constitue une mesure de confinement partielle, mais ne permet pas d’établir que tous les paquets malveillants ou toutes les identités associées ont été supprimés. Rien ne confirme non plus publiquement que l’ensemble de l’infrastructure contrôlée par l’attaquant a été désactivé.

Des dépendances distantes dissimulaient les principales fonctionnalités du voleur

Le modèle de diffusion de PhantomRaven sépare le paquet visible dans npm du code responsable de l’essentiel des activités malveillantes.

Les paquets utilisent une dépendance dynamique distante externe, ou RDD, hébergée sur un serveur contrôlé par l’opérateur. Après l’installation, le paquet récupère les fonctionnalités exécutables depuis cette infrastructure. Cette approche laisse moins de code manifestement malveillant dans l’archive npm elle-même et rend l’inspection statique du paquet publié moins fiable.

Elle offre également davantage de souplesse à l’opérateur. Le code distribué à distance peut potentiellement être modifié sans publier une nouvelle version du paquet, tandis que les défenseurs qui n’examinent que l’artefact présent dans le registre risquent de ne pas voir les mêmes fonctionnalités que celles exécutées sur la machine de la victime.

Le code récupéré analyse l’environnement de développement et peut collecter :

  • Les adresses e-mail et autres données relatives à l’identité du développeur.
  • Des informations sur l’environnement CI/CD local.
  • Une empreinte système comprenant l’adresse IP publique de la machine.
  • Des informations d’exécution ainsi que la date et l’heure actuelles.
  • Les noms d’utilisateur et adresses e-mail enregistrés dans la configuration de Git et de npm.
  • Les variables d’environnement associées à GitHub Actions, GitLab CI, Jenkins et CircleCI.
  • Les jetons d’authentification, les identifiants des systèmes de contrôle de version et autres secrets exposés.

Les informations collectées sont transmises à un serveur contrôlé par l’attaquant.

Aucun comportement destructeur ou assimilable à un rançongiciel n’a été signalé. Rien n’indique que PhantomRaven chiffre des données, endommage des systèmes ou perturbe délibérément des pipelines de build. Sa finalité documentée est la collecte d’informations.

Les conséquences peuvent néanmoins dépasser le poste de travail du développeur. Un jeton CI/CD dérobé peut donner accès aux dépôts de code source, aux systèmes de build, aux workflows de déploiement ou à d’autres ressources de l’entreprise, selon les autorisations qui lui sont associées.

Des traces de LLM apparaissaient dans le code source du malware

CrowdStrike a attribué l’utilisation d’un LLM avec un haut degré de confiance, sans prétendre pouvoir déterminer directement quel modèle ou service avait été utilisé. Cette évaluation repose sur plusieurs caractéristiques observées dans le code de PhantomRaven.

Le volume et le style des commentaires constituaient l’un des signaux. Les développeurs de malwares documentent parfois leur code, mais des explications verbeuses qui reformulent des opérations élémentaires peuvent ressembler à du contenu produit par des assistants de programmation. Les chercheurs ont également trouvé une logique inachevée servant d’emplacement réservé, ce qui laisse penser que l’ossature générée n’a peut-être pas été entièrement finalisée ou nettoyée.

L’analyse statistique des tokens a fourni un autre indicateur. Ce type d’analyse examine les motifs selon lesquels le code et le texte qui l’accompagne sont construits, à la recherche de distributions compatibles avec un contenu généré par un modèle.

Aucune de ces caractéristiques ne prouve à elle seule l’implication de l’IA. Les commentaires peuvent être rédigés manuellement, les emplacements réservés sont courants dans les logiciels inachevés et les classificateurs fondés sur les tokens ne sont pas infaillibles. Prises dans leur ensemble, elles ont toutefois conduit CrowdStrike à conclure qu’un LLM avait probablement contribué à créer PhantomRaven.

Cette conclusion ne signifie pas que la campagne était autonome. Un opérateur humain semble avoir sélectionné les cibles, créé les identités dans le registre, publié les paquets, géré l’infrastructure externe et reçu les informations dérobées.

La valeur opérationnelle de l’IA générative est plus concrète : elle peut réduire les efforts nécessaires pour rédiger du code, expliquer des API inconnues, produire des variantes et assembler un outil fonctionnel. PhantomRaven montre comment ces gains d’efficacité peuvent être appliqués à des attaques visant la chaîne d’approvisionnement logicielle plutôt qu’au développement légitime.

L’opérateur présentait son activité comme de la recherche dans le cadre de bug bounties

Selon CrowdStrike, l’acteur est actif depuis novembre 2022 et se présente publiquement comme un chasseur de bugs. Cette personne affirme avoir reçu des récompenses d’au moins neuf organisations des secteurs de la technologie, de la distribution et de l’hôtellerie.

Maddie Stewart a indiqué qu’en août 2025, l’acteur avait affirmé avoir découvert une faille d’exécution de code à distance en utilisant un paquet npm malveillant. Selon cette déclaration, le paquet aurait compromis une machine cible en exécutant son script preinstall et aurait permis une exécution de code à distance.

Cette version des faits souligne une distinction fondamentale entre les tests de sécurité autorisés et la compromission. Publier un paquet qui vole des informations ou exécute du code sur des systèmes sans autorisation explicite ne constitue pas un test réalisé dans le cadre défini d’un programme de bug bounty.

CrowdStrike n’a pas observé de données PhantomRaven proposées sur des places de marché de journaux de vol issus de stealers. L’entreprise estime donc que l’opérateur utilise probablement le malware pour identifier des vulnérabilités susceptibles de faire l’objet d’un bug bounty, plutôt que pour vendre les données collectées par l’intermédiaire de circuits criminels établis.

Cette évaluation décrit la motivation probable, pas la légitimité de la méthode. Les identités des développeurs, les jetons et les variables CI/CD restent des données sensibles, que l’opérateur ait l’intention de les monétiser dans le cadre d’un signalement de bug bounty ou sur un marché criminel.

L’acteur semble également avoir tenté de publier sur Python Package Index, ou PyPI, des paquets contenant un code similaire de vol d’informations. L’activité connue pourrait donc ne pas se limiter à l’écosystème npm.

Les défenseurs doivent analyser les dépendances et les secrets exposés

Aucun correctif éditeur n’est nécessaire, car PhantomRaven n’est pas une vulnérabilité propre à un produit logiciel donné. Aucun CVE, score CVSS, niveau de gravité officiel, nombre confirmé de victimes, signature de détection ni avis complet de remédiation n’a été signalé.

Les organisations devraient commencer par examiner les dépendances npm, les fichiers de verrouillage, les journaux d’installation et les caches de paquets internes à la recherche de bibliothèques inattendues. Les deux paquets identifiés publiquement, transform-jsbi-to-bigint et sort-imports-es6-autofix, méritent une investigation directe, mais ne doivent pas être considérés comme une liste exhaustive d’indicateurs.

Les équipes de sécurité devraient également examiner :

  • Les événements d’installation de paquets ayant déclenché preinstall ou d’autres scripts de cycle de vie.
  • Les connexions sortantes établies pendant l’installation de dépendances.
  • Les dépendances qui téléchargent du code exécutable depuis une infrastructure extérieure à npm.
  • Les accès inattendus aux fichiers de configuration de Git et de npm.
  • Les processus lisant les variables d’environnement CI/CD.
  • Les identifiants récemment créés ou modifiés associés aux comptes de développeurs et d’automatisation.

Si un paquet suspect a été exécuté, sa suppression ne suffit pas. Les identifiants potentiellement exposés de GitHub, GitLab, npm, Jenkins, CircleCI et autres systèmes CI/CD doivent être révoqués ou renouvelés, et les journaux des dépôts et des pipelines doivent être examinés pour détecter d’éventuels accès ultérieurs.

Les équipes peuvent réduire leur exposition future en épinglant les dépendances, en imposant des fichiers de verrouillage, en limitant les scripts de cycle de vie lorsque cela est possible sur le plan opérationnel et en contrôlant les accès réseau pendant les builds. Les nouveaux paquets doivent être évalués selon l’historique de leur éditeur, la disponibilité de leur code source, l’existence de téléchargements distants inattendus et les éventuelles incohérences entre leur fonction annoncée et leur comportement lors de l’installation.

Le principal avantage de PhantomRaven ne résidait pas dans une exploitation sophistiquée. Il reposait sur l’accès accordé par la confiance des développeurs, combiné à du code distant qui restait extérieur au paquet inspecté initialement.

À lire aussi

Sources

Cet article est une réécriture originale fondée sur les sources ci-dessous.

Sujets liésPhantomRavenpaquets npm malveillantssécurité de la chaîne logiciellevol de secretstyposquattingslopsquattingsecrets CI/CD
Retour à l'accueil