Suggestions de code par IA : le risque caché des faux paquets logiciels
Les assistants de programmation dopés à l’IA accélèrent l’écriture de code, mais ils peuvent aussi inventer des noms de paquets inexistants. Des attaquants peuvent alors enregistrer ces noms et piéger les développeurs. Ce risque, appelé slopsquatting, impose de vérifier chaque dépendance avant installation.

Un assistant de code peut proposer en quelques secondes une fonction, une commande d’installation ou la liste des bibliothèques nécessaires à un projet. Cette apparente fluidité masque un danger très concret : lorsqu’un modèle invente le nom d’un paquet logiciel, un attaquant peut enregistrer ce nom dans un dépôt public et attendre qu’un développeur l’installe. La faille ne se trouve alors pas forcément dans le code écrit par l’IA, mais dans la dépendance que celle-ci a convaincu son utilisateur d’ajouter.
Ce risque concerne la chaîne d’approvisionnement logicielle, c’est-à-dire l’ensemble des composants, services et outils utilisés pour fabriquer puis distribuer un logiciel. Les applications modernes reposent souvent sur de nombreuses dépendances externes. Un seul paquet malveillant, importé sans contrôle, peut donc compromettre un projet, ses données ou les systèmes sur lesquels il sera déployé.
Quand l’IA invente une dépendance qui n’existe pas
Les grands modèles de langage produisent du texte plausible à partir de régularités apprises dans leurs données. Ils ne consultent pas automatiquement, à chaque réponse, l’état réel et à jour des registres de paquets tels que PyPI pour Python ou npm pour l’écosystème JavaScript. Ils peuvent ainsi recommander une bibliothèque dont le nom semble crédible, dont l’usage paraît cohérent avec la demande, mais qui n’a jamais existé.
Ce comportement est une hallucination. Dans le cadre du développement, elle peut prendre plusieurs formes : un nom de paquet fictif, une fonction inexistante, une version erronée ou une commande d’installation qui ne correspond à aucun projet publié. Le problème devient particulièrement sérieux lorsqu’un nom inexistant se transforme, après sa suggestion par une IA, en paquet réellement téléchargeable parce qu’un acteur malveillant l’a enregistré.
Une étude récente consacrée aux hallucinations de paquets mesure l’ampleur du phénomène. Environ 5,2 % des suggestions produites par des modèles commerciaux ne correspondaient à aucun paquet réel. Pour les modèles open source, la proportion atteignait 21,7 %. Ces chiffres ne signifient pas qu’un cinquième des logiciels créés avec ces modèles sont dangereux. Ils indiquent en revanche qu’une recommandation de dépendance ne doit jamais être considérée comme une information vérifiée.
| Type de modèle étudié | Part de suggestions pointant vers un paquet inexistant | Risque principal pour le développeur |
|---|---|---|
| Modèles commerciaux | 5,2 % | Installer un nom proposé sans contrôler son existence et son origine |
| Modèles open source | 21,7 % | S’exposer plus souvent à des dépendances fictives récupérables par des attaquants |
Le slopsquatting, une attaque fondée sur les erreurs plausibles de l’IA
Des spécialistes de la sécurité ont donné un nom à cette technique : le slopsquatting. Le terme désigne l’enregistrement, par des personnes malveillantes, de noms de paquets que des outils d’IA sont susceptibles d’inventer et de recommander. Il s’inspire du typosquatting, une pratique plus ancienne consistant à déposer des noms très proches de services ou de bibliothèques connus afin d’exploiter une faute de frappe.
La différence est importante. Dans le typosquatting, l’attaquant anticipe une erreur humaine de saisie. Dans le slopsquatting, il exploite une erreur produite par un modèle, puis reprise par un humain qui fait confiance à son assistant. Le paquet malveillant peut être publié sous un nom totalement fictif, mais suffisamment naturel pour sembler correspondre à une vraie bibliothèque.
Le scénario d’attaque est simple :
- un développeur demande à une IA comment accomplir une tâche précise ;
- l’outil suggère l’installation d’un paquet inexistant ;
- un attaquant publie un paquet sous ce même nom dans un registre ;
- une réponse ultérieure de l’IA recommande ce nom, désormais disponible ;
- le développeur l’installe, ce qui peut déclencher l’exécution de code malveillant.
L’étude de la société de sécurité Socket montre que ces hallucinations ne sont pas toujours aléatoires. Lorsqu’un même prompt déclencheur est relancé environ dix fois, près de 43 % des noms de paquets hallucinéss réapparaissent systématiquement. Cette répétition rend certains noms prévisibles. Pour un attaquant, elle fournit une liste de candidats possibles à enregistrer dans l’espoir d’être proposé plus tard par un assistant de programmation.
Pourquoi un paquet malveillant peut paraître crédible
Un développeur pressé ne juge pas uniquement un paquet à son nom. Il peut aussi se laisser rassurer par une page de présentation soignée, une documentation qui paraît complète ou un dépôt de code qui imite les codes d’un projet légitime. Les paquets imposteurs peuvent afficher des README réalistes, renvoyer vers de faux dépôts GitHub ou s’appuyer sur des contenus douteux censés attester de leur existence.
Cette mise en scène est particulièrement efficace lorsque l’IA a déjà fourni le nom du paquet. La suggestion donne une impression de validation technique : si l’assistant l’a recommandé dans un exemple de code fonctionnel, il est tentant de supposer que la dépendance est connue et éprouvée. Or un modèle de langage ne fournit pas, par nature, une garantie sur la provenance, la maintenance ou l’innocuité d’un composant.
Un incident rapporté en janvier 2025 illustre ce mécanisme : l’outil d’IA de Google a suggéré un paquet malveillant imitant un paquet légitime. Le cas rappelle qu’une réponse convaincante peut relayer involontairement un élément hostile, y compris lorsqu’elle est produite par un service largement utilisé.
Une suggestion convaincante n’est pas une dépendance validée
Suggestion générée par l’IA
- Peut accélérer la recherche d’une solution technique.
- Peut inventer un nom de paquet plausible mais inexistant.
- Ne prouve ni l’origine, ni la maintenance, ni la sécurité du composant.
- Peut reproduire régulièrement les mêmes hallucinations pour un prompt donné.
Dépendance vérifiée
- Existe dans le registre officiel adapté à l’écosystème.
- Correspond à la documentation du projet ou du framework utilisé.
- Fait l’objet d’un contrôle de l’éditeur, des versions et des scripts d’installation.
- Est intégrée selon les règles de revue et de gestion des dépendances de l’équipe.
Le « vibe coding » augmente le risque de copier sans contrôler
Feross Aboukhadijeh, PDG de Socket, évoque la montée du « vibe coding ». L’expression décrit une manière de programmer où l’utilisateur dialogue avec un outil d’IA, reçoit du code et des commandes, puis les copie rapidement dans son environnement sans en vérifier tous les détails. Cette pratique peut être utile pour prototyper ou découvrir une technologie, mais elle réduit la distance critique entre une suggestion et son exécution.
Le danger n’est pas que tous les développeurs utilisant l’IA cessent de contrôler leur travail. Il tient au fait que les outils abaissent fortement le coût de la production de code et de commandes. Une dépendance peut être ajoutée en une ligne, parfois au milieu de dizaines d’autres recommandations. Dans ce contexte, une erreur de nom ou une bibliothèque inconnue passe plus facilement inaperçue.
La chaîne logicielle est particulièrement exposée parce que les gestionnaires de paquets automatisent l’installation. Selon le langage et l’outil employés, une dépendance peut télécharger d’autres composants, lancer des scripts d’installation ou modifier l’environnement de développement. Si le paquet contient une porte dérobée, un mécanisme de vol de données ou un autre logiciel malveillant, les conséquences peuvent dépasser largement le poste du développeur initial.
Comment vérifier un paquet avant de l’installer
Le premier réflexe consiste à ne pas exécuter directement la commande proposée par un assistant. Avant d’ajouter une dépendance, il faut vérifier son existence dans le registre officiel correspondant, puis s’assurer que le paquet consulté est bien celui que l’on cherchait. Une simple recherche permet souvent de détecter un nom absent, trop récent ou suspect.
Plusieurs contrôles, simples mais complémentaires, limitent fortement les risques :
- comparer le nom suggéré avec la documentation officielle du langage, du framework ou du projet utilisé ;
- examiner l’éditeur ou l’organisation qui publie le paquet, son historique et sa cohérence avec le projet annoncé ;
- vérifier l’activité de maintenance, les versions publiées et la documentation disponible ;
- inspecter le code et les scripts d’installation lorsqu’il s’agit d’une dépendance nouvelle ou sensible ;
- épingler les versions validées dans les fichiers de dépendances afin d’éviter des changements inattendus ;
- soumettre les nouvelles bibliothèques à une revue de code et à des outils d’analyse des dépendances.
Ces mesures ne transforment pas un registre public en espace sans risque. Elles réduisent toutefois la probabilité qu’un projet adopte un paquet uniquement parce que son nom a été rendu crédible par une réponse générée automatiquement. Les signaux visuels, comme un README bien rédigé, ne suffisent pas à établir la confiance.
Le rôle des équipes et des plateformes de paquets
La protection ne peut pas reposer uniquement sur l’attention d’une personne. Dans les organisations, les équipes de développement et de sécurité peuvent définir une liste contrôlée de dépendances autorisées, ou créer un sous-ensemble interne de paquets approuvés à partir de registres comme PyPI. L’objectif est de limiter les installations directes depuis l’espace public pour les projets sensibles.
Les outils d’analyse de composition logicielle peuvent aussi inventorier les dépendances d’un projet et signaler les composants connus pour présenter un risque. Ils sont utiles pour détecter des vulnérabilités ou des incohérences, mais ne remplacent pas la validation de l’identité d’un nouveau paquet. Dans le cas du slopsquatting, le problème naît justement lorsqu’une bibliothèque inconnue semble correspondre à un besoin parfaitement légitime.
La Python Software Foundation travaille de son côté à réduire les risques liés aux logiciels malveillants sur PyPI, notamment à travers des mécanismes de signalement et des améliorations de la détection. Ces initiatives sont nécessaires, mais elles interviennent dans un écosystème ouvert où de nouveaux noms peuvent être publiés rapidement. Seth Michael Larson, développeur en résidence à la Python Software Foundation, souligne qu’il manque encore une quantification des tentatives d’installation provoquées par ces hallucinations.
Cette absence de mesure rend la transparence des fournisseurs d’IA particulièrement importante. Des données plus précises sur les noms de paquets générés, leur récurrence et les corrections appliquées aideraient les responsables de sécurité à évaluer l’exposition réelle de leurs équipes.
Ce qu’il faut surveiller
Le slopsquatting révèle une évolution de la sécurité logicielle : les attaquants n’ont pas besoin de compromettre directement une bibliothèque populaire s’ils peuvent placer une dépendance piégée sur le chemin d’un développeur guidé par l’IA. L’automatisation de la programmation accélère aussi l’automatisation de la tromperie, surtout lorsque les réponses des modèles présentent des régularités exploitables.
À mesure que les assistants de code deviennent des outils quotidiens, la question ne sera donc pas seulement de savoir s’ils écrivent du code correct. Il faudra aussi déterminer s’ils savent distinguer une dépendance réelle d’un nom plausible, signaler clairement leur degré d’incertitude et orienter les utilisateurs vers des sources vérifiables.
D’ici là, la règle reste simple : tout paquet suggéré par une IA doit être vérifié avant son installation. Ce réflexe n’annule pas les gains de productivité des assistants, mais il évite de confondre une réponse fluide avec une garantie de confiance.
Questions fréquentes
Qu’est-ce que le slopsquatting en cybersécurité ?
Le slopsquatting consiste à publier des paquets logiciels sous des noms qu’une intelligence artificielle est susceptible d’inventer. Un développeur peut ensuite recevoir ce nom dans une suggestion de code, croire qu’il s’agit d’une dépendance réelle et installer le paquet malveillant. L’attaque exploite donc une hallucination du modèle plutôt qu’une simple faute de frappe.
Pourquoi une IA peut-elle inventer un paquet logiciel ?
Un modèle de langage génère une réponse probable à partir des textes sur lesquels il a été entraîné. Il ne vérifie pas systématiquement en temps réel qu’un paquet est publié, maintenu ou disponible dans un registre. Un nom peut sembler logique, ressembler à d’autres bibliothèques et correspondre au besoin exprimé, tout en étant totalement fictif.
Comment vérifier qu’un paquet Python ou npm est fiable ?
Il faut d’abord chercher le paquet dans son registre officiel, puis comparer son nom avec la documentation du projet utilisé. Vérifiez aussi l’identité de l’éditeur, l’historique des versions, la documentation et les scripts d’installation. Pour une dépendance sensible ou inconnue, une revue du code et une validation par l’équipe de sécurité sont recommandées.
Le code proposé par une IA est-il forcément dangereux ?
Non. Les assistants de code peuvent être utiles et produire des exemples corrects. Le risque apparaît lorsqu’une suggestion est appliquée sans contrôle, notamment lorsqu’elle ajoute une dépendance externe. Une réponse générée doit être considérée comme un point de départ : le code, les commandes et les paquets recommandés doivent être testés et vérifiés.
Les registres comme PyPI peuvent-ils bloquer les paquets malveillants ?
Les plateformes de paquets mettent en place des mécanismes de détection et de signalement des logiciels malveillants. La Python Software Foundation travaille notamment à améliorer ces capacités pour PyPI. Mais les registres ouverts ne peuvent pas garantir qu’aucun paquet nuisible ne sera publié. Les développeurs doivent donc conserver des contrôles avant toute installation.
Sources
Références consultées pour la rédaction de cet article. Les adresses sont indiquées à titre informatif et ne sont pas des liens.
- Étude sur les hallucinations de paquets par les modèles de langage, arXivarxiv.org/abs/2502.01745
- Socket, analyses et recherches sur la sécurité de la chaîne logiciellesocket.dev/blog
- PyPI, registre officiel de paquets Python et documentation associéedocs.pypi.org
- Python Software Foundation, organisation qui soutient l’écosystème Python et PyPIwww.python.org/psf



