Retour au blog

Slopsquatting : quand l'IA recommande des paquets qui n'existent pas

Code6 min de lecture · 27 septembre 2026

L'équipe GetPack

Tu demandes à une IA de code d’ajouter une fonctionnalité. Elle te répond « installe telle bibliothèque », tu copies la commande, tu l’exécutes. Sauf que cette bibliothèque n’existe pas. Ou pire : elle existe, parce qu’un pirate a vu passer la même suggestion avant toi et a enregistré ce nom exprès. Ce mécanisme a un nom, une étude scientifique derrière, et une méthode simple pour s’en protéger.

D’où vient le problème : une étude scientifique précise

En 2025, six chercheurs (Joseph Spracklen, Raveen Wijewickrama, A H M Nazmus Sakib, Anindya Maiti, Bimal Viswanath et Murtuza Jadliwala) publient à ce sujet une étude au 34e symposium USENIX Security, l’une des conférences de référence en sécurité informatique, intitulée « We Have a Package for You! A Comprehensive Analysis of Package Hallucinations by Code Generating LLMs ».

Leur méthode : générer 576 000 extraits de code avec 16 modèles d’IA différents (des modèles commerciaux et des modèles open source), en Python et en JavaScript, puis vérifier si chaque paquet mentionné existe vraiment sur les registres officiels (npm, PyPI). Résultat : 19,7 % des paquets recommandés n’existaient pas. Le taux grimpe à 21,7 % pour les modèles open source, contre 5,2 % pour les modèles commerciaux. Au total, les chercheurs ont recensé 205 474 noms de paquets différents, tous inventés.

Le détail le plus important pour comprendre la suite : ces noms inventés ne sont pas aléatoires d’une fois sur l’autre. Un même modèle, interrogé plusieurs fois avec un prompt proche, a tendance à réinventer le même nom fictif. C’est exactement ce qui rend l’attaque possible.

Comment un pirate en profite : le slopsquatting

Seth Larson, développeur en résidence à la Python Software Foundation, donne un nom à cette technique d’attaque en avril 2025 : le « slopsquatting », contraction de « AI slop » (le contenu de mauvaise qualité généré par IA) et de « typosquatting » (la technique consistant à enregistrer un nom proche d’un nom connu pour piéger une faute de frappe).

Le mécanisme est direct : un attaquant repère, en interrogeant les mêmes modèles d’IA que tout le monde utilise, quels noms de paquets fictifs reviennent souvent. Il enregistre ensuite ce nom, pour de vrai, sur npm ou PyPI, avec du code malveillant à l’intérieur. Il n’a plus qu’à attendre qu’un développeur (ou un agent IA autonome qui exécute les commandes sans supervision) tape npm install nom-invente ou pip install nom-invente en suivant aveuglément la suggestion. La faille n’est plus dans un paquet existant : elle est dans la confiance accordée à un nom qui n’a jamais existé avant que l’attaquant ne le crée.

Le Top 10 OWASP 2025, la référence mondiale des risques de sécurité web, a d’ailleurs créé en 2025 une catégorie dédiée à ce type de risque, « Software Supply Chain Failures », qui élargit l’ancienne catégorie consacrée aux composants vulnérables : la chaîne d’approvisionnement logicielle (d’où viennent tes dépendances, comment elles sont distribuées) est désormais reconnue comme un risque à part entière, pas seulement un détail technique.

Pourquoi ça touche particulièrement le vibe-coding

Quand tu ne codes pas toi-même au quotidien, tu n’as pas forcément le réflexe de vérifier qu’un paquet existe vraiment avant de l’installer : l’IA te dit de le faire, tu le fais. C’est précisément le terrain où le slopsquatting fonctionne le mieux. Un projet de recherche a d’ailleurs constaté qu’un nom de paquet halluciné pouvait réapparaître d’un modèle à l’autre et d’une requête à l’autre, ce qui veut dire que le même faux nom peut circuler largement avant qu’un attaquant ne l’exploite.

Et si c’est l’IA elle-même qui tape la commande ?

Les outils de vibe-coding les plus récents (Claude Code, Replit Agent, et d’autres agents similaires) ne se contentent pas de suggérer une commande : ils peuvent l’exécuter eux-mêmes, sans qu’un humain ne la relise avant qu’elle ne parte. C’est justement ce qui rend le slopsquatting plus dangereux dans ce contexte précis : l’installation de dépendances déclarées dans un fichier de configuration est, par nature, une action considérée comme routinière par ces outils, pas comme une action à risque qui déclenche automatiquement une double vérification. Le nom halluciné n’a même plus besoin de convaincre un humain de taper npm install : il suffit qu’il convainque l’IA de le proposer, une seule fois, pour qu’il se retrouve exécuté.

