Sécurité IA

Sécurité des agents IA : Le piège des packages NPM hallucinés

Découvre comment un faux package NPM inventé par une IA a infecté 230 dépôts GitHub, et comment auditer tes Agent Skills pour éviter le pire.

///6 min de lecture

Tu veux toujours ajouter plus de puissance à ton setup de code : plus de plugins, de skills personnalisés, d’agents toujours plus autonomes. Mais as-tu déjà pris le temps de vérifier ce que ton assistant IA t’incite à installer ?

Quand on empile les outils magiques sans réfléchir, on finit par ouvrir grand la porte de sa machine. Voici l’histoire incroyable, mais bien réelle, d’un package qui n’existait pas, mais que des centaines de développeurs ont aveuglément installé.

TL;DR

Si tu n’as pas le temps de tout lire, retiens cela :

  • Le problème : L’IA hallucine parfois des noms de packages parfaitement crédibles (ex : react-codeshift).
  • Le danger : Ces faux packages finissent copiés-collés dans des fichiers de règles (Agent Skills) sur des centaines de projets GitHub. Un attaquant n’a qu’à créer le vrai package sur NPM avec un payload malveillant.
  • La solution : Traite tes prompts et tes règles d’agent IA comme du code critique de production. Ne laisse jamais un outil IA exécuter un npx install sans ton approbation formelle, et audite méthodiquement chaque dépendance.

L’hallucination NPM : Comment un faux package a “infecté” 237 repos

C’est l’histoire d’un chercheur en cybersécurité chez Aikido qui a fait une découverte virale. En explorant GitHub, il a trouvé un package NPM du nom de react-codeshift mentionné et recommandé dans au moins 237 dépôts.

La subtilité ? Ce package n’avait jamais existé.

C’était une hallucination linguistique pure. Un modèle IA l’avait inventé de toutes pièces en fusionnant logiquement deux outils réels et très utilisés (jscodeshift et react-codemod). L’illusion était parfaite. Le nom avait l’air si pertinent et “vrai” que les développeurs n’ont rien vérifié. Ils l’ont inclus dans leurs fichiers de directives pour agents (les fameux Agent Skills), et le script est passé de fourche (fork) en fourche sur GitHub.

Le chercheur est allé plus loin : il a réellement créé et publié ce fameux package sur NPM, en y cachant du code “inoffensif” servant de mouchard. Bilan : des machines partout dans le monde l’ont téléchargé et exécuté instantanément via de simples appels npx. Ce qui n’était qu’un PoC (Proof of Concept) aurait pu être la plus grande faille supply chain de l’année. Le prochain acteur malveillant, lui, ne sera pas là pour faire de la pédagogie.

Pourquoi les fichiers “Skills” IA sont le vecteur d’attaque parfait

On a l’habitude de surveiller le vénérable fichier package.json. Mais aujourd’hui, les règles du jeu ont changé avec le vibe coding et les agents travaillant dans l’éditeur de code.

Le danger explose à l’intersection de trois facteurs :

  1. L’IA est terriblement convaincante : Les grands modèles de langage sont faits pour générer des suites de mots probables. Un nom faux mais hautement technique a plus de chances d’apparaître qu’un vrai nom farfelu.
  2. La culture du copier-coller aveugle : Un bon prompt trouve vite son public. Un fichier .cursorrules viral se propage sur les réseaux, sans que personne ne fasse l’audit de sécurité des instructions techniques invisibles à l’intérieur.
  3. L’exécution qui ne pardonne pas : Contrairement à un tutoriel de blog qui reste inoffensif tant qu’un humain ne tape pas la commande de ses mains, tes Skills sont lus, interprétés, et exécutés par un agent autonome, qui ne voit aucun problème à lancer npx {nom-du-package-halluciné} en tâche de fond.

Aujourd’hui, l’ennemi n’est pas forcément extérieur. C’est ton propre setup qui peut saborder la sécurité. Les recommandations de l’OWASP concernant les composants tiers obsolètes et vulnérables s’appliquent aujourd’hui brutalement aux prompts que tu donnes à tes IAs.

