IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Des dépendances imaginaires aux conséquences réelles : l'IA invente des noms de logiciels et les devs les téléchargent
Des dépendances logicielles fictives ont été intégrées dans des projets réels

Le , par Stéphane le calme

45PARTAGES

9  0 
Plusieurs grandes entreprises ont publié du code source incorporant un package logiciel précédemment imaginé par une IA générative. Mais ce n’est pas tout : un chercheur en sécurité, ayant repéré cette hallucination récurrente, a transformé cette dépendance fictive en une vraie, qui a ensuite été téléchargée et installée des milliers de fois par des développeurs suite aux mauvais conseils de l’IA. Si le package contenait un véritable logiciel malveillant, au lieu d’être un simple test, les conséquences auraient pu être désastreuses.

Selon Bar Lanyado, chercheur en sécurité chez Lasso Security, l’une des entreprises trompées par l’IA en incorporant ce package est Alibaba, qui, à l'heure de l'écriture de ces lignes, inclut toujours une commande pip pour télécharger le paquetage Python huggingface-cli dans ses instructions d'installation de GraphTranslator.


Il existe une version légitime de huggingface-cli, installée en utilisant pip install -U "huggingface_hub[cli]". Mais la huggingface-cli distribuée via le Python Package Index (PyPI) et requise par le GraphTranslator d'Alibaba - installée à l'aide de pip install huggingface-cli - est fausse, imaginée par l'IA et rendue réelle par Lanyado dans le cadre d'une expérience.

Il a créé huggingface-cli en décembre après l'avoir vu à plusieurs reprises inventé par l'IA générative ; en février de cette année, Alibaba s'y référait dans les instructions README de GraphTranslator au lieu du véritable outil CLI Hugging Face.

Une expérience du chercheur en sécurité

Lanyado a cherché à savoir si ces types de progiciels hallucinés (noms de paquets inventés par des modèles d'IA générative, vraisemblablement au cours du développement d'un projet) persistent dans le temps. Il voulait également vérifier si les noms de paquets inventés pouvaient être cooptés et utilisés pour distribuer des codes malveillants en écrivant de véritables paquets qui utilisent les noms de codes imaginés par les IA.

L'idée est que quelqu'un de malveillant pourrait demander aux modèles des conseils en matière de code, prendre note des paquets imaginaires que les systèmes d'IA recommandent à plusieurs reprises, puis mettre en œuvre ces dépendances de sorte que d'autres développeurs, lorsqu'ils utilisent les mêmes modèles et reçoivent les mêmes suggestions, finissent par tirer ces bibliothèques, qui peuvent être empoisonnées par des logiciels malveillants.

