Des chercheurs de Koi Security ont découvert une campagne de logiciels malveillants, baptisée PhantomRaven, qui a compromis plus de 86 000 téléchargements de paquets npm, dérobant des identifiants et des secrets à des développeurs du monde entier.
Les chercheurs ont indiqué que l’attaque dissimule «… le code malveillant dans des dépendances invisibles pour l’analyse des dépendances sur laquelle s’appuient la plupart des outils de sécurité.»
- L’IA et l’automatisation alimentent de nouveaux risques pour la chaîne d’approvisionnement
- Un paquet propre avec un sombre secret
- De l’installation au vol de données
- La montée des attaques par slopsquatting
- Verrouillez votre pipeline de développement
- La nouvelle ère des menaces visant la chaîne d’approvisionnement
L’IA et l’automatisation alimentent de nouveaux risques pour la chaîne d’approvisionnement
L’attaque met en évidence les risques croissants qui pèsent sur l’écosystème open source, où les outils automatisés et le codage assisté par l’IA deviennent des pratiques courantes.
Les développeurs s’appuient sur l’analyse des dépendances pour valider les paquets npm avant de les utiliser, mais PhantomRaven a complètement contourné ces mesures de protection.
En exploitant des fonctionnalités obscures de npm et la confiance des développeurs dans les noms de paquets générés par l’IA, les attaquants ont pu distribuer du code malveillant sans être détectés pendant des mois.
Cette campagne démontre que les audits traditionnels des dépendances et l’analyse statique ne peuvent pas protéger complètement les chaînes d’approvisionnement logicielles.
L’approche de PhantomRaven permet aux acteurs malveillants de contrôler le code qui s’exécute sur la machine d’une victime pendant l’installation, même lorsque le paquet examiné semble propre.
Un paquet propre avec un sombre secret
Les paquets malveillants semblaient inoffensifs — il s’agissait souvent de simples scripts «Hello, world!» sans dépendances visibles.
La charge utile réelle résidait dans ce que les chercheurs de Koi ont appelé les dépendances dynamiques distantes (RDD). Il s’agit de références HTTP dissimulées qui récupéraient du code malveillant depuis des serveurs contrôlés par les attaquants pendant l’installation.
Lorsqu’un développeur exécutait npm install, le gestionnaire de paquets récupérait la dépendance invisible depuis une URL externe.
Comme npm et la plupart des scanners de sécurité ne suivent pas les URL HTTP, ces dépendances ont échappé à la détection.
Chaque installation récupérait une nouvelle charge utile depuis le serveur de l’attaquant, permettant une diffusion de code personnalisée en fonction de l’adresse IP ou de l’environnement de l’installateur.
Par exemple, les attaquants pouvaient déployer du code inoffensif chez les chercheurs en sécurité tout en diffusant un malware voleur d’identifiants sur les réseaux d’entreprise.
De l’installation au vol de données
Le succès de PhantomRaven reposait sur les scripts de cycle de vie intégrés à npm.
La dépendance malveillante contenait un hook de préinstallation — «preinstall»: «node index.js» — qui s’exécutait automatiquement sans le consentement de l’utilisateur. Ainsi, même des dépendances profondément imbriquées pouvaient déclencher une exécution dans le cadre d’un processus d’installation normal.
Une fois actif, le malware récupérait systématiquement des données du système du développeur, notamment :
- Adresses e-mail provenant de .gitconfig, .npmrc et des variables d’environnement.
- Identifiants CI/CD, notamment les jetons GitHub Actions, les clés GitLab CI, Jenkins, CircleCI et les jetons de publication npm.
- Données d’empreinte système, telles que les adresses IP, les noms d’hôte, les informations sur le système d’exploitation et les noms d’utilisateur.
Les données exfiltrées étaient transmises de manière redondante via HTTP GET, HTTP POST et des connexions WebSocket, garantissant leur acheminement même en présence de restrictions réseau.
La montée des attaques par slopsquatting
Au-delà de son mécanisme de diffusion furtif, PhantomRaven a introduit une nouvelle tactique d’ingénierie sociale appelée slopsquatting — une variante du typosquatting traditionnel.
Au lieu d’imiter des noms de paquets existants, les attaquants ont enregistré des noms plausibles que des assistants IA comme GitHub Copilot ou ChatGPT pourraient halluciner.
Voici quelques exemples :
- eslint-comments au lieu du paquet légitime eslint-plugin-eslint-comments
- unused-imports au lieu de eslint-plugin-unused-imports
- Transform-react-remove-prop-types au lieu de babel-plugin-transform-react-remove-prop-types
Lorsque l’IA suggérait ces paquets inexistants aux développeurs, les utilisateurs installaient à leur insu les versions malveillantes — démontrant ainsi comment l’intelligence artificielle peut involontairement amplifier les risques liés à la chaîne d’approvisionnement.
Verrouillez votre pipeline de développement
Se défendre contre les menaces qui pèsent sur la chaîne d’approvisionnement logicielle, comme PhantomRaven, nécessite de renforcer le contrôle des dépendances, des environnements de compilation et des pratiques des développeurs. Les mesures d’atténuation suivantes présentent des étapes concrètes pour réduire les risques et renforcer l’intégrité du code.
- Limitez les dépendances non vérifiées : bloquez les URL externes et auditez les dépendances pour détecter les liens non autorisés.
- Imposez des compilations reproductibles : verrouillez les versions et empêchez la récupération dynamique pendant l’installation.
- Isolez les environnements de compilation : placez les installations en bac à sable et limitez l’accès sortant au réseau.
- Surveillez le comportement et l’activité réseau: détectez les installations, appels réseau ou exécutions de scripts anormaux.
- Appliquez le principe du moindre privilège : limitez les jetons CI/CD, les variables d’environnement et les autorisations des développeurs.
- Encouragez la vigilance des développeurs : vérifiez la source des paquets, supprimez les dépendances inutilisées et méfiez-vous des noms suggérés par l’IA.
En sécurisant les dépendances et en isolant les compilations, les organisations peuvent combler les failles critiques et renforcer leur cyber-résilience globale.
La nouvelle ère des menaces visant la chaîne d’approvisionnement
PhantomRaven met en évidence l’évolution des menaces visant la chaîne d’approvisionnement logicielle — du typosquatting et du vol d’identifiants à la diffusion dynamique et adaptative de malwares au moyen de vecteurs influencés par l’IA.
À mesure que l’IA générative devient un outil de développement courant, les attaquants exploitent de plus en plus la confiance accordée aux contenus suggérés par les machines.
PhantomRaven montre que les défenses statiques ne suffisent plus. La surveillance comportementale continue, l’isolation des dépendances et les processus de revue du code tenant compte de l’IA doivent devenir des pratiques de sécurité standard.
à mesure que les menaces comme PhantomRaven se sophistiquent, renforcer la sécurité de la chaîne d’approvisionnement logicielle n’est plus facultatif — c’est essentiel.

