Les "Personnalités" des Modèles d'IA Impactent Qualité & Sécurité du Code

Theregister

Les modèles d’IA générative conçus pour aider au codage présentent des “personnalités” distinctes qui influencent profondément la qualité, la sécurité et la maintenabilité du code qu’ils produisent. Bien que ces modèles partagent des forces et des faiblesses fondamentales, les nuances de leurs styles de codage individuels conduisent à des résultats variés, y compris la génération de “mauvaises odeurs de code” (code smells) problématiques – des schémas de conception indiquant des problèmes structurels plus profonds.

Comprendre ces caractéristiques uniques est crucial pour les développeurs de logiciels qui exploitent les grands modèles de langage (LLM) pour l’assistance, selon Sonar, une entreprise spécialisée dans la qualité du code. Tariq Shaukat, PDG de Sonar, a souligné la nécessité de regarder au-delà de la performance brute pour saisir l’étendue complète des capacités d’un modèle. Il a déclaré que reconnaître les forces de chaque modèle et sa propension aux erreurs est essentiel pour un déploiement sûr et sécurisé.

Sonar a récemment mis à l’épreuve cinq LLM proéminents : Claude Sonnet 4 et 3.7 d’Anthropic ; GPT-4o d’OpenAI ; Llama 3.2 90B de Meta ; et l’OpenCoder-8B open-source. L’évaluation a impliqué 4 442 tâches de programmation Java, englobant une gamme de défis conçus pour évaluer la compétence en codage. Les conclusions, publiées dans un rapport intitulé “Les personnalités de codage des LLM leaders”, s’alignent largement sur le sentiment plus large de l’industrie : les modèles d’IA générative sont des outils précieux lorsqu’ils sont utilisés conjointement avec une supervision et une révision humaine rigoureuses.

Les LLM testés ont démontré des niveaux de compétence variés sur les benchmarks standard. Par exemple, sur le benchmark HumanEval, Claude Sonnet 4 a atteint un taux de réussite impressionnant de 95,57 %, tandis que Llama 3.2 90B était en retard avec 61,64 %. La solide performance de Claude suggère une grande capacité à générer du code valide et exécutable. De plus, des modèles comme Claude 3.7 Sonnet (72,46 % de solutions correctes) et GPT-4o (69,67 %) ont montré des prouesses techniques dans les tâches nécessitant l’application d’algorithmes et de structures de données, et ils se sont avérés capables de transférer des concepts entre différents langages de programmation.

Malgré ces atouts, le rapport a mis en évidence un défaut critique partagé : un manque généralisé de conscience de la sécurité. Tous les LLM évalués ont produit un pourcentage de vulnérabilités étonnamment élevé, fréquemment avec les niveaux de gravité les plus élevés possibles. Sur une échelle qui inclut “Bloquant”, “Critique”, “Majeur” et “Mineur”, les vulnérabilités générées étaient majoritairement de niveau “Bloquant”, ce qui signifie qu’elles pourraient provoquer le plantage d’une application. Pour Llama 3.2 90B, plus de 70 % de ses vulnérabilités ont été classées “Bloquant”, un chiffre qui s’élevait à 62,5 % pour GPT-4o, et près de 60 % pour Claude Sonnet 4.

Les failles les plus courantes comprenaient les vulnérabilités de parcours de chemin (path traversal) et d’injection – représentant 34,04 % des problèmes dans le code généré par Claude Sonnet 4 – suivies par les identifiants codés en dur, les mauvaises configurations cryptographiques et l’injection d’entités externes XML. Cette difficulté avec les failles d’injection découle de l’incapacité des modèles à tracer efficacement le flux de données non fiables vers des parties sensibles du code, une analyse non locale complexe dépassant leur portée de traitement typique. De plus, ils génèrent souvent des secrets codés en dur car de telles failles sont présentes dans leurs données d’entraînement. Manquant d’une compréhension complète des normes d’ingénierie logicielle, ces modèles ont également fréquemment négligé de fermer les flux de fichiers, entraînant des fuites de ressources, et ont montré un biais vers un code désordonné, complexe et difficile à maintenir, caractérisé par de nombreuses “mauvaises odeurs de code”.

L’analyse de Sonar a révélé des “personnalités” distinctes pour chaque modèle :

Claude 4 Sonnet a gagné le surnom de “l’architecte senior” en raison de ses compétences exceptionnelles, réussissant 77,04 % des tests de référence. Son output est généralement verbeux et très complexe, reflétant la tendance d’un ingénieur expérimenté à implémenter des sauvegardes sophistiquées, une gestion des erreurs et des fonctionnalités avancées.

GPT-4o a été surnommé “le généraliste efficace”, décrit comme un développeur fiable et moyen. Bien qu’il évite généralement les bugs les plus graves, il est sujet aux erreurs de flux de contrôle.

OpenCoder-8B est apparu comme “le prototypiste rapide”. Il produit le code le plus concis, générant le moins de lignes, mais présente également la densité de problèmes la plus élevée, avec 32,45 problèmes par mille lignes de code.

Llama 3.2 90B a été qualifié de “la promesse non tenue”, marqué par un taux de réussite médiocre de 61,47 % et un taux alarmant de 70,73 % de vulnérabilités de gravité “Bloquant”.

Enfin, Claude 3.7 Sonnet a été nommé “le prédécesseur équilibré”. Il affiche un taux de réussite compétent de 72,46 % et une densité de commentaires élevée (16,4 %). Malgré ses forces, ce modèle produit également une proportion significative de vulnérabilités de gravité “Bloquant”. Fait intéressant, bien que Claude 4 Sonnet soit un modèle plus récent et qu’il soit plus performant sur les benchmarks généraux, les vulnérabilités de sécurité qu’il crée ont presque deux fois plus de chances d’être de gravité “Bloquant” par rapport à son prédécesseur.

Compte tenu de ces défis inhérents, le rapport de Sonar conclut qu’une gouvernance robuste et une analyse approfondie du code ne sont pas seulement souhaitables, mais impératives pour vérifier le code généré par l’IA.