Il y a six mois (une éternité en termes d'IA générative), alors que je travaillais à Vulcan Cyber, j'ai mené des recherches sur les hallucinations des LLM concernant les recommandations de paquets open source.

Dans mes recherches précédentes, j'ai exposé une nouvelle technique d'attaque : AI Package Hallucination. Cette technique d'attaque utilise des outils LLM tels que ChatGPT, Gemini, et d'autres, afin de diffuser des paquets malveillants qui n'existent pas, en se basant sur des sorties de modèle fournies à l'utilisateur final.

J'ai également testé la technique sur le modèle GPT-3.5 turbo et utilisé 457 questions pour plus de 40 sujets dans 2 langages de programmation. J'ai découvert que pour près de 30 % de mes questions, le modèle recommandait au moins un paquet halluciné que les attaquants pouvaient utiliser à des fins malveillantes.

Cette fois-ci, j'ai voulu passer à la vitesse supérieure et mettre à l'échelle tous les éléments de ma recherche précédente : le nombre de questions posées, le nombre de langages vérifiés et les modèles que nous avons testés.

Selon lui, voici les raisons qui l'ont encouragé à lancer cette recherche :
  • Je cherche à savoir si les hallucinations sur les paquets persistent dans le paysage actuel, six mois après les premières conclusions. Je voulais réaffirmer l'importance de ce problème et vérifier si les fournisseurs de modèles l'avaient déjà résolu.
  • J'avais l'intention d'élargir le champ de mon enquête précédente en utilisant un plus grand nombre de questions, afin de vérifier si les pourcentages de paquets hallucinés restaient cohérents avec mes résultats antérieurs. En outre, je cherchais à évaluer la résilience de cette technique à travers différents LLM, car il est crucial de comprendre sa capacité d'adaptation.
  • Je souhaitais explorer la possibilité d'hallucinations croisées, où le même paquet halluciné apparaît dans différents modèles, mettant ainsi en lumière d'éventuelles hallucinations partagées.
  • Je cherche à rassembler des statistiques plus complètes sur la répétitivité des hallucinations de paquets, afin de mieux comprendre l'ampleur de ce problème de sécurité.
  • Je voulais tester l'efficacité de l'attaque dans la nature et voir si la technique que j'ai découverte pouvait être exploitée, afin de confirmer l'applicabilité pratique de mes découvertes.

L'année dernière, par l'intermédiaire de la société de sécurité Vulcan Cyber, Lanyado a publié une recherche détaillant la manière dont une personne peut poser une question de codage à un modèle d'IA comme ChatGPT et recevoir une réponse qui recommande l'utilisation d'une bibliothèque logicielle, d'un progiciel ou d'un framework qui n'existe pas.

« Lorsqu'un attaquant lance une telle campagne, il demande au modèle des paquets qui résolvent un problème de codage, puis il reçoit des paquets qui n'existent pas », a expliqué Lanyado. « Il télécharge des paquets malveillants portant le même nom dans les registres appropriés et, à partir de là, il n'a plus qu'à attendre que les gens téléchargent les paquets ».

*

Des hypothèses dangereuses

L'empressement des modèles d'IA à citer avec assurance des décisions de justice inexistantes est désormais bien connu et a suscité un certain embarras chez les avocats qui n'étaient pas au courant de cette tendance. Il s'avère que les modèles d'IA générative font de même pour les progiciels.

Comme Lanyado l'a indiqué précédemment, un malfaiteur pourrait utiliser un nom inventé par l'IA pour un paquet malveillant téléchargé sur un référentiel dans l'espoir que d'autres personnes puissent télécharger le logiciel malveillant. Mais pour que ce vecteur d'attaque soit significatif, il faudrait que les modèles d'IA recommandent à plusieurs reprises le nom coopté.

C'est ce que Lanyado a entrepris de tester. Armé de milliers de questions « comment faire », il a interrogé quatre modèles d'IA (GPT-3.5-Turbo, GPT-4, Gemini Pro alias Bard, et Command [Cohere]) sur des défis de programmation dans cinq langages de programmation/temps d'exécution différents (Python, Node.js, Go, .Net et Ruby), chacun d'entre eux ayant son propre système d'empaquetage.

Il s'avère qu'une partie des noms tirés de nulle part par ces chatbots sont persistants, certains dans différents modèles. Et la persistance - la répétition du faux nom - est la clé pour transformer la fantaisie de l'IA en une attaque fonctionnelle. L'attaquant a besoin que le modèle d'IA répète les noms des paquets hallucinés dans ses réponses aux utilisateurs pour que les logiciels malveillants créés sous ces noms soient recherchés et téléchargés.

Lanyado a choisi 20 questions au hasard pour les hallucinations "zero-shot" et les a posées 100 fois à chaque modèle. Son objectif était d'évaluer combien de fois le nom du paquet halluciné restait le même. Les résultats de son test révèlent que les noms persistent suffisamment souvent pour constituer un vecteur d'attaque fonctionnel, même si ce n'est pas toujours le cas, et dans certains écosystèmes d’empaquetages plus que dans d'autres.

Avec GPT-4, 24,2 % des réponses aux questions ont produit des paquets hallucinés, dont 19,6 % étaient répétitifs, selon Lanyado. Avec GPT-3.5, 22,2 % des réponses aux questions ont provoqué des hallucinations, dont 13,6 % étaient répétitives. Pour Gemini, 64,5 % des questions ont donné lieu à des noms inventés, dont 14 % se répétaient. Enfin, pour Cohere, 29,1 % des hallucinations et 24,2 % des répétitions ont été observées.

Malgré cela, les écosystèmes d’empaquetages de Go et de .Net ont été conçus de manière à limiter le potentiel d'exploitation en refusant aux attaquants l'accès à certains chemins et noms.

« En Go et en .Net, nous avons reçu des paquets hallucinés, mais beaucoup d'entre eux ne pouvaient pas être utilisés pour une attaque (en Go, le nombre était beaucoup plus important qu'en .Net), chaque langage pour sa propre raison », a expliqué Lanyado. « Dans Python et npm, ce n'est pas le cas, car le modèle nous recommande des paquets qui n'existent pas et rien ne nous empêche de télécharger des paquets avec ces noms, de sorte qu'il est certainement beaucoup plus facile d'exécuter ce type d'attaque sur des langages tels que Python et Node.js ».


