Core Concepts
KI-generierte C-Programme enthalten oft Sicherheitslücken und Verletzbarkeiten, die durch formale Verifikation identifiziert werden können.
Abstract
Dieser Artikel präsentiert den FormAI-Datensatz, eine große Sammlung von 112.000 KI-generierten, kompilierbaren und unabhängigen C-Programmen mit Klassifizierung von Sicherheitslücken. Die Autoren entwickelten eine dynamische Zero-Shot-Prompt-Technik, um eine vielfältige Menge an Programmen unter Verwendung von Large Language Models (LLMs) zu erzeugen. Der Datensatz wurde mit GPT-3.5-turbo erstellt und umfasst Programme mit unterschiedlichen Komplexitätsgraden. Einige Programme bearbeiten komplexe Aufgaben wie Netzwerkverwaltung, Brettspiele oder Verschlüsselung, während andere einfachere Aufgaben wie Zeichenkettenmanipulation behandeln. Jedes Programm ist mit den in dem Quellcode gefundenen Sicherheitslücken gekennzeichnet, die Art, Zeilennummer und den Namen der verwundbaren Funktion angeben. Dies wird durch den Einsatz einer formalen Verifikationsmethode unter Verwendung des Efficient SMT-based Bounded Model Checkers (ESBMC) erreicht, der Modellprüfung, abstrakte Interpretation, Constraint-Programmierung und Satisfiability Modulo Theorien nutzt, um über Sicherheitseigenschaften in Programmen zu argumentieren. Dieser Ansatz erkennt Sicherheitslücken definitiv und bietet ein formales Modell in Form eines Gegenbeispiels, wodurch die Möglichkeit von Falschpositivmeldungen ausgeschlossen wird. Diese Eigenschaft des Datensatzes macht ihn für die Bewertung der Effektivität verschiedener statischer und dynamischer Analysewerkzeuge geeignet. Darüber hinaus haben wir die identifizierten Sicherheitslücken mit den entsprechenden Common Weakness Enumeration (CWE)-Nummern in Verbindung gebracht. Wir stellen den Quellcode für die 112.000 Programme sowie eine umfassende Liste der in jedem Programm erkannten Sicherheitslücken zur Verfügung, was den Datensatz ideal für das Training von LLMs und Maschinenlernalgorithmen macht.
Stats
Die Analyse des ESBMC-Moduls ergab, dass 54% der 106.139 untersuchten Programme Sicherheitslücken aufwiesen.
Insgesamt wurden 197.800 Sicherheitslücken in den Programmen erkannt.
Quotes
"Unser primäres Ziel ist es, zu erforschen, wie kompetent LLMs sicheren Code für verschiedene Codingziele ohne nachfolgende Anpassungen oder menschliches Eingreifen erstellen können."
"Wir wollen herausfinden, welche typischen Codingfehler LLMs tendenziell einführen, um ihr Verhalten besser zu verstehen."