Ça ne veut pas dire qu’il faut se passer de ces outils, mais que la vérification manuelle décrite plus bas devient encore plus utile quand tu leur laisses le clavier : relis la liste des paquets qu’une IA s’apprête à installer avant de valider, exactement comme tu relirais une modification de code.

La méthode pour vérifier un paquet avant de l’installer

Avant de lancer npm install ou pip install sur un nom suggéré par une IA, prends trente secondes pour ces vérifications :

  1. Confirme que le paquet existe vraiment, sur le site officiel du registre (npmjs.com ou pypi.org), pas seulement dans le terminal. Tu peux aussi demander les informations en ligne de commande sans encore l’installer :
npm view nom-du-paquet
  1. Regarde son historique. D’après le guide de sécurité npm d’OWASP, un paquet fiable a généralement « des milliers, voire des millions de téléchargements » et « un vrai dépôt GitHub, avec du code, des commits et des contributeurs authentiques ». Un paquet publié la veille, avec zéro téléchargement et aucun dépôt, doit t’alerter, surtout si c’est l’IA qui vient de te le suggérer.
  2. Lance un audit de sécurité sur ce que tu as déjà installé :
npm audit

D’après la documentation officielle de npm, cette commande « soumet une description des dépendances de ton projet à ton registre par défaut et demande un rapport des failles connues ».

  1. Garde un fichier de verrouillage (package-lock.json ou équivalent) et évite d’installer une version qui n’y figure pas encore sans l’avoir vérifiée.
  2. Vérifie l’orthographe exacte. Un nom presque bon, une lettre inversée ou un tiret déplacé, est un signe classique d’un paquet qui se fait passer pour un autre plus connu, que l’IA soit ou non impliquée dans la suggestion.
  3. Pour aller plus loin, des outils automatisés existent pour repérer les paquets récemment publiés ou suspects avant qu’ils n’entrent dans ton projet, en complément de ta propre vigilance.

Rien de tout ça ne prend longtemps une fois que c’est devenu un réflexe. Il ne s’agit pas de te méfier de chaque suggestion d’une IA de code, mais de traiter un nom de paquet comme tu traiterais un lien reçu dans un mail auquel tu ne t’attendais pas : ça mérite un second regard avant de cliquer, ou ici, avant d’installer.

À retenir

  • Une étude USENIX Security 2025, portant sur 576 000 extraits de code et 16 modèles d’IA, a mesuré que 19,7 % des paquets recommandés par ces IA n’existaient pas.
  • Le slopsquatting (terme de Seth Larson, avril 2025) consiste, pour un attaquant, à enregistrer ces noms inventés avant qu’un développeur ne les installe par erreur.
  • Ce risque figure désormais dans une catégorie propre du Top 10 OWASP 2025, consacrée à la chaîne d’approvisionnement logicielle.
  • Avant d’installer un paquet suggéré par une IA : vérifie qu’il existe sur le registre officiel, regarde son historique de téléchargements et son dépôt, puis lance un audit de sécurité.
  • Ne jamais faire confiance à un nom de paquet uniquement parce qu’une IA vient de te le donner.

Pour automatiser cette vérification à chaque installation, le connecteur verif-paquets fait cette recherche à ta place avant que tu tapes la commande.

