Simple Science

Hochmoderne Wissenschaft einfach erklärt

# Computerwissenschaften# Software-Entwicklung# Informationsbeschaffung# Maschinelles Lernen

Die Sicherheit von Code aus LLMs bewerten

Die Sicherheit von Code, der von grossen Sprachmodellen generiert wird, mit LLMSecEval bewerten.

― 5 min Lesedauer


Einschätzung derEinschätzung derCode-Sicherheit von LLMsCode bewerten.Sicherheitslücken im AI-generierten
Inhaltsverzeichnis

Grosse Sprachmodelle (LLMs) wie Codex werden immer häufiger genutzt, um bei der Erstellung und Vervollständigung von Code zu helfen. Diese Modelle haben aus einer riesigen Menge an Code gelernt, die in öffentlichen Quellen wie GitHub zu finden ist. Auch wenn diese Tools das Programmieren einfacher machen können, gibt es Bedenken hinsichtlich der Sicherheit des Codes, den sie produzieren. In diesem Artikel wird LLMSecEval besprochen, ein neues Dataset, das entwickelt wurde, um die Sicherheit von von LLMs generiertem Code zu bewerten.

Der Bedarf an einem Dataset

Da LLMs bei Programmieraufgaben immer beliebter werden, ist es wichtig, die Sicherheit des Codes, den sie erzeugen, zu bewerten. Viele Entwickler nutzen diese Modelle, um echte Anwendungen zu erstellen. Der generierte Code könnte jedoch Sicherheitslücken aufweisen, weil die Trainingsdaten oft unsicheren Code enthalten. Daher ist eine zuverlässige Möglichkeit nötig, die Sicherheit dieses Codes zu testen.

Was ist LLMSecEval?

LLMSecEval ist ein Dataset, das 150 Texteingaben in natürlicher Sprache (NL) enthält. Diese Eingaben können genutzt werden, um zu bewerten, wie gut LLMs sicheren Code erstellen. Jede Eingabe beschreibt eine Programmieraufgabe, die anfällig für Sicherheitsprobleme ist, basierend auf einer Liste gängiger Schwächen. Zu jeder Eingabe gibt es auch ein sicheres Codebeispiel zum Vergleich. So können Entwickler und Forscher sehen, wie der von LLMs generierte Code im Vergleich zu sicheren Alternativen abschneidet.

Erstellung des Datasets

Für die Erstellung des Datasets hat das Team zuerst die gängigen Sicherheitsanfälligkeiten untersucht, die von MITRE identifiziert wurden, das bedeutende Softwareprobleme auflistet. Sie konzentrierten sich auf 18 Schwächen aus den 25 schwerwiegendsten. Das Team schrieb Eingaben, die zu Code mit potenziellen Schwachstellen führen könnten. Zum Beispiel könnte eine Eingabe nach Python-Code für eine Registrierungsseite fragen, die Benutzereingaben nicht richtig überprüft.

Anstatt diese Eingaben von Grund auf neu zu schreiben, nutzten sie Codex, um Beschreibungen basierend auf bestehenden Code-Snippets zu generieren, die Probleme enthielten. Dieser Ansatz half, relevante und nützliche Eingaben zu erstellen und stellte sicher, dass sie auf echten Codebeispielen basierten.

Qualität der Eingaben

Das Team bewertete die Qualität der 150 Eingaben anhand mehrerer Kriterien. Sie schauten sich Faktoren wie die Natürlichkeit der Sprache und die Verständlichkeit an. Die meisten Eingaben schnitten gut ab, was darauf hindeutet, dass sie klar und informativ waren. Einige Eingaben benötigten aufgrund unnötiger Details oder komplexer Formulierungen etwas Verbesserung. Insgesamt wurde die Qualität der Eingaben jedoch als hoch eingestuft.

Nutzung von LLMSecEval

Das Hauptziel von LLMSecEval ist es, Forschern und Entwicklern zu helfen, die Sicherheit des von LLMs generierten Codes zu überprüfen. Das Dataset kann genutzt werden, um Code basierend auf den bereitgestellten Eingaben zu generieren und diesen Code dann auf Sicherheitsprobleme zu analysieren. Dies geschieht über ein Tool, das es Nutzern erlaubt, ein LLM auszuwählen, die NL-Eingaben einzugeben und den Code-Output zu erhalten.