Les 3 règles d’or pour sécuriser ton setup de vibe coding

Ces supply chain attacks générées par IA demandent de repenser radicalement la confiance qu’on accorde à nos assistants :

Règle 1 : Traite tes “Skills” comme du vrai code

Ne copie-colle strictement aucun fichier de configuration global d’un autre contributeur sans le disséquer ligne par ligne. Si le prompt suggère l’installation d’un outil externe, rends-toi systématiquement sur les registres officiels (NPM, crates.io, PyPI) pour valider l’existence, les métriques et les mainteneurs.

Règle 2 : Mode manuel obligatoire sur le Terminal

Ta barrière de sécurité ultime, c’est ta touche Entrée. Configure tes agents (Cursor, Devin, Copilot ou autres) pour exiger une approbation humaine expresse avant l’exécution de tout script shell ou toute modification de ton environnement. Un agent est un co-pilote, pas le dictateur de ton système de fichiers.

Règle 3 : Applique le principe de la dépendance minimale

Ton plus grand talent actuel ne réside pas dans ce que tu es capable d’ajouter pour coder plus vite. Il réside dans ta sagesse quant à ce que tu vas décider de ne pas ajouter. Une skill sans appel d’outils tiers n’a jamais infecté aucune machine. Limite les plugins et les dépendances magiques, comme préconisé dans les bases de la sécurité des sites web par MDN.

Checklist de sécurité avant d’adopter de nouvelles Skills IA

  • J’ai décortiqué en profondeur le prompt, chaque ligne est comprise et maîtrisée.
  • J’ai personnellement validé sur le registre originel les packages/outils listés dans les instructions.
  • J’utilise un outil IA où le mode d’exécution terminal sans approbation explicite est rigoureusement désactivé.
  • Mon agent autonome tourne avec les moindres privilèges sur ma machine, loin des droits root ou administrateur général.
  • Je stocke et versionne mes règles IA en même temps que le code source du projet.

Un manquement à cette liste suffit pour transformer ton gain de temps en une grave fuite de données d’entreprise via un simple malware bien renommé.

FAQ

Comment valider efficacement l’existence d’un package recommandé par une IA ?

La règle : ne crois pas le nom abstrait. Va sur le site NPM ou le registre concerné. Vérifie la date de naissance du package, la taille de la communauté (téléchargements récents), la présence effective du code source sur un dépôt officiel, et observe s’il n’y a pas eu [de typosquatting évident]. Trop peu de téléchargements = rejet absolu.

Un faux package peut-il faire des ravages sans être appelé spécifiquement via npx ?

Oui. Une fois ajouté silencieusement dans un package.json par un agent zélé, puis installé via un classique npm install par les autres développeurs de l’équipe (ou ta CI/CD en prod), un script de pré/post installation (postinstall) contenu dans le package vérolé va lancer son code malveillant sur absolument toutes les machines.

Est-ce vraiment une bonne idée d’utiliser des Agent Skills que je trouve sur le web ?

Oui, pour s’inspirer. Mais l’usage brut sans relecture est fatal. Considere un fichier d’Agent Skills comme un executable binaire tiers. Tu en extrais la logique, tu adaptes l’angle et l’expertise, mais c’est toi l’auteur final de l’infrastructure de ton assistant de code.

Conclusion

Le mythe du développeur augmenté par IA qui laisse sa machine en roue libre vient de se prendre un mur.

À l’heure où les assistants injectent des morceaux d’écosystèmes fantômes via de puissantes hallucinations technologiques, ta mission principale en tant que Lead est de garantir la validité de chaque instruction système. Fais évoluer ton setup, mais ne l’aveugle jamais. Le “npx go brrr”, c’est officiellement de l’inconscience pure.

Et pour aller plus loin et auditer également tes infrastructures, découvre les 4 fondamentaux sécurité à verrouiller sur ton API IA.