Simple Science

Hochmoderne Wissenschaft einfach erklärt

# Computerwissenschaften# Kryptographie und Sicherheit# Künstliche Intelligenz# Programmiersprachen

Untersuchung von Sicherheitslücken im von KI-generierten Code

Eine Studie zeigt Schwachstellen im Code, der von grossen Sprachmodellen erzeugt wurde.

― 7 min Lesedauer


AI-CodeAI-CodeSicherheitsrisikenSchwachstellen in Software einführen.KI-Tools könnten bedeutende
Inhaltsverzeichnis

Grosse Sprachmodelle (LLMs) verändern, wie wir Softwareentwicklung und Codierung angehen. Entwickler verlassen sich jetzt auf verschiedene Tools, um Code zu erstellen und abzuschliessen. Da diese KI-gesteuerten Tools an Popularität gewinnen, ist es wichtig zu verstehen, dass sie potenziell Sicherheitslücken im generierten Code einführen können. Frühere Studien haben gezeigt, dass LLMs Code produzieren können, der falsch oder sogar anfällig für Angriffe ist. Zum Beispiel haben Software-Ingenieure, die KI-Tools verwenden, festgestellt, dass sie mehr Fehler in ihrem Code machen, was zu potenziellen Sicherheitsproblemen führt.

Forscher haben begonnen, die Ausgaben dieser Modelle genauer zu analysieren, um Schwachstellen im generierten Code zu identifizieren. Die Frage stellt sich: Können wir diesen Modellen vertrauen, dass sie sicheren Code für reale Projekte erstellen?

Um diese Frage zu klären, wurde ein Datensatz namens FormAI erstellt, der eine grosse Sammlung von KI-generierten C-Programmen enthielt. Diese Studie baut auf dieser Arbeit auf, indem sie eine neue Version des Datensatzes, FormAI-v2, einführt. Dieser neue Datensatz enthält noch mehr kompilierbare C-Programme, die von verschiedenen fortgeschrittenen LLMs generiert wurden. Das Ziel ist es, die Sicherheit des produzierten Codes zu analysieren und zu verstehen, wie oft diese Modelle Schwachstellen erzeugen.

FormAI-v2 Datensatz

Der FormAI-v2 Datensatz umfasst rund 265.000 kompilierbare C-Programme, die mit verschiedenen LLMs erstellt wurden. Dazu gehören leistungsstarke Modelle wie GPT-4, Googles Gemini-pro und TIIs Falcon. Jedes Programm in diesem Datensatz wurde gründlich auf Schwachstellen mit einem formellen Verifizierungstool namens ESBMC überprüft.

Dieser rigorose Verifizierungsprozess hilft sicherzustellen, dass die gemeldete Anzahl der Schwachstellen genau ist. In dieser Studie haben wir festgestellt, dass mindestens 63,47 % der generierten Programme Schwachstellen enthalten. Die Unterschiede in den Codierungsfehlern zwischen den Modellen sind subtil, wobei alle Modelle ähnliche Arten von Fehlern aufweisen.

Dieser Datensatz stellt einen bedeutenden Schritt dar, um ein besseres Verständnis dafür zu bekommen, wie effektiv diese Modelle bei der Erstellung von sicherem Code sind. Modelle können Code erzeugen, der korrekt aussieht, aber dennoch Sicherheitsrisiken einführen kann. Daher sind sorgfältige Validierungen und Risikobewertungen notwendig, wenn man LLM-generierten Code für den Produktionsgebrauch in Betracht zieht.

Grosse Sprachmodelle und Software-Sicherheit

LLMs werden zunehmend für Codieraufgaben eingesetzt und helfen Entwicklern, einfache Programme zu erstellen und verschiedene Funktionen zu handhaben. Obwohl LLMs Fähigkeiten bei der Codeerstellung zeigen, können sie auch fehlerhaften oder unsicheren Code generieren. Die Forschung zu diesem Thema wächst, da immer mehr Software-Ingenieure die potenziellen Risiken, die mit der Verwendung von KI-Tools in der Programmierung verbunden sind, erkennen.

Eine Studie hat gezeigt, dass LLMs möglicherweise nicht nur syntaktisch korrekten Code erzeugen, sondern auch neue Schwachstellen in die Systeme einführen, an denen sie arbeiten. Angesichts der Tatsache, dass viele dieser Modelle auf öffentlich verfügbaren Daten trainiert werden, besteht das Risiko, dass sie anfällige Codiermuster, die online gefunden werden, replizieren.

Das wirft eine wichtige Frage auf: Wie sicher ist es, diese Modelle für tatsächliche Programmieraufgaben ohne Sicherheitsvorkehrungen zu nutzen?

