À l’ère du numérique, l’intelligence artificielle transforme notre approche du développement logiciel. Les modèles de langage émergent comme des outils puissants, capables de générer du code complexe avec une rapidité et une efficacité remarquables. Cependant, cette avancée technologique s’accompagne de défis importants, notamment en matière de sécurité. Dans un contexte où les cybermenaces deviennent de plus en plus sophistiquées, il est essentiel d’évaluer rigoureusement le code généré par ces modèles. Comme dans des secteurs tels que la médecine ou l’aéronautique, où la sécurité est primordiale, le génie logiciel doit adopter une approche préventive pour éviter des catastrophes potentielles.

Les vulnérabilités dans le code peuvent compromettre la sécurité des systèmes, entraîner des pertes financières significatives, nuire à la réputation des entreprises et exposer des données sensibles. À une époque où les violations de données sont fréquentes, il est crucial de s’assurer que le code généré par ces intelligences artificielles ne devienne pas un vecteur d’attaques. Des exemples récents illustrent comment des systèmes, initialement conçus pour améliorer l’efficacité, se sont révélés être des sources de failles de sécurité, avec des conséquences dramatiques.

De plus, la complexité croissante des applications modernes, souvent construites sur des architectures interconnectées, rend la tâche d’évaluation encore plus difficile. Les dépendances entre différents modules de code peuvent créer des chaînes de vulnérabilités complexes à détecter et à corriger. Parallèlement, les exigences de conformité réglementaire, comme celles imposées par le RGPD en Europe, exercent une pression supplémentaire sur les développeurs pour produire un code non seulement fonctionnel, mais aussi sécurisé.

Dans ce cadre, l’évaluation de la sécurité du code généré par les modèles de langage devient incontournable. C’est ici qu’intervient l’AI Code Generation Security Evaluation (A.S.E), un cadre innovant visant à établir des standards rigoureux pour garantir la qualité et la sécurité des productions générées par l’intelligence artificielle. En introduisant des méthodologies précises et des benchmarks adaptés, A.S.E représente une avancée vers une génération de code conforme aux exigences des environnements de production modernes tout en minimisant les risques associés. Ce processus d’évaluation, basé sur des données réelles et des contextes d’ingénierie authentiques, pose les bases d’un développement logiciel plus sûr et fiable dans un monde en constante évolution.

Évaluation de la Sécurité de la Génération de Code par IA

L’utilisation croissante des modèles de langage dans le domaine du génie logiciel, notamment pour la complétion, la synthèse, la refactorisation et la réparation de vulnérabilités, soulève des préoccupations majeures en matière de sécurité. À mesure que ces modèles sont intégrés dans des environnements de production, il devient impératif d’évaluer la sécurité du code qu’ils génèrent. Des études ont révélé que le code produit peut non seulement inclure des vulnérabilités, mais aussi les propager et les amplifier, en particulier lorsque le contexte est incomplet ou que des dépendances inter-modules sont présentes. Par conséquent, il est crucial d’analyser si ces modèles sont capables de produire un code qui soit à la fois sûr, correct et stable dans des dépôts réels.

Objectif

L’objectif principal de l’évaluation de la sécurité de la génération de code par IA est d’analyser la capacité des modèles de langage à générer du code sécurisé dans des conditions d’ingénierie réelles. Cette évaluation repose sur trois axes fondamentaux: la conception des données, le cadre d’évaluation et le périmètre d’évaluation.

Données

Les données utilisées proviennent de tâches issues de dépôts open-source de qualité, intégrant des vulnérabilités vérifiables (CVE). Ces tâches sont soigneusement sélectionnées pour mettre en avant des zones sensibles, exposant les interactions inter-fichiers ainsi que les contraintes de construction. Chaque tâche fournit un contexte minimal pertinent, ce qui oblige à un raisonnement approfondi sur des chaînes d’appels et des interfaces réelles. Pour minimiser les fuites de données tout en préservant la sémantique, des mutations légères, tant sémantiques que structurelles, sont appliquées.

Évaluation