Le test comme preuve de concept

Lanyado a démontré ce point en distribuant des logiciels malveillants de type "proof-of-concept" en publiant un ensemble de fichiers inoffensifs dans l'écosystème Python. Sur la base du conseil de ChatGPT d'exécuter pip install huggingface-cli, il a téléchargé un paquet vide portant le même nom sur PyPI - celui mentionné ci-dessus - et a créé un paquet factice nommé blabladsa123 pour aider à séparer l'analyse du registre des paquets des tentatives de téléchargement réelles.

Selon lui, le résultat est que huggingface-cli a reçu plus de 15 000 téléchargements authentiques au cours des trois mois pendant lesquels il a été disponible.

« En outre, nous avons effectué une recherche sur GitHub pour déterminer si ce paquet était utilisé dans les dépôts d'autres entreprises », a déclaré Lanyado dans la description de son expérience. « Nos résultats ont révélé que plusieurs grandes entreprises utilisent ou recommandent ce paquet dans leurs dépôts. Par exemple, des instructions pour l'installation de ce paquetage peuvent être trouvées dans le README d'un dépôt dédié à la recherche menée par Alibaba ».

Conclusion

Cette situation soulève des questions sur la persistance de ces packages logiciels imaginés par des modèles IA génératifs et sur la possibilité d’utiliser des noms de packages inventés pour distribuer du code malveillant. En effet, quelqu’un de mal intentionné pourrait demander des conseils de code aux modèles IA, noter les noms de packages imaginés que ces systèmes recommandent fréquemment, puis implémenter ces dépendances afin que d’autres développeurs, en utilisant les mêmes modèles et obtenant les mêmes suggestions, finissent par importer ces bibliothèques, qui pourraient être empoisonnées par des logiciels malveillants.

En somme, l’IA peut parfois nous jouer des tours inattendus, et il est essentiel de rester vigilant lorsqu’elle suggère des dépendances logicielles

