Des malwares squattent les noms de paquets hallucinés par les modèles de langage
La vérification humaine est indispensable

Les IA génératives spécialisées dans le code peuvent parfois halluciner, allant jusqu'à créer des noms de paquets. Des chercheurs montrent que les hallucinations des grands modèles de langage ont tendance à générer les mêmes faux noms de paquets. Une occasion en or pour des acteurs malintentionnés qui pourraient squatter ces noms et créer des paquets infestés.
Le 14 avril à 16h32
5 min
IA et algorithmes
IA
Après, le typosquatting et à l'heure où l'IA générative est utilisée par de nombreux développeurs pour les assister dans leur création, parlons du « slopsquatting ».
Comme nous l'expliquions, le terme « slop » est depuis quelque temps utilisé pour désigner les contenus bas de gamme générés par des IA et qui inondent de plus en plus le web. Ici, le slop concerne la génération de code.
En effet, depuis l'arrivée des IA génératives utilisées comme assistante d'outils d'édition de code, on s'est rapidement aperçu qu'elles pouvaient inciter les développeurs à introduire des failles de sécurité dans leurs codes. Des chercheurs ont déjà montré que les développeurs utilisant des IA assistantes proposent des réponses moins bonnes et moins sécurisées que ceux sans assistant.
L'autre vecteur d'attaque intrinsèquement lié à la génération de code
Mais, comme l'affirmait déjà à l'époque le lecteur de Next, SebGF, « l'autre vecteur d'attaque intrinsèquement lié à la génération de code par IA [est] l'hallucination ».
Parfois, un grand modèle de langage (LLM) utilisé dans des IA génératives comme Codex ou Copilot peut générer le nom d'un paquet qui n'existe pas et suggérer son utilisation dans un code, alors qu'évidemment ce n'est pas une bonne solution. C'est le développeur Seth Larson, qui travaille pour la Fondation Python Software, qui a inventé le terme de « slopsquatting » à utiliser « quand un LLM hallucine un nom de paquet inexistant, et qu'un mauvais acteur l'enregistre malicieusement. Le frère IA du typosquatting ».
Des paquets vraiment hallucinés
Des chercheurs (notamment de l'Université du Texas), ont analysé le phénomène dans un article mis en ligne sur la plateforme de prépublication arXiv.
Ils confirment dans leur article que l'hallucination de nom de paquet n'est pas un problème marginal. Ils ont testé 16 modèles de langage en générant 576 000 exemples de code produit dans deux langages informatiques (python et JavaScript). Tous ont généré des noms de paquets qui n'existaient pas. Mais avec une différence importante : les modèles d'OpenAI semblent générer beaucoup moins d'hallucinations de noms de paquets, GPT-4 Turbo étant le modèle qui en génère le moins avec 3,6 % de noms de paquets « hallucinés ». Un CodeLlama 34B Python, pourtant spécialisé, génère des faux noms de paquets dans 22 % des cas environ :

Les chercheurs expliquent dans un schéma comment des utilisateurs malveillants peuvent mettre en place l'attaque en exploitant les hallucinations des modèles de langage :

L'idée est d'abord de trouver un nom de paquet halluciné par un modèle de langage via une demande de génération de code. L'utilisateur malveillant vérifie que le paquet n'existe pas dans les dépôts connus, puis en publie un, évidemment en incluant une partie susceptible de nuire à l'utilisateur ou d'exploiter son ordinateur à des fins douteuses. Ce nouveau paquet peut ainsi être inclus dans le code d'un développeur lambda qui aura demandé à son assistant préféré de lui générer du code.
Une hallucination répétée tout le temps ou pas du tout
Pour cela, me direz-vous, il faut que le nom de paquet halluciné soit le même. Or les chercheurs constatent que certains noms de paquets hallucinés reviennent.
En testant 500 prompts de génération de code 10 fois chacun, ils ont pu voir que la plupart des noms hallucinés, soit n'étaient plus jamais hallucinés, soit l'étaient tout le temps :

On peut voir ici que si DeepSeek hallucine plus de noms de paquets que les modèles d'OpenAI, le modèle chinois a tendance à moins répéter ces noms.
Un paramètre des modèles semble en lien avec ce phénomène : la température du modèle. Plus la température est faible, plus le résultat généré est prédictible, attendu. Mais les chercheurs constatent que plus on l'augmente et plus la génération de noms de paquets inexistants arrive :

Une vérification de la supply-chain reste indispensable
Dans l'article, les chercheurs montrent aussi que les noms de paquets « hallucinés » peuvent se confondre dans un code relu rapidement car leurs noms sont assez proches de noms de paquets existants :

« Nous n'en sommes qu'au tout début de l'étude de ce problème au niveau de l'écosystème », affirme Seth Larson auprès de The Register. Notamment, il explique qu' « il est difficile, voire impossible, de quantifier le nombre de tentatives d'installation dues aux hallucinations de LLM sans une plus grande transparence de la part des fournisseurs de LLM. Les utilisateurs de code, de paquets et d'informations générés par LLM devraient vérifier les résultats de LLM par rapport à la réalité avant de mettre ces informations en service, sinon il peut y avoir des conséquences dans le monde réel ».
C'est d'ailleurs ce que disait aussi SebGF, « rappelant que la vérification de la supply-chain reste indispensable ».
Des malwares squattent les noms de paquets hallucinés par les modèles de langage
-
L'autre vecteur d'attaque intrinsèquement lié à la génération de code
-
Des paquets vraiment hallucinés
-
Une hallucination répétée tout le temps ou pas du tout
-
Une vérification de la supply-chain reste indispensable
Commentaires (14)
Abonnez-vous pour prendre part au débat
Déjà abonné ? Se connecter
Cet article est en accès libre, mais il est le fruit du travail d'une rédaction qui ne travaille que pour ses lecteurs, sur un média sans pub et sans tracker. Soutenez le journalisme tech de qualité en vous abonnant.
Accédez en illimité aux articles
Profitez d’un média expert et unique
Intégrez la communauté et prenez part aux débats
Partagez des articles premium à vos contacts
Abonnez-vousLe 14/04/2025 à 16h35
Le 14/04/2025 à 16h43
Le 14/04/2025 à 16h48
Modifié le 14/04/2025 à 17h33
Artificial Temperature est moins tautologique qu'Artificial Intelligence !
Puisque remplacer les concepteurs d'AT par des AI est la parade pour créer encore plus d'emplois fictifs et favorables à l'usage immodéré d'une énergie "évidemment" décarbonnée.
Le 14/04/2025 à 16h49
Le 14/04/2025 à 17h20
"La température est un hyperparamètre de configuration qui contrôle le caractère aléatoire de la sortie du modèle de langage. Une température élevée produit des résultats plus imprévisibles et créatifs, tandis qu'une température basse produit une sortie plus commune et conservatrice."
Le 15/04/2025 à 07h46
A priori, j'aurais tendance à penser que la créativité implique de l'imprévisibilité, oui, mais avec un second facteur en plus: de la pertinence (=l'adéquation au besoin).
Il me semble que c'est ce second facteur qui fait l'intérêt de la créativité, sa valeur ajoutée: le "simple" random me semble être, des deux, l'élément le plus facile à générer pour une IA... et aussi le moins intéressant au bout du compte.
(Avis perso, hein. Et je ne connais pour ainsi dire rien à l'IA ^^)
Le 15/04/2025 à 09h44
Mais pour autant, serait-elle capable d'écrire quelque chose comme : la terre est bleue comme une orange, sans avoir été entraînée avec le poème d'Eluard ? Je ne le pense pas.
Par contre, dans le domaine du code, l'aléatoire ça va introduire des bugs, c'est tout.
Le 14/04/2025 à 16h48
Ça ajoute de l'aléatoire ce qui me semble une mauvaise chose pour produire du code.
@SebGF
Le 14/04/2025 à 20h04
Merci @MartinClavey pour la citation.
Le 14/04/2025 à 20h23
Le 14/04/2025 à 17h00
pip install keycloak
et cela était systématiquement proposé par copilot.Le premier réflexe à avoir et d'aller vérifier les paquets.
Le 14/04/2025 à 17h22
J'ai bien conscience que ce n'est normalement pas leur travail, mais dans un cas comme celui que tu donnes, il est étrange que l'officiel ai un nom plus compliqué que le "pirate", et qu'un packet aussi important (tant par son adoption que par son positionnement critique dans la stack) n'ai pas des "protections" appliquées.
S'il me suffit de proposer le packet "chromium-beta" (par exemple) pour infecter des utilisateurs qui cherchent à installer Chromium du canal Beta, c'est qu'il y a un problème au niveau de la sécurisation du mot-clé "chromium".
Le 14/04/2025 à 20h07