← Neueste Arbeiten
🤖 AI

CNnotator: LLM-Guided Memory Safety Annotation Synthesis

Das Paper stellt CNnotator vor, ein Werkzeug, das große Sprachmodelle nutzt, um Speichersicherheits-Annotationen (CN-Spezifikationen) für veralteten C-Code automatisch zu synthetisieren und zu verifizieren, wobei es demonstriert, dass aktuelle KI-Modelle hohe Erfolgsraten bei der Identifizierung von Speichernutzungsmustern erzielen können, um die Migration zu sichereren Sprachen zu erleichtern.

Ursprüngliche Autoren: Twain Byrnes, Mike Dodds

Veröffentlicht 2026-06-23
📖 4 Min. Lesezeit☕ Kaffeepausen-Lektüre

Ursprüngliche Autoren: Twain Byrnes, Mike Dodds

Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen

Stellen Sie sich vor, Sie besitzen ein altes, handgeschriebenes Rezeptbuch, das in einer sehr gefährlichen Küchensprache namens C verfasst wurde. In dieser Sprache muss der Koch (der Programmierer) jede einzelne Zutat manuell verwalten. Wenn er vergisst, einen Deckel auf einen Topf zu setzen, oder wenn er versucht, einen Löffel zu benutzen, der bereits in den Müll geworfen wurde, kann die ganze Küche in Brand geraten. Dies werden als Speichersicherheitsfehler bezeichnet, und sie verursachen eine enorme Anzahl von Sicherheitslücken in der Software, die wir jeden Tag verwenden.

Moderne Sprachen wie Rust sind wie eine Küche mit intelligenten Geräten: Sie sperren den Ofen automatisch, wenn man versucht, ihn zu öffnen, während er noch heiß ist, oder sie verhindern, dass man nach einem Löffel greift, der gar nicht existiert. Aber wir können unsere alten Rezeptbücher nicht einfach wegwerfen. Wir müssen genau herausfinden, wie die alten Köche ihre Zutaten verwendet haben, damit wir entweder die Rezepte korrigieren oder sie in die neue, sichere Sprache übersetzen können.

Das Problem ist, dass in den alten Büchern die Regeln für die Verwendung der Zutaten nicht aufgeschrieben sind. Sie sind in den unordentlichen Schritten verborgen. Diese Regeln herauszufinden, ist, als würde man versuchen, einen geheimen Code zu erraten, indem man einfach nur beim Kochen zusieht. Das ist mühsam und man macht leicht Fehler.

Das neue Werkzeug: CNnotator

Die Autoren haben ein Werkzeug namens CNnotator entwickelt, um bei dieser Aufgabe zu helfen. Stellen Sie sich dies als ein Team aus zwei Personen vor:

  1. Der ratende Koch (die KI): Dies ist ein Large Language Model (LLM). Es ist sehr gut darin, ein unordentliches Rezept zu betrachten und zu vermuten: „Oh, ich wette, dieser Koch behält diesen Löffel bis ganz zum Ende.“ Es versucht, die verborgenen Regeln als einen formalen Vertrag aufzuschreiben.
  2. Der strenge Inspektor (das formale Werkzeug): Dies ist ein Computerprogramm namens CN. Es vertraut dem ratenden Koch nicht. Seine einzige Aufgabe ist es, die Vermutungen zu überprüfen. Es nimmt die aufgeschriebenen Regeln und lässt das Rezept 100 Mal mit verschiedenen zufälligen Zutaten durchlaufen, um zu sehen, ob die Küche sicher bleibt.

Wie es funktioniert (Die „Raten-und-Prüfen“-Schleife)

Das Werkzeug arbeitet in einem einfachen Zyklus:

  1. Ein Rezept auswählen: Das Werkzeug betrachtet eine Funktion (einen spezifischen Kochschritt) im C-Code.
  2. Die KI fragen: „Hey KI, schreibe die Regeln auf, wie dieser Schritt mit den Zutaten umgeht.“
  3. Die KI rät: Die KI schreibt einen „Vertrag“ (einen Satz von Regeln), der beschreibt, wem welche Zutat gehört und wann es sicher ist, sie zu verwenden.
  4. Der Inspektor testet: Das Werkzeug führt den Code 100 Mal basierend auf diesen Regeln aus.
    • Wenn es besteht: Großartig! Die Regeln sind wahrscheinlich korrekt. Weiter zum nächsten Rezept.
    • Wenn es fehlschlägt: Der Inspektor sagt: „Du hast gesagt, der Löffel sei sicher, aber er ist explodiert!“ Das Werkzeug sendet diesen Fehler zurück an die KI: „Versuche es erneut, aber korrigiere diesen spezifischen Fehler.“
  5. Wiederholen: Die KI versucht es erneut, bis zu sechsmal, bis sie es richtig hat oder aufgibt.

Die Ergebnisse

Die Forscher haben dies an 31 verschiedenen „Rezepten“ (C-Funktionen) getestet, die von einfachen Aufgaben bis hin zu etwas komplexeren Aufgaben reichten. Sie haben es mit fünf verschiedenen KI-Modellen ausprobiert.

  • Der Star-Performer: Das KI-Modell namens o3 war das beste. Es brachte die Regeln bei 90 % der Rezepte bereits beim ersten Versuch korrekt auf den Punkt. Bis zu dem Zeitpunkt, als es sich erlaubte, es noch ein paar Mal zu versuchen, erreichte es eine Erfolgsquote von 97 %.
  • Der Chatbot: Selbst das ältere, Standard-Chat-Modell (GPT-4o) machte einen ordentlichen Job und brachte es in etwa 65 % der Fälle beim ersten Versuch richtig hin.
  • Das Sicherheitsnetz: Das Werkzeug war auch klug genug, um „kaputte“ Rezepte zu erkennen. Wenn der Code einen garantierten Fehler enthielt (wie etwa den Versuch, einen Löffel zu benutzen, der bereits weggeworfen wurde), sagte die KI: „Ich kann keine sichere Regel für dies schreiben, weil das Rezept selbst kaputt ist“, und stoppte.

Warum das wichtig ist

Das Paper argumentt, dass wir nicht darauf vertrauen müssen, dass die KI perfekt ist. Wir müssen sie nur als einen guten Ratenden betrachten. Da wir einen strengen Inspektor (das formale Werkzeug) haben, der jeden Tipp überprüft, können wir dem Endergebnis vertrauen, selbst wenn die KI auf dem Weg Fehler macht.

Dieser Ansatz legt nahe, dass wir nun KI nutzen können, um uns beim Verständnis und der Modernisierung von altem, gefährlichem C-Code zu helfen, wodurch dieser sicherer wird, ohne dass wir jeden einzelnen Codezeile manuell von Hand umschreiben müssen. Es ist wie ein superschneller Lehrling, der die Sicherheitsregeln entwirft, während ein erfahrener Inspektor sicherstellt, dass das Gebäude nicht zusammenbricht.

Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?

Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.

Digest testen →