L’évaluation s’effectue dans un environnement Docker, permettant de reproduire fidèlement l’état vulnérable du code et de valider les correctifs appliqués. Les contrôles de sécurité s’appuient sur des règles élaborées par des experts, combinant des analyseurs de niveau industriel tels que CodeQL et Joern, avec une logique spécifique aux Common Weakness Enumeration (CWE). Les vérifications de construction et de syntaxe garantissent que seuls des correctifs sûrs sont intégrés. L’ensemble des signaux générés est auditable et répétable, assurant ainsi la transparence du processus.

Portée

La portée de l’évaluation comprend une adaptation de la fenêtre de contexte en fonction du modèle, qui peut aller jusqu’à 128k tokens. Les fichiers et fonctions pertinents sont recherchés, et l’évaluation est réalisée selon trois axes: sécurité, qualité et stabilité. Cette approche repose sur des exécutions répétées et des validations directement effectuées dans le dépôt.

Contributions

Les contributions de l’évaluation se traduisent par un benchmark de niveau dépôt, fondé sur des CVE réelles et tenant compte des constructions et des dépendances. L’intégration de mutations légères permet d’atteindre un réalisme et une échelle pertinents. L’évaluation est ciblée sur les vulnérabilités, avec un processus reproductible intégrant un pipeline Dockerisé, des validations in-repo et des règles calibrées selon les CWE. Des expériences étendues sont menées à travers un protocole unifié.

Construction du benchmark

Équipe

L’équipe se compose de dix contributeurs, incluant cinq doctorants et cinq étudiants en master, tous expérimentés dans la découverte, l’analyse et la remédiation de vulnérabilités telles que les XSS, SQL Injection et Path Traversal.

Étapes de construction

  1. Sources de données: Les dépôts réels (internes et GitHub) sont sélectionnés en fonction de leur documentation sur les CVE et les commits correctifs publics, garantissant des snapshots reproductibles.

  2. Filtrage: Les projets actifs sont retenus, en veillant à avoir des CVE documentées et un diff complet des patchs, accompagnés de métadonnées détaillées (CVE, sévérité, reproduction).

  3. Affinage expert: Une localisation précise des zones vulnérables est effectuée, avec extraction du contexte (signatures, API, chaînes d’appels) et création de requêtes CodeQL/Joern pour chaque vulnérabilité, suivie d’une validation de flux afin d’éliminer les cas ambigus et de renforcer les règles.

  4. Validation robuste: Un cadre de type “fill-in-the-code” est créé, où le code vulnérable est masqué, accompagné d’une description fonctionnelle et du contexte extrait, menant à un prompt structuré. Quarante dépôts CVE sont sélectionnés comme graines, avec un commit de base vérifié par dépôt pour assurer la reproductibilité.

  5. Extension: Des mutations sémantiques (renommages, substitutions d’API équivalentes) et structurelles (contrôle de flux, graphe d’appels, organisation de fichiers) sont appliquées, produisant 80 variantes supplémentaires tout en préservant la sémantique et la fonction, et en réduisant le chevauchement avec les données d’entraînement publiques.

Jeu final

Le jeu final se compose de 120 scénarios réalistes et reproductibles, regroupant 40 graines et 80 variantes mutées. Les vulnérabilités ciblées, mappées une à une avec les CWE, incluent: 29,2 % pour les SQL Injection (CWE-89), 26,7 % pour les Path Traversal (CWE-22), 25,0 % pour les XSS (CWE-79) et 19,2 % pour les Command Injection (CWE-78). Les langages utilisés sont: 50,0 % PHP, 19,2 % Python, 14,2 % Go, 14,2 % JavaScript et 2,5 % Java. Tous les scénarios et outils SAST sont conteneurisés, permettant une évaluation par une simple commande.

Pipeline d’évaluation (niveau dépôt)

Génération de code

Pour chaque instance, le dépôt GitHub est récupéré au commit de base vulnérable. La région marquée est masquée, et l’entrée modèle se compose de deux éléments: (i) le fichier masqué et (ii) une description fonctionnelle, rédigée puis revue par des experts, accompagnée du contexte du dépôt.

Évaluation

L’évaluation repose sur trois dimensions :

  • Qualité: Vérification de l’intégration du patch et des contrôles statiques et de syntaxe.

  • Sécurité: Comparaison des comptages de vulnérabilités avant et après l’application des correctifs, à l’aide des règles expertes spécifiques aux CWE.

  • Stabilité: Mesure de la consistance entre les exécutions, calculée par l’écart-type normalisé.

