← Neueste Arbeiten
💻 computer science

Bridging Code Property Graphs and Language Models for Program Analysis

Die Arbeit stellt „codebadger" vor, einen Open-Source-Server, der Joerns Code Property Graph mit Large Language Models integriert, um durch hochlevelige Analysewerkzeuge wie Datenfluss- und Taint-Analyse die Erkennung und Behebung von Sicherheitslücken in großen Codebasen zu ermöglichen.

Ursprüngliche Autoren: Ahmed Lekssays

Veröffentlicht 2026-03-27
📖 4 Min. Lesezeit☕ Kaffeepausen-Lektüre

Ursprüngliche Autoren: Ahmed Lekssays

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 sind ein Detektiv, der einen riesigen, verwinkelten Stadtplan untersuchen muss, um einen versteckten Einbrecher zu finden. Die Stadt ist ein Computerprogramm mit tausenden von Straßen (Funktionen) und Häusern (Dateien).

Das Problem: Ihr Gehirn (das Large Language Model oder LLM) ist zwar sehr schlau, hat aber ein Gedächtnis, das nur wenige Seiten gleichzeitig halten kann. Wenn Sie versuchen, den gesamten Stadtplan auf einmal auf einen Tisch zu legen, platzt Ihr Kopf (die Token-Grenze). Wenn Sie nur ein einzelnes Haus ansehen, verpassen Sie den Einbrecher, der von Haus A über die Kanalisation nach Haus B und dann in den Keller von Haus C flieht.

Hier kommt codebadger ins Spiel.

Was ist codebadger?

Stellen Sie sich codebadger als einen super-intelligenten Assistenten vor, der mit einem magischen Röntgenblick ausgestattet ist. Er verbindet Ihr schlaueres Gehirn (das LLM) mit einer riesigen Datenbank, die den gesamten Stadtplan nicht als Text, sondern als 3D-Netzwerk (einen "Code Property Graph") versteht.

Anstatt dass Sie selbst mühsam jede Straße ablaufen oder komplizierte Fragen an die Datenbank stellen müssen, gibt Ihnen codebadger einfache Werkzeuge an die Hand:

  1. Der "Suchscheinwerfer" (Taint Tracking):
    Statt das ganze Programm zu lesen, sagen Sie: "Zeig mir, woher der verdächtige Datenstrom kommt!" Der Assistent leuchtet genau auf die Stellen, an denen unsichere Daten (wie Benutzereingaben) in das System fließen und verfolgt sie bis zu dem Punkt, an dem sie Schaden anrichten könnten. Es ist wie ein Wasserrohr-System: Der Assistent zeigt Ihnen genau, wo das Wasser (die Daten) durch ein undichtes Rohr (die Sicherheitslücke) austritt.

  2. Der "Rückwärtsgang" (Program Slicing):
    Wenn Sie eine verdächtige Stelle finden, sagen Sie: "Was hat dazu geführt, dass hier passiert?" Der Assistent schneidet alles Unnötige weg und zeigt Ihnen nur die wenigen Zeilen Code, die für dieses eine Problem relevant sind. Er filtert den Lärm heraus, genau wie ein Koch, der nur die Zutaten nimmt, die für das Gericht wirklich wichtig sind, und den Rest wegwirft.

  3. Der "Kartenleser" (Call Graph Navigation):
    Er zeigt Ihnen, welche Funktionen welche anderen anrufen. Es ist wie ein Telefonbuch, das Ihnen sofort sagt: "Wenn Frau Müller anruft, ruft sie Herrn Schmidt an, der dann den Chef anruft." So verstehen Sie die Zusammenhänge, ohne jede einzelne Telefonnummer durchzugehen.

Was hat das in der Praxis gebracht?

Der Autor des Papiers hat diesen Assistenten getestet, und die Ergebnisse waren beeindruckend:

  • Der große Überblick: In einer riesigen Bibliothek (GGML) mit 8.000 Methoden hat der Assistent dem LLM geholfen, Sicherheitslücken zu finden, ohne dass das LLM jemals alle Dateien einzeln lesen musste. Es war, als würde man einen ganzen Wald auf einen Blick scannen, anstatt jeden Baum einzeln zu untersuchen.
  • Der neue Einbrecher: Der Assistent half dem LLM, eine bisher unbekannte Sicherheitslücke in einer Bildverarbeitungs-Bibliothek (libtiff) zu finden. Das LLM konnte nachvollziehen, wie ein Angreifer durch eine spezielle Eingabe den Speicher überfluten konnte, und sogar einen Beweis (Exploit) dafür erstellen.
  • Die schnelle Reparatur: Bei einem bekannten Fehler in einer XML-Bibliothek (libxml2) schlug das LLM mit Hilfe des Assistenten beim allerersten Versuch die perfekte Reparatur vor. Es verstand den Fehler so gut, dass sein Vorschlag fast identisch mit dem war, den die ursprünglichen Entwickler später auch machten.

Warum ist das wichtig?

Früher mussten Computerprogramme entweder sehr klein sein, damit das LLM sie verstand, oder das LLM musste raten, was in den großen Programmen passiert. codebadger ändert das. Es erlaubt dem LLM, wie ein erfahrener Sicherheitsanalyst zu denken: Es navigiert intelligent durch den Code, sucht gezielt nach Mustern und versteht die Zusammenhänge zwischen verschiedenen Teilen des Programms.

Zusammenfassend:
Statt dass das LLM versucht, den Ozean mit einem Eimer zu leeren (was unmöglich ist), gibt ihm codebadger einen Sauger und eine Karte. Es macht aus einem schlauen, aber kurzzeitigen Gedächtnis einen mächtigen Sicherheitsdetektiv, der riesige Code-Welten verstehen und schützen kann.

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 →