Les chercheurs démontrent le biais de l’IA, expliquant pourquoi “Copilot devrait rester copilote” pour les équipes de développement

github-copilot-ai-bias-chapeau-noirGitHub a mis à jour les conseils sur l’utilisation de son bot de code alimenté par l’IA Copilot après que les chercheurs ont démontré à Black Hat qu’il génère souvent du code vulnérable.

Le Washington Post a récemment rendu compte de l’héroïsme de Corion Evans, 16 ans, un jeune homme du sud du Mississippi, qui a plongé dans l’eau pour sauver les conducteurs d’une voiture en train de couler après avoir vu le conducteur diriger le véhicule sur une rampe de mise à l’eau et dans la rivière Pascagoula.

La fille, une adolescente qui conduisait la voiture, a dit plus tard aux autorités que le GPS avait mal fonctionné et qu’elle ne s’était pas rendu compte qu’il la conduisait, elle et les autres filles, dans l’eau. Bien qu’une révélation choquante, en réalité, les conducteurs suivent aveuglément l’exemple des algorithmes dans le fossé (littéralement et proverbialement) est un phénomène assez courant de nos jours.

Les chercheurs présents à la conférence sur la sécurité Black Hat mercredi ont fourni une leçon similaire aux développeurs de logiciels. Hammond Pearce de NYU et Benjamin Tan de l’Université de Calgary présenté les résultats de la recherche sur Copilot, un bot de développement basé sur l’IA que GitHub a introduit en 2021 et mis à la disposition générale aux développeurs en juin 2022.

Voici les points saillants de ce que les chercheurs ont partagé lors des Black Hat Briefings.

[ Related: Copilot’s rocky takeoff: GitHub ‘steals code’ ]

Ne laissez pas l’IA conduire (développement de logiciels)

Comme les algorithmes pilotant WAZE ou d’autres applications de navigation, Pearce et Tan ont déclaré que le copilote de GitHub était une technologie d’assistance utile qui, tout de même, mérite une attention continue et étroite de la part des humains qui l’utilisent – du moins si les projets de développement ne veulent pas se retrouvent submergés dans un fleuve de vulnérabilités exploitables telles que l’injection SQL et les débordements de tampon.

Les chercheurs ont découvert que les suggestions de codage de Copilot contenaient des vulnérabilités exploitables environ 40 % du temps. Environ un pourcentage égal du temps, le code suggéré avec des défauts exploitables était un choix “le mieux classé” – ce qui le rendait plus susceptible d’être adopté par les développeurs, ont déclaré Pearce et Tan au public de Black Hat.

Au total, l’équipe de chercheurs a généré 1 689 échantillons de code à l’aide de Copilot, répondant à 89 “scénarios” différents ou tâches de codage proposées. Pour chaque scénario, l’équipe a demandé à Copilot de générer 25 solutions différentes, puis a noté celles qui étaient les mieux classées par Copilot. Ils ont ensuite analysé le code suggéré pour la présence de 18 faiblesses logicielles courantes, comme documenté par MITRE sur son Énumération des faiblesses communes (CWE) liste.

Garbage (code) entrant, poubelle (code) sortant

Alors que Copilot s’est avéré bon pour certains types de tâches, telles que la résolution des problèmes liés aux autorisations, à l’autorisation et à l’authentification, il a moins bien fonctionné lorsqu’il a été présenté avec d’autres tâches.

Par exemple, une invite pour créer “trois flottants aléatoires”, ou un nombre non entier, a entraîné trois suggestions qui auraient conduit à des erreurs “hors limites” qui auraient pu être utilisées par des acteurs malveillants pour implanter et exécuter du code sur des systèmes vulnérables. .

Un autre chercheur invitant Copilot à créer un hachage de mot de passe a entraîné une recommandation de code par Copilot pour utiliser le Algorithme de hachage MD5, qui est considéré comme non sécurisé et dont l’utilisation n’est plus recommandée.

Modéliser les mauvais comportements

Le problème peut résider dans la façon dont Copilot a été formé, plutôt que dans la façon dont l’IA a été conçue. Selon GitHub, Copilot a été conçu pour fonctionner comme une “extension d’éditeur”, afin d’accélérer le travail des développeurs. Cependant, pour ce faire, l’IA a été formée sur l’immense trésor de code qui réside sur le référentiel cloud de GitHub. La société affirme qu’elle “distille les connaissances collectives des développeurs du monde”.

Le problème : une grande partie de cette « connaissance collective » revient à du code mal exécuté qui ne fournit pas grand-chose en tant que modèle de création de code.

“Copilot ne sait pas ce qui est bon ou mauvais. Il sait juste ce qu’il a vu auparavant.
Hammond Pearce

La recommandation d’utiliser MD5 dans le code pour créer un hachage de mot de passe en est un exemple classique. Si l’étude de Copilot sur le code GitHub a conclu que MD5 était l’algorithme de hachage le plus couramment utilisé pour les mots de passe, il est logique qu’il le recommande pour une nouvelle fonction de hachage de mot de passe – sans comprendre que l’algorithme, bien que courant, est obsolète et a été obsolète.

Le type de modélisation probabiliste sur lequel Copilot s’appuie, y compris l’utilisation de la modélisation en langage étendu, est efficace pour interpréter le code, mais pas pour saisir le contexte. Cela se traduit par une IA qui reproduit simplement des modèles qui, bien que courants, sont défectueux en fonction de ce qu’elle pense “semble correct”, ont déclaré les chercheurs.

Les expériences menées par l’équipe de recherche ont eu tendance à renforcer cette idée. Le code généré par une étude de développeurs réputés et de modules bien contrôlés avait tendance à être de meilleure qualité que les suggestions calquées sur le code de développeurs peu connus.

Biais de l’IA amplifié par le classement

La tendance de Copilot à accorder une grande importance aux suggestions de code défectueux lors de la présentation de ses suggestions est un problème tout aussi inquiétant, ont déclaré les chercheurs. Dans environ 4 recommandations sur 10, le code le plus suggéré contenait l’une des faiblesses courantes et exploitables que les chercheurs recherchaient.

Ce classement supérieur rend plus probable que les développeurs utilisent le code suggéré, tout comme beaucoup d’entre nous sautent au premier résultat de recherche. Ce type de «biais d’automatisation» – dans lequel les humains ont tendance à accepter aveuglément les choses que les algorithmes recommandent – pourrait être un réel problème alors que les organisations de développement commencent à s’appuyer davantage sur les robots IA pour aider à accélérer les efforts de développement.

À la suite de cette nouvelle recherche présentée à Black Hat, GitHub a mis à jour sa clause de non-responsabilité pour l’IA, exhortant les développeurs à auditer le code Copilot avec des outils comme son utilitaire CodeQL pour découvrir les vulnérabilités avant de mettre en œuvre les suggestions.

L’enquêteur résume :

“Le copilote doit rester un copilote.”

Continue d’apprendre

*** Il s’agit d’un blog syndiqué du Security Bloggers Network du blog ReversingLabs rédigé par Paul Roberts. Lisez le message original sur : https://blog.reversinglabs.com/blog/ai-automation-bias-could-lead-to-more-vulnerable-code-0

Leave a Comment