Frühere Forschung

Der ursprüngliche FormAI-Datensatz wurde erstellt, um KI-generierten C-Code zu untersuchen und die gefundenen Schwachstellen zu kategorisieren. Frühere Arbeiten konzentrierten sich hauptsächlich auf ein einzelnes Modell (GPT-3.5), ohne es mit anderen fortgeschrittenen Modellen zu vergleichen. Diese neue Studie versucht, diese Lücken zu schliessen, indem sie acht verschiedene LLMs analysiert.

Darüber hinaus haben die ursprünglichen Forschungen möglicherweise einige Schwachstellen aufgrund der Einschränkungen früherer Verifizierungsmethoden übersehen. Durch die Anwendung eines gründlicheren unbeschränkten Verifizierungsansatzes können wir die im Code vorhandenen Schwachstellen besser bewerten.

Die Komplexität des generierten Codes wurde in der ursprünglichen Studie ebenfalls nicht analysiert. Wir berechnen jetzt ein Mass, das als Zyklomatische Komplexität bekannt ist, um die inhärente Komplexität des von jedem LLM erzeugten Codes zu verstehen.

Forschungsfragen

Diese Studie behandelt eine Reihe von Forschungsfragen, die darauf abzielen, die Sicherheitsmerkmale des von fortgeschrittenen LLMs generierten Codes zu bewerten. Diese Fragen konzentrieren sich darauf, den generierten Code verschiedener Modelle zu vergleichen, zu verstehen, welche Modelle den anfälligsten Code erzeugen, und die Eigenschaften der generierten Programme zu analysieren.

Datensatz Erstellung und Methodik

Der FormAI-v2 Datensatz besteht aus zwei Hauptteilen: den KI-generierten C-Programmen und ihren Schwachstellenklassifikationen. Der Generierungsprozess umfasste die Erstellung einer Mischung von Programmen mit verschiedenen LLMs, um eine umfangreiche Sammlung zu gewährleisten.

Um eine vielfältige Auswahl an Ausgaben zu erzeugen, wurde eine dynamische Eingabeaufforderungsmethode verwendet. Durch Variation der Eingabeaufforderungen konnten wir eine reiche Vielfalt an Programmen generieren, die mehrere Codierungsszenarien abdecken. Jedes generierte Programm wurde dann auf Kompilierbarkeit überprüft, um sicherzustellen, dass es ohne Fehler ausgeführt werden konnte.

Für die Schwachstellenklassifikation verwendeten wir ESBMC, um jedes Codebeispiel zu überprüfen. Dieses leistungsstarke Tool erkennt nicht nur Schwachstellen, sondern minimiert auch Fehlalarme, sodass der Datensatz genaue Ergebnisse widerspiegelt.

Ergebnisse

Nach der Erstellung und Überprüfung der Programme fanden wir heraus, dass ein erheblicher Teil des Codes Schwachstellen enthielt. Der Verifizierungsprozess offenbarte eine breite Palette von Problemen, von Bufferüberläufen bis hin zu falscher Handhabung von Zeigern.

Die Ergebnisse zeigten, dass bestimmte Arten von Schwachstellen in verschiedenen Modellen verbreitet waren. Zum Beispiel wurden Bufferüberläufe häufig in Programmen identifiziert, die die scanf-Funktion verwenden, was häufige Fallstricke im Umgang mit Benutzereingaben hervorhebt.

Zyklomatische Komplexität

Die zyklomatische Komplexität ist ein Mass zur Bewertung der Komplexität des Codes basierend auf seiner Struktur. Diese Kennzahl kann anzeigen, wie schwierig ein Stück Code möglicherweise zu testen, zu warten oder zu beheben ist. Ein höherer Wert deutet normalerweise darauf hin, dass der Code komplizierter ist und mehr Herausforderungen hinsichtlich von Fehlern mit sich bringt.

In unserer Analyse berechneten wir die zyklomatische Komplexität für den generierten Code jedes Modells. Es wurde festgestellt, dass Modelle wie GPT-4 längere Programme erzeugten und dabei eine niedrigere zyklomatische Komplexität aufwiesen. Das deutet darauf hin, dass sie zwar komplexere Programme erstellen können, dies jedoch auf eine strukturierte und handhabbare Weise tun können.

Schwachstellenklassifikation