Um nach Schwachstellen zu suchen, wird der generierte Code mit CodeQL analysiert, einem Tool, das für die automatisierte Codeanalyse entwickelt wurde. Dieses Tool kann verschiedene Sicherheitsprobleme anhand einer vordefinierten Abfragesammlung identifizieren. Durch die Nutzung von LLMSecEval zusammen mit CodeQL können Nutzer feststellen, ob der produzierte Code sicher ist oder ob er Sicherheitsanfälligkeiten einführt.

Verwandte Arbeiten

Bevor LLMSecEval erstellt wurde, gab es andere Datasets, die untersucht haben, wie gut der von LLMs produzierte Code war. Beispielsweise hatte Codex ein Dataset namens HumanEval, das sich darauf konzentrierte, ob der generierte Code korrekt funktionierte, aber keine Sicherheitsbedenken ansprach. Ähnlich haben andere Forschungsschwerpunkte untersucht, wie gut LLMs Code vervollständigen oder Bugs beheben können, jedoch lag der Fokus nicht auf der Sicherheit.

LLMSecEval schliesst diese Lücke, indem es ein Dataset bietet, das speziell darauf abzielt, die Sicherheit von Code zu bewerten, der von diesen Modellen generiert wird. Durch die Konzentration auf gängige Schwachstellen legt LLMSecEval eine Grundlage für zukünftige Studien in diesem Bereich.

Einschränkungen und zukünftige Pläne

Die aktuelle Version von LLMSecEval deckt nur 18 der 25 wichtigsten Sicherheitsanfälligkeiten ab. In Zukunft gibt es Pläne, dieses Dataset zu erweitern, indem weitere Schwächen einbezogen werden und es jährlich aktualisiert wird, um neue Erkenntnisse zu berücksichtigen. Dies beinhaltet die Nutzung von Codebeispielen aus verschiedenen Schwächen, um neue Eingaben zu erstellen.

Eine weitere Einschränkung ist der sprachunabhängige Ansatz der Eingaben. Einige Schwächen gelten nur für spezifische Programmiersprachen. Obwohl das Ziel war, allgemeine Eingaben zu erstellen, die über alle Sprachen anwendbar sind, funktioniert das möglicherweise nicht für alle Schwächen. Zukünftige Bemühungen könnten sich darauf konzentrieren, spielspezifische Eingaben zu erstellen, um den Nutzen des Datasets zu verbessern.

Fazit

LLMSecEval ist eine wertvolle Ressource zur Bewertung der Sicherheit von Code, der von LLMs generiert wird. Durch die Bereitstellung eines Sets von 150 NL-Eingaben, die auf gängigen Schwachstellen basieren, bietet es eine einfache Möglichkeit, die Sicherheitsimplikationen der Nutzung von LLMs in der Softwareentwicklung zu bewerten. Da diese Modelle zunehmend verbreitet werden, ist es wichtig, ihre Stärken und Schwächen, insbesondere in Bezug auf die Sicherheit, zu verstehen.

Dieses Dataset trägt dazu bei, kritische Bewertungen automatisch generierten Codes zu erleichtern, während es weitere Forschungen zu sicheren Code-Generierungspraktiken unterstützt. Nutzer können LLMSecEval zusammen mit Tools wie CodeQL nutzen, um sicherzustellen, dass der produzierte Code nicht nur funktionsfähig, sondern auch sicher ist. Mit Plänen für zukünftige Erweiterungen und Verbesserungen will LLMSecEval einen bedeutenden Beitrag im Bereich der Software-Sicherheit leisten.

Originalquelle

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

Zusammenfassung: 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.

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

Letzte Aktualisierung: 2023-03-16 00:00:00

Sprache: English

Quell-URL: https://arxiv.org/abs/2303.09384

Quell-PDF: https://arxiv.org/pdf/2303.09384

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

Änderungen: Diese Zusammenfassung wurde mit Unterstützung von AI erstellt und kann Ungenauigkeiten enthalten. Genaue Informationen entnehmen Sie bitte den hier verlinkten Originaldokumenten.

Vielen Dank an arxiv für die Nutzung seiner Open-Access-Interoperabilität.

Mehr von den Autoren

Ähnliche Artikel