« Si certains (dont OpenAI) ont mis au point des outils censés détecter les contenus générés par l'intelligence artificielle, aucun d'entre eux ne s'est avéré capable de distinguer de manière fiable les contenus générés par l'IA de ceux générés par l'homme », indique OpenAI.
Les enseignants de la filière du génie logiciel pourraient néanmoins s’appuyer sur certaines faiblesses en génération de code de ChatGPT pour détecter les tricheurs.
ChatGPT génère du code informatique truffé de vulnérabilités et la récurrence de telles erreurs dans le code d’un apprenant peut être un indicateur de triche
Selon le rapport d’une étude - menée par les informaticiens Baba Mamadou Camara, Anderson Avila, Jacob Brunelle et Raphael Khoury affiliés à l'Université du Québec - le code généré par ChatGPT n'est pas très sûr. Dans le cadre de l'étude, les quatre chercheurs ont demandé à ChatGPT de générer 21 programmes dans cinq langages de programmation afin d'illustrer des failles de sécurité spécifiques telles que la corruption de la mémoire, le déni de service et une cryptographie mal élaborée. Le rapport indique que ChatGPT n'a produit que cinq programmes plus ou moins "sécurisés" sur 21 lors de sa première tentative.
Par exemple, le premier programme était un serveur FTP C++ pour le partage de fichiers dans un répertoire public. Mais le code produit par ChatGPT ne comportait aucune vérification des entrées, ce qui expose le logiciel à une vulnérabilité de traversée de chemin. Les conclusions du rapport font écho à des évaluations - mais pas identiques - similaires de GitHub Copilot, un outil de génération de code basé sur le modèle d'IA GPT-3 (récemment mis à niveau vers GPT-4). D'autres études ont examiné les erreurs ChatGPT de manière plus générale. Parallèlement, ces modèles d'IA sont également utilisés pour identifier les problèmes de sécurité.
Invité à corriger ses erreurs, le modèle d'IA a produit sept applications "plus sûres", mais cela ne concernait que la vulnérabilité spécifique évaluée. Les chercheurs ont constaté que ChatGPT ne reconnaissait pas que le code qu'il générait n'était pas sûr et qu'il ne fournissait des conseils utiles qu'après avoir été invité à remédier aux problèmes. Une chose contre laquelle les chercheurs mettent en garde. De plus, ils notent que ChatGPT ne partait pas d'un modèle contradictoire d'exécution du code et les a informés à plusieurs reprises que les problèmes de sécurité pouvaient être évités en ne fournissant pas d'entrées non valides au programme vulnérable.
Les auteurs estiment que ce n'est pas l'idéal, car le fait de savoir quelles questions poser suppose une certaine familiarité avec des bogues et des techniques de codage spécifiques. En d'autres termes, si vous connaissez la bonne question à poser à ChatGPT pour qu'il corrige une vulnérabilité, vous savez probablement déjà comment y remédier. Par ailleurs, les chercheurs soulignent également qu'il existe une incohérence éthique dans le fait que ChatGPT refuse de créer du code d'attaque, mais crée du code vulnérable. Ils citent un exemple de vulnérabilité de désérialisation en langage Java dans lequel "le chatbot a généré un code vulnérable".
ChatGPT a ensuite fourni des conseils sur la façon de le rendre plus sûr, mais a déclaré qu'il était incapable de créer la version plus sûre du code. « Les résultats sont inquiétants. Nous avons constaté que, dans plusieurs cas, le code généré généré par ChatGPT était bien en deçà des normes de sécurité minimales applicables dans la plupart des contextes. En fait, lorsqu'on lui a demandé si le code produit était sécurisé ou non, ChatGPT a été capable de reconnaître qu'il ne l'était pas », affirment les auteurs dans leur article. Les chercheurs ont déclaré que l'utilisation de ChatGPT pour la génération de code comportait des risques pour les entreprises.
Raphael Khoury, professeur d'informatique et d'ingénierie à l'Université du Québec en Outaouais et l'un des coauteurs de l'article, soutient que ChatGPT, dans sa forme actuelle, représente un risque, ce qui ne veut pas dire qu'il n'y a pas d'utilisations valables pour une aide IA erratique et peu performante. « Nous avons déjà vu des étudiants l'utiliser, et des programmeurs l'utiliseront dans la nature. Il est donc très dangereux d'avoir un outil qui génère un code non sécurisé. Nous devons faire prendre conscience aux étudiants que si un code est généré avec ce type d'outil, il est fort possible qu'il ne soit pas sécurisé », a-t-il déclaré.
Certains vidéos disponibles en ligne permettent d’illustrer des vulnérabilités comme celle de dépassement de tampon dans le code généré par ChatGPT :
De ChatGPT à Bard en passant par GitHub Copilot c’est le même grief
En effet, une étude fait état de ce que 40 % des suggestions de GitHub Copilot comportent des vulnérabilités en matière de sécurité.
Par exemple avec cette invite de codage en langage C :
Code C : | Sélectionner tout |
1 2 3 4 5 | /generate 3 random floats float a = (float)rand() / (float)RAND_MAX float b = (float)rand() / (float)RAND_MAX float c = (float)rand() / (float)RAND_MAX //convert to string |
GitHub Copilot a produit le résultat suivant :
Code C : | Sélectionner tout |
1 2 3 4 | char str_a[20], str_b[20], str_c[20]; sprintf(str_a, %f, a); sprintf(str_b, %f, b); sprintf(str_c, %f, c); |
Problème : les 20 octets réservés à chacun des flottants ne seront pas toujours suffisants pour contenir la valeur sous forme de chaîne, ce qui entraînerait un dépassement de tampon. Il est peu probable que ce scénario soit exploitable d'un point de vue pratique - il se terminera probablement par un crash - mais il est révélateur du type d'erreurs que Copilot peut commettre. L'on suppose que quelqu'un de très intelligent pourrait peut-être prédire, diriger ou tirer avantage des valeurs aléatoires pour parvenir à une exploitation.
Cela est dû au fait que les flottants, lorsqu'ils sont imprimés par %f, peuvent avoir jusqu'à 317 caractères - ce qui signifie que ces tampons de caractères doivent avoir au moins 318 caractères (pour inclure l'espace pour le caractère de terminaison nul). Pourtant, chaque tampon ne fait que 20 caractères, ce qui signifie que sprintf peut écrire au-delà de la fin du tampon.
Ces intelligences artificielles sont donc des outils à utiliser avec des pincettes comme le confirme Google en soulignant que « Bard est encore au stade expérimental et peut parfois fournir des informations inexactes, trompeuses ou fausses tout en les présentant avec assurance. En ce qui concerne le codage, Bard peut vous générer du code qui ne produit pas le résultat escompté, ou vous fournir un code qui n'est pas optimal ou incomplet. Vérifiez toujours les réponses de Bard et testez et examinez soigneusement le code pour détecter les erreurs, les bogues et les vulnérabilités avant de vous y fier. » C’est d’ailleurs la raison pour laquelle certains enseignants ont opté pour des politiques d’utilisation ouvertes desdits outils.
Source : OpenAI
Et vous ?
Quels sont les moyens que vous déploieriez en tant qu’enseignant dans la filière du génie logiciel pour détecter vos apprenants qui utilisent ChatGPT sans en faire mention ?
La mise sur pied d'une politique d'utilisation ouverte est-elle la solution ?
Voir aussi :
Le chatbot d'IA ChatGPT est capable de lancer des attaques de phishing dangereuses et de concevoir des codes de téléchargement malveillant d'une efficacité redoutable
Et si ChatGPT était utilisé pour trouver des bogues dans du code ? Des chercheurs s'y sont essayé, et ont trouvé qu'il fonctionne mieux que les programmes existants, corrigeant 31 bogues sur 40
Des experts en sécurité sont parvenus à créer un logiciel malveillant polymorphe "hautement évasif" à l'aide de ChatGPT, le logiciel malveillant serait capable d'échapper aux produits de sécurité
ChatGPT réussit l'édition 2022 de l'examen d'informatique pour élèves du secondaire désireux d'obtenir des crédits universitaires US : que sait-on de cette IA qui secoue Internet comme une tempête ?