Sources : Bar Lanyado, Pouvez-vous faire confiance aux recommandations de ChatGPT ? (étude de l'année dernière de Bar Lanyado), code AliBaba

Et vous ?

La confiance dans les dépendances logicielles : Comment pouvons-nous garantir que les packages que nous utilisons sont sûrs et fiables, surtout lorsque certains d’entre eux sont proposés par des IA ?
Responsabilité des développeurs : Les développeurs ont-ils la responsabilité de vérifier chaque dépendance qu’ils ajoutent à leurs projets ? Comment pouvons-nous encourager de bonnes pratiques à cet égard ?
Transparence et traçabilité : Devrions-nous exiger davantage de transparence de la part des créateurs de packages logiciels ? Comment pouvons-nous tracer l’origine des dépendances pour détecter les anomalies ?
Éducation et sensibilisation : Comment pouvons-nous sensibiliser les développeurs et la communauté logicielle aux risques potentiels liés aux dépendances générées par des IA ?

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de foxzoolm
Membre régulier https://www.developpez.com
Le 29/03/2024 à 18:41
CHEH !!!

"ah la la l'IA vas remplacer les dev"

c'est ca qui vas detruire le monde...
3  0 
Avatar de sevyc64
Modérateur https://www.developpez.com
Le 29/03/2024 à 18:12
Citation Envoyé par Stéphane le calme Voir le message
[SIZE=4]Si le package contenait un véritable logiciel malveillant, au lieu d’être un simple test, les conséquences auraient pu être désastreuses.
Arfff, mais c'était la prochaine étape que la perverse IA avait déjà prévue.

Même plus possible de générer en paix
2  0 
Avatar de Dresseur2Puce
Candidat au Club https://www.developpez.com
Le 03/04/2024 à 13:02
Bj,
je ne suis pas sûr que les "vrais experts en IA" sont invités à en parler, ça plomberait le business... On a un outil qui a appris à proposer un mot "vraisemblable" pour compléter un texte et on se met à lui demander tout et n'importe quoi en pensant qu'il va faire un truc juste, alors qu'il n'a jamais été programmer pour distinguer le vrai du faux ni comprendre ce qui est fait.

Je questionnerai plutôt nos usages... On répare rarement un voiture avec un marteau-piqueur, ou on soigne rarement un malade avec le même outil... pourtant avec l'informatique ça ne choque personne. Tant qu'on n'aura pas évolué sur ces questions on ne s'en sortira pas.

L'IA-Gen ne fonctionne, en codage, que parce qu'on l'a gavée avec des millions de lignes de code. Et comme pas mal de monde copie-colle un tas de trucs trouvés ici et là, statistiquement il y a des motifs qui ressortent, et dans un contexte donné, si on commence bien la phrase, la machine recrache des choses qu'elle a déjà vues et adaptées au code au code en cours. Ca donne l'impression que ça marche. Mais ce n'est qu'un tour de passe-passe... Je regardais il y a peu la documentation du code généré par une IA, c'est affligeant. J'attends de cette doc qu'elle explique à quoi sert la fonction, ce qu'on doit lui donner, et à quelles conditions ça va marcher ou pas. La majorité des produits paraphrasent ce qu'il y a dans le corps, c'est idiot, le client n'a pas besoin de savoir comment ça marche dedans. Et le concepteur devrait écrire le code en fonction du résultat spécifié, pas le contraire.

Par contre je suis d'accord que ça peut aider à l'écriture de tests, à condition évidemment qu'on revérifie scrupuleusement tout ça, laisser un équipement de sécurité être produit par une machine sans contrôle qualité me semble un peu risqué...
2  0 
Avatar de Anselme45
Membre extrêmement actif https://www.developpez.com
Le 31/03/2024 à 13:03
Il n'y a pas un seul jour sans que l'on ait un nouvel exemple des actions délirantes des systèmes IA et pourtant... On a droit 100 fois par jour à des "intervenants" qui nous affirment que l'IA est l'avenir de l'humanité!

Je parle bien "d'intervenants" et pas "d'experts en IA" parce que ceux-là, les vrais experts, on ne les entends pas, on a juste droit aux discours marketing de leurs patrons!!!

On se croirait de retour au plus belles heures du covid où de nouveaux pseudo-experts fleurissaient chaque jour dans les médias pour nous asséner leur vérité, une vérité qui n'était évidemment pas celle de leur voisins de plateau de TV

Pensée émue pour tous ces neurologues, chirurgiens esthétiques, dermatologues et autres qui, fort d'un cours ex-cathedra d'une heure traitant de la virologie durant leur formation universitaire, se sont cru en droit de parler aux peuples ignorants des secrets du vilain virus venus d'Asie...
1  0