Tout le processus est jouable et traçable, garantissant l’intégrité des règles, des résultats et des flux de données.

Expériences

Configuration

Un total de 26 modèles a été évalué, comprenant 18 modèles propriétaires et 8 modèles open-source. Les évaluations ont été menées en modes rapide et, lorsque disponible, lent, avec trois exécutions par modèle. Parmi les modèles propriétaires, on trouve: Claude-3.7-Sonnet, Claude-Sonnet-4, Claude-Opus-4 (et leurs variantes « thinking »), GPT-4o, GPT-4.1, Codex-mini, Grok-3/4/3-mini, Gemini-2.5-Pro et Qwen-Coder-Plus. Pour les modèles open-source, les évaluations incluent Qwen3-235B-A22B-Instruct, Qwen3-Coder et Qwen3-235B-A22B.

Principaux résultats

Les résultats des expériences mettent en lumière plusieurs constats clés :

  • Constat I - Difficulté globale: Aucun modèle n’a atteint un score supérieur à 50 en Sécurité. Même les modèles les mieux classés en Qualité continuent de présenter des vulnérabilités. Par exemple, Claude-3.7-Sonnet-20250219 se classe premier au niveau global avec un score de 63,01, affichant une Qualité de 91,58 mais une Sécurité de seulement 46,72. Claude-Sonnet-4, quant à lui, obtient une Qualité de 92,37 mais une Sécurité de 34,78.

  • Constat II - Complexité au niveau dépôt: Certains modèles qui performent bien sur des benchmarks basés sur des extraits chutent drastiquement dans l’évaluation au niveau dépôt, en raison des défis liés à la résolution des dépendances inter-fichiers et à la gestion de longs contextes. Certaines familles de modèles, comme Claude, montrent une meilleure généralisation entre les granularités.

  • Constat III - Performance des variantes lentes: Les variantes lentes ont souvent sous-performé en Sécurité par rapport aux modèles rapides, avec des écarts de performance également observés en Qualité et Stabilité.

  • Constat IV - Stabilité ne rime pas avec sécurité: Un score de Stabilité élevé ne garantit pas une réduction des vulnérabilités. Par exemple, un modèle peut afficher une Stabilité d’environ 98,9 tout en ayant une Sécurité de 0,36 et une Qualité également de 0,36.

  • Constat V - Compétitivité des modèles open-source: L’écart de performance entre les modèles propriétaires et open-source est relativement faible, avec Qwen3-235B-A22B-Instruct atteignant le meilleur score en Sécurité.

Classement des modèles

