Contexte et découverte

En octobre 2025, les équipes de Koi Security et DCODX ont signalé plus d’une centaine de paquets npm malveillants, tous liés à un même acteur. Le malware, nommé PhantomRaven, a été identifié comme un vol d’informations ciblant les développeurs. CrowdStrike, dans une analyse publiée en septembre 2026, estime avec haute confiance que le code a été rédigé à l’aide d’un grand modèle de langage (LLM), en se basant sur des commentaires verbeux, du code placeholder et des motifs de tokenisation typiques des générateurs IA.

L’opérateur se présente comme un « bug bounty hunter » actif depuis novembre 2022 et affirme avoir perçu des primes auprès d’au moins neuf organisations couvrant les secteurs technologique, de la distribution et de l’hôtellerie. Aucun des jeux de données volés n’a été retrouvé sur les marchés de logs, ce qui suggère une utilisation interne du vol pour identifier de nouvelles opportunités de récompenses.

Mécanisme d’infection et exfiltration

PhantomRaven s’appuie sur une technique de slopsquatting et de typosquatting : plus de 100 paquets aux noms similaires à des bibliothèques légitimes ont été publiés sur le registre npm. Chaque paquet intègre une dépendance dynamique distante (RDD) hébergée sur un serveur externe. Cette dépendance n’est pas analysée par les scanners de sécurité car elle est récupérée au moment de l’exécution, contournant ainsi les contrôles de signature de paquets.

Une fois le paquet installé, le code récupéré exécute plusieurs étapes : il scanne le système à la recherche d’adresses e‑mail, collecte les variables d’environnement CI/CD (GitHub Actions, GitLab CI, Jenkins, CircleCI), extrait les informations de configuration Git/npm (nom d’utilisateur, e‑mail), récupère l’adresse IP publique et génère une empreinte système. Toutes ces données sont ensuite envoyées à un serveur contrôlé par l’attaquant via une requête HTTP sécurisée. Le malware enregistre également la date, l’heure et les détails d’exécution du processus, augmentant la valeur des informations récoltées pour la recherche de programmes de récompense.

Analyse de l’utilisation d’un LLM

Le rapport de CrowdStrike cite trois indicateurs de génération IA : des commentaires excessivement détaillés (ex. « // This function parses the CI environment variables »), des blocs de code incomplets remplis de placeholders (ex. TODO: implement token extraction) et une distribution de tokens qui correspond aux modèles de génération de texte plutôt qu’à un style humain. Ces traces suggèrent que l’acteur a exploité un LLM pour accélérer la production de code malveillant, réduisant le temps de développement et la nécessité de compétences approfondies en JavaScript.

Cette approche présente des risques spécifiques : les modèles IA peuvent réutiliser des fragments de code open‑source sous licence, introduisant involontairement des vulnérabilités supplémentaires. De plus, la capacité à générer rapidement de nouveaux paquets augmente la fréquence des campagnes de slopsquatting, rendant la détection basée sur la réputation des noms de paquets moins efficace.

Implications pour la sécurisation des registres npm

Les faits soulignent la nécessité de renforcer les contrôles au niveau du registre npm. La surveillance du nombre de paquets publiés par un même compte, la détection de patterns de noms similaires et l’analyse statique des dépendances dynamiques sont des mesures concrètes. Les deux comptes npm associés à PhantomRaven (jpdhellonpm1 et jpd15) ont été désactivés, mais d’autres identités (jpd12, jpd13, npmhell, etc.) restent actives, illustrant la facilité avec laquelle un acteur peut créer de nouveaux alias.

Enfin, la tentative de diffusion d’un code similaire sur PyPI montre que la menace s’étend au-delà de l’écosystème JavaScript. Les équipes de sécurité doivent adopter une vision multi‑registre, coupler l’analyse de métadonnées avec des solutions de détection d’anomalies basées sur le comportement d’installation, afin de limiter l’impact des campagnes alimentées par des LLM.