Jedes generierte Programm wurde entsprechend den von ESBMC identifizierten Schwachstellen klassifiziert. Die Klassifikation hilft zu verstehen, welche häufigen Arten von Schwachstellen zwischen verschiedenen Modellen auftreten. Die am häufigsten gefundenen Probleme waren:

  • Dereferenzierungsfehler: Oft verbunden mit fehlenden Zeigerüberprüfungen.
  • Bufferüberläufe: Häufig aufgrund unsachgemässer Handhabung der Eingabegrösse.
  • Arithmetische Überläufe: Häufig in Zusammenhang mit Operationen, die Wertgrenzen überschreiten.

Diese Ergebnisse unterstreichen die Bedeutung robuster Codierungspraktiken, insbesondere im Umgang mit Zeigern und Puffern.

Vergleich der Modelle

Wir verglichen die Leistung verschiedener LLMs bei der Erzeugung von sicherem Code. Der generierte Code jedes Modells wurde dem gleichen Verifizierungsprozess unterzogen. Die Ergebnisse zeigten, dass alle Modelle Schwachstellen produzierten, aber die Häufigkeit und die Arten variieren.

Obwohl einige Modelle eine leicht bessere Leistung zeigten, konnte keines als völlig sicher eingestuft werden. Das betont die Notwendigkeit effektiver Validierungsmethoden, wenn KI-generierter Code in kritischen Anwendungen verwendet wird.

Fazit

Der FormAI-v2 Datensatz bietet wertvolle Einblicke in die Fähigkeiten und Einschränkungen von grossen Sprachmodellen in der Programmierung. Während LLMs syntaktisch korrekten und manchmal kreativen Lösungen generieren können, stellen sie auch erhebliche Risiken in Bezug auf die Sicherheit von Software dar.

Die Ergebnisse zeigen, dass die Verwendung von LLM-generiertem Code in der Praxis zu erheblichen Schwachstellen führen kann, wenn diese nicht sorgfältig bewertet werden. Da KI-Tools immer mehr Bestandteil von Codierungspraktiken werden, ist es wichtig, weiterhin ihre Sicherheitsimplikationen zu erforschen und Rahmenbedingungen zu entwickeln, um eine sichere Nutzung zu gewährleisten.

Zukünftige Richtungen

Zukünftige Forschungen sollten sich darauf konzentrieren, den FormAI-Datensatz weiter auszubauen, indem mehr fortgeschrittene Modelle und eine grössere Stichprobengrösse für bessere Vergleiche einbezogen werden. Darüber hinaus könnte die Untersuchung, wie verschiedene Programmieraufgaben oder -stile Schwachmustern beeinflussen, umsetzbare Erkenntnisse liefern.

Das Verständnis der Gründe für erfolgreiche Verifizierungsergebnisse kann ebenfalls zu besseren Codierungspraktiken in KI-generierten Programmen führen. Letztendlich ist das Ziel, die Vorteile von KI in der Codierung zu nutzen und gleichzeitig Risiken zu minimieren. Die laufende Entwicklung von Tools zur Erkennung von Schwachstellen wird entscheidend sein, da die Abhängigkeit von KI in der Softwareentwicklung weiterhin wächst.

Originalquelle

Titel: Do Neutral Prompts Produce Insecure Code? FormAI-v2 Dataset: Labelling Vulnerabilities in Code Generated by Large Language Models

Zusammenfassung: This study provides a comparative analysis of state-of-the-art large language models (LLMs), analyzing how likely they generate vulnerabilities when writing simple C programs using a neutral zero-shot prompt. We address a significant gap in the literature concerning the security properties of code produced by these models without specific directives. N. Tihanyi et al. introduced the FormAI dataset at PROMISE '23, containing 112,000 GPT-3.5-generated C programs, with over 51.24% identified as vulnerable. We expand that work by introducing the FormAI-v2 dataset comprising 265,000 compilable C programs generated using various LLMs, including robust models such as Google's GEMINI-pro, OpenAI's GPT-4, and TII's 180 billion-parameter Falcon, to Meta's specialized 13 billion-parameter CodeLLama2 and various other compact models. Each program in the dataset is labelled based on the vulnerabilities detected in its source code through formal verification using the Efficient SMT-based Context-Bounded Model Checker (ESBMC). This technique eliminates false positives by delivering a counterexample and ensures the exclusion of false negatives by completing the verification process. Our study reveals that at least 63.47% of the generated programs are vulnerable. The differences between the models are minor, as they all display similar coding errors with slight variations. Our research highlights that while LLMs offer promising capabilities for code generation, deploying their output in a production environment requires risk assessment and validation.

Autoren: Norbert Tihanyi, Tamas Bisztray, Mohamed Amine Ferrag, Ridhi Jain, Lucas C. Cordeiro

Letzte Aktualisierung: 2024-04-28 00:00:00

Sprache: English

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

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

Lizenz: https://creativecommons.org/licenses/by-nc-sa/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