From Documentation to Zero-day Vulnerabilities: LLM-Driven Fuzzing of JavaScript Engines in PDF Readers
Dieses Paper stellt PDFuzzer vor, einen neuartigen, LLM-gesteuerten Fuzzer, der große Sprachmodelle nutzt, um API-Beziehungen zu inferieren und komplexe Aufrufabfolgen zu generieren, wodurch die Code-Abdeckung signifikant verbessert und im Vergleich zu bestehenden State-of-the-Art-Tools 31 Zero-Day-Schwachstellen in gängigen PDF-Readern entdeckt wurden.
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 ein digitales Dokument vor, das mehr tut, als nur auf einem Bildschirm zu liegen; es kann denken, berechnen und reagieren. Dies ist das Versprechen des Portable Document Format oder PDF, wenn es mit einer eingebauten Computerprogrammier-Engine namens JavaScript ausgestattet ist. Genau wie ein physisches Buch ein Geheimfach haben kann, das sich nur öffnet, wenn eine bestimmte Seite umgeblättert wird, kann ein PDF Code enthalten, der innerhalb der Reader-Anwendung ausgeführt wird, was interaktive Formulare, Rechtschreibprüfung und dynamische Menüs ermöglicht. Diese Macht birgt jedoch auch ein Risiko. Wenn ein Hacker diese Engine dazu bringen kann, einen Fehler zu begehen, kann er potenziell die Kontrolle über den Computer übernehmen, der die Datei liest, Daten stehlen oder Schadsoftware installieren. Jahrelang haben Sicherheitsforscher versucht, diese verborgenen Fallen zu finden, indem sie dem PDF-Reader zufällige Variationen von Dokumenten entgegenwarfen, in der Hoffnung, dass das Programm abstürzt. Aber diese Methode ist oft wie das Werfen von Dartpfeilen im Dunkeln; sie verfehlt die komplexen, spezifischen Abfolgen von Aktionen, die erforderlich sind, um die gefährlichsten Schwachstellen auszulösen.
Ein Team von Forschern der University of California, Santa Barbara, hat einen neuen Ansatz für dieses Problem entwickelt und bewegt sich dabei weg vom blinden Raten hin zum intelligenten Schlussfolgern. Sie entwickelten ein Werkzeug namens PDFuzzer, das weniger wie ein Dartwerfer und mehr wie ein Student agiert, der das Handbuch gründlich studiert hat, bevor er eine Aufgabe versucht. Anstatt sich auf einfache, isolierte Befehle zu verlassen, lernt dieses System, wie verschiedene Teile der Programmiersprache der PDF-Engine voneinander abhängen. Es versteht, dass ein Benutzer beispielsweise zuerst eine Bedingung aufstellen muss, um eine bestimmte Aktion auszuführen, oder dass zwei verschiedene Befehle exakt denselben Namen verwenden müssen, um zusammenzuarbeiten. Indem sie dem Computer beibrachten, die komplexe, geschriebene Dokumentation dieser Software-Engines zu lesen und zu verstehen, konnten die Forscher hoch entwickelte Testfälle generieren, die vorherige Werkzeuge schlichtweg nicht konzipieren konnten.
Der Kern dieser neuen Methode liegt darin, wie sie mit den „Regeln“ der Software umgeht. In der Vergangenheit hatten automatisierte Testwerkzeuge oft Schwierigkeiten, weil sie nur grundlegende Verbindungen verstanden, wie etwa wenn ein Befehl ein Ergebnis wie ein Staffelstab an den nächsten weiterreicht. Sie übersahen subtilere Beziehungen, wie etwa wenn zwei Befehle denselben spezifischen Wert verwenden müssen, um korrekt zu interagieren, oder wenn ein Befehl einen verborgenen Zustand setzt, auf den ein späterer Befehl angewiesen ist. PDFuzzer verwendet ein Large Language Model, eine Art künstliche Intelligenz, die auf riesigen Textmengen trainiert wurde, um die offiziellen Handbücher und technischen Spuren der Software zu lesen. Es konstruiert daraufhin eine detaillierte Karte, wie jede Funktion mit jeder anderen Funktion in Beziehung steht. Es übersetzt diese schriftlichen Beschreibungen in strikte logische Regeln und stellt so sicher, dass die Parameter bei der Generierung eines Tests perfekt übereinstimmen. Wenn beispielsweise ein Befehl einen spezifischen Namen erfordert, stellt das System sicher, dass derselbe Name auch im nachfolgenden Befehl verwendet wird, der ihn benötigt, anstatt zufällig zu raten.
Um ihre Kreation zu testen, wandten die Forscher PDFuzzer auf drei der weltweit am häufigsten verwendeten PDF-Reader an: Adobe Acrobat Reader, Foxit PDF Reader und PDF-XChange Editor. Sie ließen ihr Werkzeug über Wochen laufen und verglichen seine Leistung mit den besten bestehenden Methoden, die heute von Sicherheitsexperten eingesetzt werden. Die Ergebnisse waren beeindruckend. Während die älteren Werkzeuge nur einen Bruchteil der internen Logik der Software erforschen konnten, drang PDFuzzer signifikant tiefer vor und deckte bis zu 48 Prozent mehr des Codes ab. Wichtiger noch: Diese tiefere Exploration führte zur Entdeckung von 31 zuvor unbekannten Sicherheitslücken, sogenannten Zero-Day-Vulnerabilities. Dies waren keine geringfügigen Fehler; viele waren schwerwiegende Probleme, die es einem Angreifer ermöglichen könnten, beliebigen Code auszuführen – im Wesentlichen die vollständige Kontrolle über den Computer eines Opfers zu übernehmen – oder sensible Informationen preiszugeben. Im Gegensatz dazu fanden die anderen Werkzeuge im gleichen Zeitraum zusammen höchstens sechs solcher Schwachstellen.
Die Forscher hörten nicht auf, die Bugs zu finden; sie arbeiteten direkt mit den Softwareherstellern zusammen, um sie zu beheben. Durch einen koordinierten Prozess gaben sie die Details der 31 Schwachstellen an die Unternehmen bekannt, die für die PDF-Reader verantwortlich sind. Die Industrie reagierte schnell: 26 der Probleme wurden bestätigt und behoben, und zehn erhielten offizielle Sicherheitskennzeichnungen, um Nutzer zu warnen. Die Forscher erhielten zudem finanzielle Belohnungen, sogenannte Bug Bounties, in Höhe von insgesamt 2.450 Dollar für ihre Arbeit. Dieses Ergebnis unterstreicht den praktischen Wert ihres Ansatzes: Durch die Automatisierung der schwierigen Aufgabe, komplexe Softwarebeziehungen zu verstehen, konnten sie Gefahren finden und beheben, die menschliche Experten und ältere automatisierte Werkzeuge übersehen hatten.
Ein wesentlicher Teil des Erfolgs war die Art und Weise, wie das Tool mit der riesigen Menge an Informationen in den Softwarehandbüchern umging. Die Dokumentation dieser Engines kann hunderte Seiten lang sein, gefüllt mit technischen Details, die für einen Computer schwierig automatisch zu parsen sind. Die Forscher stellten fest, dass es zu langsam war und oft unsinnige Ergebnisse lieferte, wenn man eine künstliche Intelligenz einfach nur darum bat, Testfälle von Grund auf neu zu generieren. Stattdessen nutzten sie die KI als Übersetzer, um die natürliche Sprache der Handbücher in präzise, maschinenlesbare Regeln zu konvertieren. Sie brachen den Prozess in Schritte auf: erstens die Extraktion der Grundstruktur der Befehle, zweitens das Ableiten der verborgenen Details für Befehle, die nicht vollständig dokumentiert waren, und drittens die Verwendung eines mathematischen Lösers, um sicherzustellen, dass die generierten Testfälle alle logischen Bedingungen erfüllten. Dieser hybride Ansatz, der die Denkfähigkeit künstlicher Intelligenz mit der Präzision mathematischer Logik kombinierte, erwies sich als weitaus effizienter und effektiver als die alleinige Nutzung der KI.
Die Studie zeigte auch, dass die gefährlichsten Schwachstellen oft eine spezifische Abfolge von Ereignissen erforderten, die vorherige Werkzeuge nicht replizieren konnten. Beispielsweise beinhaltete ein Fehler eine Situation, in der ein Benutzeroberflächen-Element erstellt und dann sofort gelöscht wurde, ein späterer Befehl jedoch versuchte, wieder darauf zuzugreifen. Um dies auszulösen, musste der Testfall das Element erstellen, es verwenden, es löschen und dann versuchen, erneut darauf zuzugreifen – und zwar unter Sicherstellung, dass die Namen und Werte in jedem Schritt identisch waren. Ältere Tools, die jeden Befehl als isoliertes Ereignis behandelten, konnten diese spezifische Kette von Ereignissen nicht generieren. PDFuzzer hingegen konnte, durch das Verständnis der Beziehungen zwischen den Befehlen, die exakte Sequenz konstruieren, die nötig war, um den Fehler offenzulegen. Diese Fähigkeit, komplexe Abhängigkeiten zu modellieren, war der entscheidende Faktor beim Finden der Mehrheit der neuen Schwachstellen.
Über den unmittelbaren Erfolg mit PDF-Readern hinaus schlagen die Forscher vor, dass ihre Methode auch auf andere Bereiche der Softwaresicherheit angewendet werden könnte, in denen detaillierte Dokumentationen existieren. Sie testeten ihre Pipeline auf die Programmiersprache, die für Microsoft Word Makros verwendet wird – eine andere, aber ähnlich komplexe Umgebung – und stellten fest, dass dort dieselben Arten von Beziehungen und Abhängigkeiten existierten wie bei den PDF-Readern. Dies deutet darauf hin, dass die Herausforderung, zu verstehen, wie Softwarekomponenten interagieren, nicht einzigartig für PDF-Reader ist, sondern ein weit verbreitetes Problem in der modernen Computertechnik darstellt. Die Fähigkeit, geschriebene Handbücher automatisch in rigorose Testregeln zu verwandeln, bietet einen neuen Weg zur Sicherung der Software, die unser tägliches Leben antreibt.
Am Ende zeigt die Arbeit, dass die Zukunft der Softwaresicherheit darin liegen kann, Computern beizubringen, die Anweisungen zu lesen und zu verstehen, die wir für sie schreiben. Indem sie die Lücke zwischen menschlich geschriebener Dokumentation und maschinengenerierten Tests schließen, haben die Forscher gezeigt, dass wir gefährliche Schwachstellen schneller und gründlicher finden und beheben können als je zuvor. Die 31 von ihnen aufgedeckten Schwachstellen dienen als Erinnerung daran, wie viel Komplexität in der Software verborgen bleibt, die wir jeden Tag nutzen, und wie viel sicherer wir sein können, wenn wir Werkzeuge haben, die klug genug sind, die Risse zu finden, bevor es böswillige Akteure tun. Bei dem Prozess ging es nicht um Magie oder Glück, sondern darum, ein System zu bauen, das die Logik der Software durchdenken kann, um sicherzustellen, dass jeder Testfall ein bedeutungsvoller Versuch ist, das System zu brechen, anstatt nur eine zufällige Vermutung zu sein.
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.