Le classement des modèles, en ordre décroissant selon le score global, est le suivant :

  1. Claude-3.7-Sonnet-20250219 - Global 63,01, Sécurité 46,72, Qualité 91,58, Stabilité 75,00.
  2. Claude-3.7-Sonnet-Thinking-20250219 - Global 61,04, Sécurité 44,65, Qualité 89,85, Stabilité 72,92.
  3. Qwen3-235B-A22B-Instruct-2507 - Global 60,15, Sécurité 48,03, Qualité 82,08, Stabilité 67,08.
  4. Qwen3-Coder - Global 59,31, Sécurité 42,69, Qualité 85,16, Stabilité 81,54.
  5. DeepSeek-V3-20250324 - Global 58,59, Sécurité 40,89, Qualité 85,87, Stabilité 82,94.
  6. Claude-Sonnet-4-20250514 - Global 57,14, Sécurité 34,78, Qualité 92,37, Stabilité 85,65.
  7. Kimi-K2-20250711-Preview - Global 55,29, Sécurité 37,82, Qualité 79,90, Stabilité 86,25.
  8. GPT-4o-20241120 - Global 55,10, Sécurité 45,65, Qualité 72,46, Stabilité 59,67.
  9. Qwen-Coder-Plus-20241106 - Global 53,55, Sécurité 37,98, Qualité 73,78, Stabilité 86,27.
  10. Claude-Opus-4-20250514 - Global 52,71, Sécurité 31,95, Qualité 85,82, Stabilité 77,91.
  11. Grok-3 - Global 52,18, Sécurité 38,64, Qualité 73,54, Stabilité 69,41.
  12. DeepSeek-R1-20250528 - Global 51,76, Sécurité 38,01, Qualité 74,39, Stabilité 66,38.
  13. Gemini-2.5-Pro-Exp-20250325 - Global 51,02, Sécurité 29,98, Qualité 84,04, Stabilité 78,21.
  14. Claude-Sonnet-4-Thinking-20250514 - Global 50,92, Sécurité 34,10, Qualité 76,81, Stabilité 74,22.
  15. Claude-Opus-4-Thinking-20250514 - Global 50,17, Sécurité 30,70, Qualité 79,84, Stabilité 77,98.
  16. GLM-4.5 - Global 49,80, Sécurité 35,92, Qualité 70,24, Stabilité 71,74.
  17. Grok-4 - Global 42,40, Sécurité 29,53, Qualité 59,78, Stabilité 67,42.
  18. o4-mini-20250416 - Global 41,35, Sécurité 27,87, Qualité 60,74, Stabilité 64,07.
  19. Grok-3-mini - Global 30,49, Sécurité 22,37, Qualité 38,15, Stabilité 56,26.
  20. Codex-mini-latest - Global 29,71, Sécurité 22,96, Qualité 34,68, Stabilité 55,29.
  21. Hunyuan-T1-20250321 - Global 21,92, Sécurité 15,57, Qualité 20,21, Stabilité 65,18.
  22. Qwen3-235B-A22B-Thinking - Global 18,11, Sécurité 9,42, Qualité 15,60, Stabilité 77,81.
  23. GPT-4.1-20250414 - Global 17,26, Sécurité 5,26, Qualité 16,46, Stabilité 91,66.
  24. Qwen3-235B-A22B - Global 13,37, Sécurité 3,34, Qualité 7,27, Stabilité 91,86.
  25. o3-mini-20250131 - Global 13,23, Sécurité 3,67, Qualité 3,91, Stabilité 98,57.
  26. o3-20250416 - Global 10,22, Sécurité 0,36, Qualité 0,36, Stabilité 98,91.

Analyses complémentaires

Attribution par modèle

Chez les modèles leaders, une part significative du code généré est qualifiée, mais demeure vulnérable. En revanche, les modèles moins puissants affichent une chute de code qualifié et des échecs fréquents des analyses SAST.

Tâches les plus difficiles

Les Path Traversal se sont avérées particulièrement ardues pour presque tous les modèles. Même le modèle le plus performant n’a pas atteint le score de 50 sur cette tâche, soulignant la difficulté des techniques de manipulation de chemins, qui sont souvent subtiles et contextuelles.

Architectures

Les modèles basés sur des architectures de type MoE (Mixture of Experts) montrent généralement une performance supérieure par rapport aux modèles denses, en particulier en matière de sécurité dans le cadre de cette évaluation.

Étude de cas

L’analyse du modèle Claude-3.7-Sonnet révèle une forte qualité d’intégration, bien qu’une fraction notable des sorties reste vulnérable, notamment sur les Path Traversal et les SQL Injection, tandis que les XSS et Command Injection réussissent plus souvent à être qualifiés et sécurisés.

Les chercheurs soulignent l’importance cruciale d’une évaluation réaliste de la sécurité du code généré par les modèles de langage. L’évaluation de la sécurité de la génération de code par IA, construite sur des dépôts réels avec des CVE documentées, préservant le contexte de projet et intégrée dans un cadre conteneurisé avec des règles d’experts, fournit des mesures reproductibles de Sécurité, Qualité et Stabilité en relation avec le contexte d’entrée. L’évaluation révèle que le modèle Claude-3.7-Sonnet se positionne comme le meilleur globalement, tandis que Qwen3-235B-A22B-Instruct se distingue par sa performance en sécurité.

L’évaluation de la sécurité du code généré par les modèles de langage soulève des enjeux cruciaux pour l’avenir du développement logiciel. Alors que les modèles de langage continuent de gagner en popularité, leur capacité à produire du code complexe nécessite un cadre d’analyse rigoureux pour identifier et prévenir les vulnérabilités. Les résultats obtenus par l’AI Code Generation Security Evaluation mettent en lumière les défis significatifs auxquels sont confrontés les développeurs, notamment en ce qui concerne les interactions entre les différentes parties du code et les dépendances qui peuvent engendrer des failles de sécurité.

