Simple Science

La science de pointe expliquée simplement

# Informatique# Génie logiciel# Recherche d'informations# Apprentissage automatique

Évaluer la sécurité du code des LLMs

Évaluer la sécurité du code généré par des modèles de langage large avec LLMSecEval.

― 6 min lire


Évaluation de la sécuritéÉvaluation de la sécuritédu code LLMcode généré par l'IA.Évaluer les failles de sécurité dans le
Table des matières

Les grands modèles de langage (LLMs) comme Codex sont de plus en plus utilisés pour aider à créer et compléter du Code. Ces modèles ont appris à partir d'une énorme quantité de code trouvé dans des sources publiques, comme GitHub. Bien que ces outils puissent rendre le codage plus facile, il y a des préoccupations concernant la Sécurité du code qu'ils produisent. Cet article va parler de LLMSecEval, un nouveau jeu de données conçu pour évaluer la sécurité du code généré par les LLMs.

Le besoin d'un jeu de données

Avec la popularité croissante des LLMs pour les tâches de codage, il est crucial d'évaluer la sécurité du code qu'ils produisent. Beaucoup de développeurs utilisent ces modèles pour créer des applis réelles. Cependant, le code généré peut avoir des failles de sécurité à cause de la nature des données d'entraînement, qui inclut souvent du code non sécurisé. Donc, il est nécessaire d'avoir un moyen fiable pour tester la sécurité de ce code.

Qu'est-ce que LLMSecEval ?

LLMSecEval est un jeu de données contenant 150 invites en langage naturel (NL). Ces invites peuvent être utilisées pour évaluer à quel point les LLMs créent du code sécurisé. Chaque invite décrit une tâche de codage sujette à des problèmes de sécurité en se basant sur une liste de faiblesses communes. Pour chaque invite, il y a aussi un exemple de code sécurisé disponible pour comparaison. Cela permet aux développeurs et aux chercheurs de voir comment le code généré par les LLMs se compare aux alternatives sécurisées.

Création du jeu de données

Pour créer le jeu de données, l'équipe a d'abord examiné les faiblesses de sécurité courantes notées par MITRE, qui identifie des problèmes majeurs de logiciels. Ils se sont concentrés sur 18 faiblesses parmi les 25 les plus sérieuses. L'équipe a rédigé des invites pouvant mener à du code avec des Vulnérabilités potentielles. Par exemple, une invite pourrait demander du code Python pour créer une page d'inscription qui ne vérifie pas correctement l'entrée utilisateur.

Au lieu d'écrire ces invites de zéro, ils ont utilisé Codex pour générer des descriptions basées sur des extraits de code existants contenant des problèmes. Cette approche a aidé à créer des invites pertinentes et utiles tout en s'assurant qu'elles étaient ancrées dans de vrais exemples de code.

Qualité des invites

L'équipe a évalué la qualité des 150 invites en utilisant plusieurs critères. Ils ont pris en compte des facteurs comme à quel point le langage était naturel et à quel point il était facile à comprendre. La plupart des invites ont bien été notées, ce qui indique qu'elles étaient claires et informatives. Quelques invites avaient besoin d'améliorations à cause de détails inutiles ou d'une formulation complexe. Cependant, dans l'ensemble, les invites étaient de haute qualité.

Utilisation de LLMSecEval

L'objectif principal de LLMSecEval est d'aider les chercheurs et les développeurs à examiner la sécurité du code généré par les LLMs. Le jeu de données peut être utilisé pour générer du code basé sur les invites fournies puis analyser ce code pour des problèmes de sécurité. Cela se fait via un outil qui permet aux utilisateurs de sélectionner un LLM, d'entrer les invites NL et de recevoir le code en sortie.

Pour vérifier les vulnérabilités, le code généré est analysé à l'aide de CodeQL, un outil conçu pour l'analyse automatisée du code. Cet outil peut identifier divers problèmes de sécurité en se basant sur un ensemble de requêtes prédéfinies. En utilisant LLMSecEval avec CodeQL, les utilisateurs peuvent déterminer si le code produit est sécurisé ou s'il introduit des vulnérabilités.

