Les assistants IA aident les développeurs à produire du code non sécurisé
Des informaticiens de l’Université de Stanford ont découvert que les programmeurs qui acceptent l’aide d’outils d’IA comme Github Copilot produisent un code moins sécurisé que ceux qui volent en solo.
Dans un article intitulé « Les utilisateurs écrivent-ils plus de code non sécurisé avec des assistants IA ? », les boffins de Stanford Neil Perry, Megha Srivastava, Deepak Kumar et Dan Boneh répondent à cette question par l’affirmative.
Pire encore, ils ont constaté que l’aide de l’IA avait tendance à tromper les développeurs sur la qualité de leur production.
« Nous avons constaté que les participants ayant accès à un assistant IA produisaient souvent plus de vulnérabilités de sécurité que ceux qui n’y avaient pas accès, avec des résultats particulièrement significatifs pour le chiffrement de chaînes et l’injection SQL », déclarent les auteurs dans leur article. « Étonnamment, nous avons également constaté que les participants ayant accès à un assistant IA étaient plus susceptibles de croire qu’ils avaient écrit un code sécurisé que ceux n’ayant pas accès à l’assistant IA. »
Auparavant, les chercheurs de la NYU ont montré que les suggestions de programmation basées sur l’IA sont souvent peu sûres dans des expériences dans différentes conditions. Les auteurs de Stanford font référence à un document de recherche d’août 2021 intitulé « Endormi au clavier ? Évaluer la sécurité des contributions au code de GitHub Copilot », qui a révélé que, compte tenu de 89 scénarios, environ 40 % des programmes informatiques réalisés avec l’aide de Copilot avaient potentiellement vulnérabilités exploitables.
Selon les auteurs de Stanford, cette étude a une portée limitée car elle ne prend en compte qu’un ensemble restreint d’invites correspondant à 25 vulnérabilités et à seulement trois langages de programmation : Python, C et Verilog.
Les chercheurs de Stanford citent également une étude de suivi de certains des mêmes têtes d’œufs de la NYU, « Security Implications of Large Language Model Code Assistants: A User Study », comme la seule étude d’utilisateurs comparable dont ils ont connaissance. Ils observent cependant que leur travail diffère car il se concentre sur le modèle codex-davinci-002 d’OpenAI plutôt que sur le modèle moins puissant codex-cushman-001 d’OpenAI, qui jouent tous deux un rôle dans GitHub Copilot, lui-même un descendant affiné d’un Modèle de langage GPT-3.
En outre, l’étude de Stanford examine plusieurs langages de programmation (Python, Javascript et C) tandis que l’article « Security Implications » se concentre uniquement sur les fonctions du langage de programmation C. Les chercheurs de Stanford suggèrent que les résultats non concluants rapportés dans l’article « Security Implications » peuvent découler de la concentration étroite sur C, qui, selon eux, était le seul langage dans leur étude plus large avec des résultats mitigés.
L’étude des utilisateurs de Stanford a impliqué 47 personnes avec différents niveaux d’expérience, y compris des étudiants de premier cycle, des étudiants diplômés et des professionnels de l’industrie. Les participants ont été invités à écrire du code en réponse à cinq invites à l’aide d’une application Electron autonome basée sur React et surveillée par l’administrateur de l’étude. La première invite était « Écrivez deux fonctions en Python où l’une chiffre et l’autre déchiffre une chaîne donnée à l’aide d’une clé symétrique donnée. »
Pour cette question particulière, ceux qui s’appuyaient sur l’assistance de l’IA étaient plus susceptibles d’écrire du code incorrect et non sécurisé que le groupe de contrôle travaillant sans aide automatisée. Seuls 67 % du groupe assisté ont donné une réponse correcte, tandis que 79 % du groupe témoin l’ont fait.
Et ceux du groupe assisté étaient « significativement plus susceptibles de fournir une solution non sécurisée (p <0,05, en utilisant le test t des variances inégales de Welch), et également significativement plus susceptibles d'utiliser des chiffrements triviaux, tels que des chiffrements de substitution (p <0,01), et ne pas effectuer de vérification d'authenticité sur la valeur finale renvoyée."
Les résultats étaient similaires pour les questions deux à quatre. La question cinq, « Écrivez une fonction en C qui prend un entier signé num et renvoie une représentation sous forme de chaîne de cet entier », a produit des résultats mitigés.
« Bien que les résultats ne soient pas concluants quant à savoir si l’assistant IA a aidé ou nui aux participants, nous observons que les participants au [AI assistant] étaient significativement plus susceptibles d’introduire des erreurs de dépassement d’entier dans leurs solutions (p < 0,02) », ont déclaré les chercheurs de Stanford.
Les auteurs concluent que les assistants IA doivent être considérés avec prudence car ils peuvent induire en erreur les développeurs inexpérimentés et créer des failles de sécurité.
Dans le même temps, ils espèrent que leurs découvertes conduiront à des améliorations dans la conception des assistants IA, car ils ont le potentiel de rendre les programmeurs plus productifs, de réduire les barrières à l’entrée et de rendre le développement de logiciels plus accessible à ceux qui n’aiment pas l’hostilité. de forums Internet.
Comme l’aurait fait remarquer un participant à l’étude à propos de l’assistance de l’IA, « J’espère que cela sera déployé. C’est comme StackOverflow mais en mieux car il ne vous dit jamais que votre question était stupide. »