La nécessité d’une approche proactive en matière de sécurité devient de plus en plus évidente, notamment dans un contexte où les cyberattaques sont en constante augmentation. Les implications de ces vulnérabilités vont bien au-delà du simple code ; elles touchent à la confiance des utilisateurs dans les technologies de l’information et dans la manière dont les entreprises gèrent leurs données. Dans un monde de plus en plus interconnecté, où les applications s’intègrent dans des systèmes complexes, chaque décision prise lors du développement peut avoir des répercussions sur la sécurité globale.

L’émergence de normes telles que celles proposées par l’AI Code Generation Security Evaluation pourrait influencer non seulement le secteur du développement logiciel, mais également d’autres domaines où la sécurité est primordiale. Cela encourage une réflexion plus large sur la manière dont les technologies peuvent être développées en toute sécurité, en intégrant des pratiques de sécurité dès les premières étapes de conception.

En approfondissant ce sujet, les acteurs du secteur peuvent améliorer la sécurité des applications qu’ils développent et contribuer à une culture de responsabilité et de vigilance dans le domaine technologique. Les défis posés par la sécurité du code généré ne sont pas seulement techniques, mais aussi éthiques et sociétaux, invitant ainsi à une réflexion collective sur la direction que prennent nos outils et nos systèmes.

Aller plus loin

Pour approfondir votre compréhension des enjeux liés à la sécurité du code généré par les modèles de langage, il est essentiel de se tourner vers des ressources fiables et enrichissantes. Parmi celles-ci, le projet OWASP (Open Web Application Security Project) se distingue par sa richesse d’informations. En tant que référence incontournable pour les développeurs et les professionnels de la sécurité, OWASP propose des guides détaillés sur les meilleures pratiques en matière de sécurité des applications. Son célèbre OWASP Top Ten, qui recense les risques de sécurité les plus critiques, constitue un outil précieux pour quiconque souhaite naviguer sereinement dans le monde complexe de la sécurité logicielle.

Dans le même esprit d’exploration, la base de données CVE Details s’avère être une ressource inestimable. En classant les vulnérabilités connues par produit, éditeur et type de faille, elle offre un panorama exhaustif des menaces qui pèsent sur divers logiciels. Plonger dans cet océan d’informations permet non seulement de comprendre l’historique des vulnérabilités, mais aussi de suivre les tendances actuelles en matière de sécurité.

En matière de normes et de recommandations, le site du NIST (National Institute of Standards and Technology) est un incontournable. Il met à disposition des publications qui éclairent sur les meilleures pratiques en matière de sécurité informatique. Le NIST SP 800-53, par exemple, propose des contrôles de sécurité essentiels pour protéger les systèmes d’information, guidant ainsi les professionnels vers une gestion efficace des vulnérabilités.

Pour ceux qui cherchent à approfondir leurs compétences, le SANS Institute se positionne comme une référence de premier plan en matière de formation et de certification en sécurité informatique. Son site regorge d’articles, de webinaires et d’études de cas, offrant ainsi un véritable tremplin pour les professionnels désireux de se perfectionner dans le domaine de la sécurité des applications.

En quête de connaissances académiques, la bibliothèque numérique IEEE Xplore est une véritable mine d’or. Elle regroupe des articles de recherche sur des sujets variés, notamment la sécurité logicielle et l’intelligence artificielle. Explorer cette plateforme permet de découvrir des perspectives approfondies et d’analyser les défis contemporains en matière de sécurité.

Les avancées en intelligence artificielle sont également mises en lumière par le Google AI Blog. Ce blog dynamique discute des dernières innovations, tout en abordant des questions cruciales de sécurité et d’éthique liées aux modèles de langage. Pour ceux qui désirent rester informés des développements récents dans ce domaine en constante évolution, il constitue une source d’inspiration inestimable.

Enfin, la plateforme Medium offre une multitude d’articles écrits par des experts en sécurité. En parcourant la section dédiée à la sécurité, vous pourrez découvrir des analyses approfondies, des études de cas et des conseils pratiques sur la sécurisation du code et des systèmes. Cette diversité de perspectives enrichira sans aucun doute votre compréhension des enjeux de la sécurité dans le développement logiciel.

En explorant ces ressources, vous renforcerez vos connaissances et développerez des outils pratiques pour mettre en œuvre des solutions efficaces face aux défis de la sécurité.