← Neueste Arbeiten
💻 computer science

GapForge: Directed Compiler Fuzzing via Coverage-Gap Analysis

GapForge ist eine gezielte, auf LLMs basierende Compiler-Fuzzing-Technik, die systematisch Lücken in der Long-Tail-Abdeckung identifiziert und schließt, indem sie unterrepräsentierte Dateien priorisiert, durch Pfaddifferenzanalyse feingranulare Trigger-Anforderungen ableitet und iterativ Prompts synthetisiert, wodurch sie bestehende Methoden hinsichtlich der Abdeckung und Fehlersuche bei GCC und LLVM signifikant übertrifft.

Ursprüngliche Autoren: Mingxuan Zhu, Qingyuan Liang, Junjie Chen, Zhihong Xue, Dan Hao

Veröffentlicht 2026-07-20
📖 4 Min. Lesezeit☕ Kaffeepausen-Lektüre

Ursprüngliche Autoren: Mingxuan Zhu, Qingyuan Liang, Junjie Chen, Zhihong Xue, Dan Hao

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 die Software, die Ihr Telefon, Ihr Auto oder das Internet steuert, als eine riesige, unsichtbare Fabrik vor. In dieser Fabrik arbeiten Millionen winziger Arbeiter (Codezeilen), die Ihre Anweisungen auf hoher Ebene entgegennehmen und sie in die Maschinensprache umwandeln, die der Computer versteht. Diese Fabrik nennt man einen Compiler. Wenn auch nur ein einziger Arbeiter faul ist, verwirrt ist oder gegen eine Regel verstößt, kann die gesamte Fabrik Ausschuss produzieren – Programme, die abstürzen, einfrieren oder heimlich etwas Falsches tun. Da diese Fabriken so groß und komplex sind, ist es unglaublich schwierig, sicherzustellen, dass jeder einzelne Arbeiter überwacht und getestet wird.

Hier kommt die Welt des Software-Testens ins Spiel. Betrachten Sie dies als das Entsenden eines Teams von Inspektoren, um zu sehen, ob die Fabrik richtig arbeitet. Jahrelang haben Inspektoren zwei Haupttricks angewandt: Entweder sie werfen mit wahllosen Dartpfeilen auf die Fabrik (Random Testing) oder sie versuchen, Dinge zu manipulieren, indem sie bestehende Anweisungen verändern (Mutation Testing). Aber hier liegt das Problem: Die Inspektoren treffen immer wieder dieselben leicht erreichbaren Ecken der Fabrik, während die staubigen, dunklen, schwer zugänglichen Hinterzimmer völlig ignoriert werden. In diesen „blinden Flecken“ verbergen sich die gefährlichsten Bugs und warten darauf, Ärger zu verursachen. Vor kurzem begannen Wissenschaftler, Large Language Models (LLMs) einzusetzen – superintelligente KI, die Code schreiben kann –, um bei den Inspektionen zu helfen. Doch selbst diese KI-Helfer wandern oft ziellos umher, da sie nicht genau wissen, welche dunklen Ecken am meisten Licht benötigen.

Hier kommt eine neue Technik namens GapForge ins Spiel, die wie ein Detektiv mit einer magischen Landkarte agiert. Anstatt einfach nur Dartpfeile zu werfen oder zu raten, betrachtet GapForge eine Karte der Fabrik, um genau zu sehen, welche Räume noch nie besucht wurden. Dann nutzt sie ihr KI-Gehirn, um herauszufinden, welches spezifische „Geheimnis“ (eine bestimmte Art von Code und eine spezielle Einstellung) nötig ist, um diese verschlossenen Türen zu öffnen. Die Forscher testeten dies an zwei der weltweit größten Compiler-Fabriken, GCC und LLVM. Sie fanden heraus, dass GapForge ein Meister darin ist, diese verborgenen Räume zu finden. In nur 72 Stunden deckte es 68,13 % des Kern-GCC-Codes und 69,11 % des LLVM-Codes ab. Das mag vielleicht nicht nach 100 % klingen, aber denken Sie daran: Die bisher beste KI-Methode schaffte nur etwa 64,62 % und 65,02 %. GapForge hat die Zahlen nicht nur leicht nach oben korrigiert; es fand 24.736 weitere Zeilen Code in GCC und 19.798 weitere in LLVM, die die anderen Methoden komplett übersehen hatten.

Wie macht es das? Betrachten Sie GapForge als einen dreistufigen Prozess. Zuerst scannt es die Fabrikkarte und wählt den „schmutzigsten“ Raum aus – denjenigen mit dem meisten ungetesteten Code. Zweitens zoomt es, anstatt nur den ganzen Raum zu betrachten, auf den spezifischen staubigen Punkt und fragt die KI: „Welche Art von Schlüssel brauchen wir, um diesen zu öffnen?“ Die KI analysiert die umliegenden sauberen Bereiche, um die exakte Kombination aus Codestrukturen und Fabrikeinstellungen (wie das Umlegen eines bestimmten Schalters) zu erraten, die erforderlich sind, um den Ort zu erreichen. Drittens: Wenn die KI einen Schlüssel ausprobiert und dieser nicht funktioniert, merkt sich GapForge dieses Scheitern. Es sagt der KI: „Versuche das nicht noch einmal; versuche etwas anderes“, und schickt sie mit einem besseren Plan zurück. Dieser Zyklus wiederholt sich, langsam aber sicher, bis jede dunkle Ecke beleuchtet ist.

Die Ergebnisse waren beeindruckend. Nicht nur deckte GapForge mehr Gelände ab als acht andere erstklassige Techniken, sondern es fand auch 12 reale Bugs, die im Schatten verborgen lagen. Dazu gehörten 8 Abstürze (bei denen der Compiler einfach aufgab und stoppte) und 4 Fehlkompilierungen (bei denen der Compiler heimlich ein fehlerhaftes Programm baute, das perfekt aussah). Die Forscher zeigten, dass jeder Teil des Prozesses von GapForge wichtig war: Wenn sie das „Kartenlesen“, das „Schlüsselraten“ oder das „Lernen aus Fehlern“ entfernt hätten, wären die Ergebnisse signifikant schlechter ausgefallen. Während andere Methoden damit beschäftigt waren, tausende von Testprogrammen zu generieren, erzeugte GapForge weniger, aber dafür viel intelligentere Programme – was beweist, dass in der Welt des Software-Testens Qualität und Richtung oft mehr zählen als reine Quantität.

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 →