Sources

  1. We Have a Package for You! A Comprehensive Analysis of Package Hallucinations by Code Generating LLMs — USENIX Security 25 · consulté le 27 septembre 2026
  2. GitHub - Spracks/PackageHallucination (données et code de l'étude) · consulté le 27 septembre 2026
  3. Slopsquatting explained: When AI code turns malicious — TechTarget · consulté le 27 septembre 2026
  4. The Rise of Slopsquatting: How AI Hallucinations Are Fueling a New Class of Supply Chain Attacks — Socket · consulté le 27 septembre 2026
  5. npm-audit — npm Docs · consulté le 27 septembre 2026
  6. OWASP Top 10:2025 — OWASP Foundation · consulté le 27 septembre 2026
PartagerWhatsAppLinkedInXE-mail

Lire l'article suivant

Veille27 septembre 2026

Veille IA : l'essentiel de la semaine du 21 au 27 septembre 2026

Code27 septembre 2026

Vibe-coding : ce que c'est vraiment (et comment ne pas te planter)

Actu IA27 septembre 2026

Pourquoi Yann LeCun veut AMI : l'IA au-delà des LLM

Tutoriel26 septembre 2026

Brancher un connecteur MCP dans Claude, sans écrire une ligne de code

Orientation26 septembre 2026

Choisir sa formation avec les vraies données MonMaster et InserSup

Méthode26 septembre 2026

APA 7, ISO 690, Vancouver : comment bien citer tes sources

Décryptage26 septembre 2026

Les « codes cachés » de ChatGPT vus sur TikTok : le vrai du faux

Santé26 septembre 2026

Médecine : réviser l'EDN avec la Base de données publique des médicaments

Carrière26 septembre 2026

Gratification de stage et salaire d'apprenti en 2026 : les règles

Décryptage26 septembre 2026

IA et intégrité académique : ce que disent vraiment les universités

Tutoriel26 septembre 2026

Installer une skill dans Claude en 2 minutes

Mémoire26 septembre 2026

Mémoire : construire sa problématique et son plan avec l'IA

Méthode26 septembre 2026

Faire son rétroplanning de partiels avec l'IA, sans le rater

Méthode26 septembre 2026

Réviser avec l'IA sans tricher : rappel actif, Feynman, quiz

Carrière26 septembre 2026

Choisir son alternance avec les vrais chiffres d'insertion

Code27 septembre 2026

Apprendre à coder à l'ère de l'IA : ce qu'il faut encore savoir faire soi-même

Code27 septembre 2026

Le mini cahier des charges à écrire avant de lancer une IA de code

Mémoire27 septembre 2026

Citer ChatGPT ou Claude dans un mémoire : APA, MLA, ISO 690

Code27 septembre 2026

Claude Code pour débutants : installation, premier lancement, CLAUDE.md

Actu IA27 septembre 2026

Claude Opus 5.5 : ce qui change vraiment (et comment t'en servir pour étudier)

Analyse27 septembre 2026

Course à l'IA : pourquoi certains ont peur et d'autres pas

Code27 septembre 2026

Créer son premier serveur MCP, pas à pas

Code27 septembre 2026

Déployer son premier site gratuitement : Vercel, Netlify, Cloudflare Pages ou GitHub Pages

Décryptage27 septembre 2026

Détecteurs d'IA : Compilatio, Turnitin, GPTZero sont-ils fiables ?

Code27 septembre 2026

Écrire sa propre skill Claude : structure, SKILL.md et description qui déclenche

Carrière27 septembre 2026

Le statut national d'étudiant-entrepreneur (SNEE) et les PEPITE : ce que ça apporte vraiment

Analyse27 septembre 2026

La France dans la course à l'IA : Mistral, énergie, talents

Actu IA27 septembre 2026

French Tech et IA : les startups françaises à connaître en 2026

Code27 septembre 2026

Git sans peur : comprendre commit, branche, remote, puis les commandes qui sauvent

Décryptage27 septembre 2026

IA chinoises : DeepSeek, Qwen, Kimi… pourquoi l'Europe se méfie

Santé27 septembre 2026

IA en études de médecine : réviser PASS, LAS et EDN sans se piéger

Outils27 septembre 2026

IA gratuites pour étudiants : offres et réductions en 2026

Carrière27 septembre 2026

IA en stage ou alternance : ce qui est permis, ce qui ne l'est pas

Code27 septembre 2026

Des IDE aux ADE : coder avec des agents IA en 2026

Code27 septembre 2026

Lire une erreur sans paniquer : anatomie d'une stack trace (Python et JavaScript)

Outils27 septembre 2026

Meilleures IA pour étudiants en 2026 : le comparatif honnête

Outils27 septembre 2026

Nouveaux modèles d'IA en 2026 : lequel choisir pour étudier ?

Outils27 septembre 2026

IA françaises méconnues : Noota, Moshi, Vibe (ex-Le Chat)…

Analyse27 septembre 2026

Pourquoi l'IA coûte si cher (et les IA américaines encore plus)

Code27 septembre 2026

Bien prompter une IA de code : la méthode qui change tout

Code27 septembre 2026

Sécurité d'une app vibe-codée : 7 erreurs à corriger avant de publier

Rejoins GetPack

Déjà un compte ? Se connecter