Security of LLM-generated Code: A Comparative Analysis
Cet article évalue empiriquement la sécurité du code généré par sept grands modèles de langage populaires et constate que tous produisent un code contenant des vulnérabilités, dont la majorité sont de sévérité critique ou élevée.
Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète
Imaginez que vous ayez embauché une équipe de sept différents apprentis « surintelligents » pour écrire du code pour votre logiciel. Ces apprentis sont propulsés par l'Intelligence Artificielle (IA) et sont célèbres pour être incroyablement rapides et utiles. Ce sont les meilleurs outils de l'industrie, utilisés par des millions de développeurs.
Les chercheurs de l'Université Carleton ont décidé de soumettre ces sept apprentis à un test strict. Ils ne leur ont pas demandé de construire un vaisseau spatial ou d'écrire un roman ; ils leur ont donné un ensemble spécifique de 81 tâches de codage courantes — comme « créer une page de connexion » ou « permettre à un utilisateur de télécharger une photo ». L'objectif était de déterminer si le code écrit par ces apprentis IA était sûr à utiliser, ou s'il était rempli de pièges cachés.
Voici ce qu'ils ont découvert, expliqué simplement :
1. L'apprenti « parfait » n'existe pas
La découverte la plus choquante ? Aucun des sept apprentis n'a réussi le test. Chaque outil d'IA qu'ils ont testé (y compris les grands noms comme GPT-4o d'OpenAI, Gemini de Google et watsonx d'IBM) a produit du code comportant des failles de sécurité.
Pensez-y comme à l'achat d'une voiture auprès de sept fabricants célèbres différents. Vous vous attendriez à ce que l'un d'entre eux ait au moins une cote de sécurité parfaite. Au lieu de cela, les chercheurs ont découvert que chaque voiture avait un frein défectueux ou un volant desserré. En fait, la grande majorité du code qu'ils ont écrit présentait des défauts de gravité « Critique » ou « Élevée » — ce qui signifie qu'il ne s'agit pas de simples égratignures, mais de trous béants qui pourraient permettre aux pirates informatiques de s'introduire.
2. Le « piège » dans les instructions
Les chercheurs ont utilisé un ensemble spécial d'instructions (prompts) conçu pour tromper l'IA et la pousser à faire des erreurs. Par exemple, ils ont demandé à une IA de « écrire une fonction permettant à un utilisateur de télécharger un fichier ».
- L'erreur de l'IA : Certaines IA ont écrit du code permettant à un pirate de télécharger un virus au lieu d'une photo.
- La surprise : Même lorsque l'IA réussissait la tâche principale, elle oubliait souvent les règles de sécurité. Par exemple, une IA a écrit une page de connexion qui fonctionnait parfaitement, mais qui stockait les mots de passe en texte clair (comme écrire votre mot de passe sur un post-it collé sur votre ordinateur).
3. La catastrophe du « mode débogage »
L'une des erreurs les plus courantes constatées était de laisser le « mode débogage » activé.
- L'analogie : Imaginez une cuisine de restaurant. Le « mode débogage » revient à laisser la porte arrière grand ouverte avec un panneau indiquant : « Entrez et regardez nos recettes secrètes, essayez le fourneau. » C'est excellent pour le chef lorsqu'il apprend, mais terrible pour un vrai restaurant ouvert au public.
- La réalité : L'IA continuait d'écrire du code laissant cette « porte arrière » ouverte. Si un développeur utilisait ce code sans vérifier, tout son système pouvait être piraté. Les chercheurs ont noté que, bien que certains outils d'IA ajoutent un tout petit commentaire disant « Désactivez ceci pour la vie réelle », on ne pouvait pas compter sur les développeurs pour lire et suivre réellement cette note.
4. Le paradoxe du « rapide mais dangereux »
L'étude a révélé un schéma étrange avec un outil spécifique, watsonx d'IBM.
- L'analogie : Imaginez un apprenti qui écrit des phrases très courtes et simples (du code court). Vous pourriez penser : « Les phrases courtes sont plus faciles à vérifier, donc elles doivent être plus sûres. »
- La réalité : Cet apprenti avait en fait le taux le plus élevé d'erreurs dangereuses par ligne de code. Parce que le code était si court, il sautait complètement les contrôles de sécurité importants. C'était comme un conducteur qui prend un raccourci à travers un champ de mines parce qu'il est pressé.
5. Le développeur « trop confiant »
Le document met en lumière un élément humain dangereux. Les développeurs adorent ces outils d'IA car ils accélèrent le travail. Cependant, l'étude suggère que les développeurs deviennent trop confiants.
- L'analogie : C'est comme un conducteur qui achète une voiture avec une fonction « conduite autonome » et qui s'endort au volant, en supposant que la voiture ne se crashera jamais.
- La réalité : Les outils d'IA sont si bons pour paraître confiants que les développeurs supposent que le code est sûr. Les chercheurs ont découvert que plus de 73 % des extraits de code générés par ces outils contenaient au moins une faille de sécurité. Si un développeur copie et colle simplement ce code sans le vérifier, il invite essentiellement les ennuis.
La conclusion
Le document conclut que, bien que ces outils d'IA soient incroyables pour écrire du code rapidement, ils sont actuellement terribles pour écrire du code sécurisé par défaut.
Ils sont comme un chef très talentueux mais inexpérimenté qui peut hacher des légumes plus vite que n'importe qui d'autre, mais qui oublie constamment de se laver les mains ou de vérifier si la nourriture est avariée. Les chercheurs avertissent que, tant que ces outils d'IA ne seront pas enseignés à prioriser la sécurité par rapport à la vitesse (ou tant que les développeurs n'apprendront pas à vérifier chaque ligne), les utiliser pour écrire des logiciels est un pari risqué.
L'essentiel : Ne faites pas confiance aveuglément à l'IA. Traitez le code qu'elle génère comme un brouillon d'un employé junior : il a besoin qu'un expert senior en sécurité le révise avant sa mise en production.
Noyé(e) sous les articles dans votre domaine ?
Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.