Travaux connexes

Avant LLMSecEval, d'autres jeux de données avaient été créés pour examiner le code produit par les LLMs. Par exemple, Codex avait un jeu de données appelé HumanEval qui se concentrait sur le fait de savoir si le code généré fonctionnait correctement mais ne traitait pas des préoccupations de sécurité. De même, d'autres recherches ont exploré à quel point les LLMs pouvaient compléter du code ou corriger des bogues, mais la sécurité n'était pas le principal point d'intérêt.

LLMSecEval comble cette lacune en fournissant un jeu de données spécifiquement destiné à évaluer la sécurité du code généré par ces modèles. En se concentrant sur les vulnérabilités communes, LLMSecEval établit une base pour de futures études dans ce domaine.

Limitations et plans futurs

La version actuelle de LLMSecEval couvre seulement 18 des 25 faiblesses de sécurité les plus importantes. Pour l'avenir, il y a des plans pour étendre ce jeu de données en incluant d'autres faiblesses et en le mettant à jour annuellement pour refléter de nouvelles découvertes. Cela impliquera d'utiliser des exemples de code provenant de diverses faiblesses pour créer de nouvelles invites.

Une autre limitation est l'approche agnostique des invites. Certaines faiblesses ne s'appliquent qu'à des langages de programmation spécifiques. Bien que l'objectif ait été de créer des invites générales applicables à différents langages, cela peut ne pas bien fonctionner pour toutes les faiblesses. Les efforts futurs pourraient se concentrer sur la création d'invites spécifiques à chaque langage pour améliorer l'utilité du jeu de données.

Conclusion

LLMSecEval est une ressource précieuse pour évaluer la sécurité du code généré par les LLMs. En offrant un ensemble de 150 invites NL basées sur des vulnérabilités communes, il fournit un moyen simple d'évaluer les implications de sécurité de l'utilisation des LLMs dans le développement logiciel. À mesure que ces modèles sont adoptés plus largement, comprendre leurs forces et faiblesses, surtout en termes de sécurité, est essentiel.

Ce jeu de données aide à faciliter des évaluations critiques du code généré automatiquement tout en soutenant des recherches supplémentaires dans les pratiques de génération de code sécurisées. Les utilisateurs peuvent tirer parti de LLMSecEval, ainsi que d'outils comme CodeQL, pour s'assurer que le code produit est non seulement fonctionnel mais aussi sécurisé. Avec des plans pour des expansions et des améliorations futures, LLMSecEval vise à contribuer de manière significative au domaine de la sécurité des logiciels.

Source originale

Titre: LLMSecEval: A Dataset of Natural Language Prompts for Security Evaluations

Résumé: Large Language Models (LLMs) like Codex are powerful tools for performing code completion and code generation tasks as they are trained on billions of lines of code from publicly available sources. Moreover, these models are capable of generating code snippets from Natural Language (NL) descriptions by learning languages and programming practices from public GitHub repositories. Although LLMs promise an effortless NL-driven deployment of software applications, the security of the code they generate has not been extensively investigated nor documented. In this work, we present LLMSecEval, a dataset containing 150 NL prompts that can be leveraged for assessing the security performance of such models. Such prompts are NL descriptions of code snippets prone to various security vulnerabilities listed in MITRE's Top 25 Common Weakness Enumeration (CWE) ranking. Each prompt in our dataset comes with a secure implementation example to facilitate comparative evaluations against code produced by LLMs. As a practical application, we show how LLMSecEval can be used for evaluating the security of snippets automatically generated from NL descriptions.

Auteurs: Catherine Tony, Markus Mutas, Nicolás E. Díaz Ferreyra, Riccardo Scandariato

Dernière mise à jour: 2023-03-16 00:00:00

Langue: English

Source URL: https://arxiv.org/abs/2303.09384

Source PDF: https://arxiv.org/pdf/2303.09384

Licence: https://creativecommons.org/licenses/by/4.0/

Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.

Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.

Plus d'auteurs

Articles similaires