FuzzingBrain-Bench V1: Evaluating Open-Ended Bug Discovery by LLMs
Dieses Paper stellt FuzzingBrain-Bench vor, einen neuartigen Benchmark, der darauf ausgelegt ist, die Fähigkeiten großer Sprachmodelle zur offenen Fehlerentdeckung zu bewerten, indem er deren Fähigkeit misst, Eingaben zu generieren, die in 77 Herausforderungen aus 43 Open-Source-Projekten in Sanitizer-instrumentierten Harnesses unterschiedliche Abstürze auslösen.
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
In der riesigen, unsichtbaren Landschaft der Software, die unsere moderne Welt am Laufen hält, sind verborgene Mängel eine ständige Realität. Diese Mängel, bekannt als Schwachstellen, sind wie winzige Risse in einem Damm; wenn sie nicht behoben werden, können sie Angreifern ermöglichen, Systeme zu durchbrechen, Daten zu stehlen oder kritische Dienste abzuschalten. Seit Jahrzehnten ist das Finden dieser Risse ein manueller, arbeitsintensiver Prozess, bei dem menschliche Experten den Code akribisch untersuchen und nach Mustern suchen, die auf eine Schwäche hindeuten. Doch da das Volumen der Software wächst, hat die Anzahl der gemeldeten Fehler Rekordhöhen erreicht, was die menschliche Kapazität überfordert, Schritt zu halten. Dies hat Forscher dazu veranlasst, eine neue Frage zu stellen: Kann künstliche Intelligenz, insbesondere die großen Sprachmodelle, die Code schreiben und verstehen können, darauf trainiert werden, diese Bugs schneller und effektiver als je zuvor zu finden? Die Herausforderung besteht nicht nur darin, einen Fehler auf dem Papier zu erkennen, sondern zu beweisen, dass er existiert, indem man eine spezifische Eingabe erstellt, die die Software zum Scheitern zwingt – ein Prozess, der ein tiefes Verständnis davon erfordert, wie sich Code unter Stress verhält.
Ein Team von Forschern der Texas A&M University hat einen bedeutenden Schritt zur Beantwortung dieser Frage unternommen, indem es ein neues Testfeld namens FuzzingBrain-Bench erschaffen hat. Im Gegensatz zu früheren Tests, die von Modellen der künstlichen Intelligenz verlangten, lediglich eine bekannte Schwachstelle zu identifizieren oder einen spezifischen, vorab angekündigten Fehler zu reproduzieren, fordert dieses neue Benchmark die Modelle dazu auf, als unabhängige Entdecker zu agieren. Die Forscher stellten den Modellen den Quellcode echter Open-Source-Softwareprojekte zur Verfügung, von denen bekannt war, dass sie Bugs enthielten, zusammen mit einem spezialisierten Testwerkzeug, einem sogenannten „Harness“. Dieses Harness ist eine kontrollierte Umgebung, die darauf ausgelegt ist, die Software auszuführen und genau auf jedes Anzeichen eines Fehlers zu achten. Den Modellen wurde nicht gesagt, wo sich die Bugs befanden oder wie sie aussah. Stattdessen war ihre Aufgabe, tausende verschiedene Eingaben zu generieren, sie in die Software einzuspeisen und zu sehen, ob sie einen Absturz herbeiführen konnten. Ein Absturz ist in diesem Kontext ein Moment, in dem die Software unerwartet aufhört zu arbeiten, was oft eine verborgene Schwachstelle offenbart. Die Modelle wurden nicht dafür belohnt, einen spezifischen, vorab gewählten Bug zu finden, sondern dafür, so viele verschiedene Arten von Fehlern wie möglich zu entdecken, unabhängig davon, ob diese den ursprünglichen bekannten Problemen entsprachen.
Das Benchmark bestand aus siebenundsiebzig Herausforderungen aus dreiundvierzig verschiedenen Softwareprojekten, die von Bildverarbeitungsbibliotheken über Videocodecs bis hin zu Datenbank-Tools und Webservern reichten. Diese Projekte wurden in drei Hauptprogrammiersprachen geschrieben: C, C++ und Java. Um Fairness zu gewährleisten und den Modellen den Zugriff auf externe Informationen zu verhindern, wurde jede Herausforderung in einen sicheren, isolierten Container verpackt. Innerhalb dieses Containers konnte das Modell nur den Code und das Testwerkzeug sehen; es hatte keinen Zugriff auf das Internet, keine Historie der Fehlerberichte und keine Informationen darüber, wie die Software behoben wurde. Das Modell musste sich ganz auf sein eigenes logisches Denken verlassen, um Eingaben zu entwerfen, die das System zum Absturz bringen. Die Forscher maßen den Erfolg dann daran, wie viele einzigartige Wege die Modelle fanden, die Software zum Absturz zu bringen. Sie verwendeten ein System, das ähnliche Abstürze gruppierte, um sicherzustellen, dass ein Modell für das Finden eines neuen Fehlertyps gutgeschrieben wurde und nicht bloß für die ständige Wiederholung desselben Fehlers.
Als die Forscher drei verschiedene Versionen eines fortgeschrittenen Systems der künstlichen Intelligenz testeten, zeigten die Ergebnisse sowohl das Potenzial als auch die derzeitigen Grenzen dieser Technologie auf. Die leistungsfähigste Version, bekannt als Opus, konnte in sechzig von siebenundsiebzig Herausforderungen einen Absturz auslösen und fand erfolgreich neue Wege, die Software zu brechen, in der Mehrheit der Fälle. Eine etwas weniger leistungsstarke Version, Sonnet, war in fünfzig Herausforderungen erfolgreich, während die schnellere, wirtschaftlichere Version, Haiku, in fünfunddreißig Abstürze fand. Die Forscher ordneten jeder Herausforderung einen Schwierigkeitsgrad zu, basierend darauf, wie schwer es für die Modelle war, einen Bug zu finden. Die schwierigsten Herausforderungen, bei denen kein Modell einen Absturz finden konnte, waren jene, die das anspruchsvollste logische Denken erforderten. Selbst das leistungsstärkste Modell fand in dreizehn der Herausforderungen keinen einzigen Bug, was darauf hindeutet, dass diese Modelle zwar mächtige Werkzeuge sind, aber noch nicht perfekt sind und immer noch mit den komplexesten oder unklarsten Arten von Softwaredefekten kämpfen.
Die Studie deckte auch interessante Unterschiede darin auf, wie die Modelle die Aufgabe angehen. Das leistungsfähigste Modell neigte dazu, seine Suche früher abzubrechen als die anderen, indem es oft schnell einen Bug fand und dann weitermachte, während die anderen Modelle dazu neigten, ihr volles Zeitkontingent auszuschöpfen und mehr Tests durchführten, bevor sie aufgaben. Dieses Verhalten bedeutete, dass das leistungsfähigste Modell bei den schwierigen Problemen manchmal weniger gründlich war, obwohl es besser darin war, die leichteren Probleme zu lösen. Die Forscher stellten fest, dass die Kosten für das Ausführen dieser Tests erheblich variierten; das leistungsfähigste Modell war teurer im Betrieb, insbesondere bei schwierigen Herausforderungen, bei denen es mehr Zeit aufwand und mehr Daten generierte. Die weniger teuren Modelle waren jedoch auch weniger effektiv darin, die tiefgreifenden Bugs zu finden. Die Ergebnisse legen nahe, dass künstliche Intelligenz zwar ein lebensfähiger Partner bei der Suche nach Softwarebugs wird, aber noch kein Ersatz für menschliche Expertise ist. Die Modelle sind exzellent darin, häufige oder zugängliche Schwachstellen zu finden, aber sie übersehen immer noch die flüchtigsten, was darauf hindeutet, dass die Zukunft der Softwaresicherheit wahrscheinlich in einer Zusammenarbeit zwischen menschlichen Experten und diesen zunehmend fähigen digitalen Assistenten liegen wird.
Letztendlich bietet diese Arbeit eine klare, messbare Methode, um zu beurteilen, wie gut künstliche Intelligenz Softwarefehler in der realen Welt finden kann. Indem sie sich von einfachen Tests entfernte, die Modelle baten, eine bekannte Antwort zu finden, schufen die Forscher eine realistischere Simulation dessen, wie Sicherheitsexperten tatsächlich arbeiten. Die Ergebnisse zeigen, dass aktuelle Modelle eine Vielzahl von Softwarefehlern entdecken können, aber noch nicht in der Lage sind, jeden Defekt zu finden. Während das Benchmark erweitert wird, um mehr Herausforderungen und mehr Arten von Software einzubeziehen, wird es als wichtiges Werkzeug dienen, um den Fortschritt der künstlichen Intelligenz in der Cybersicherheit zu verfolgen. Das Ziel ist nicht nur, Modelle zu bauen, die einen Test bestehen können, sondern Systeme zu entwickeln, die die digitale Infrastruktur, auf die wir alle angewiesen sind, zuverlässig schützen können, indem sie die Risse finden, bevor sie von anderen ausgenutzt werden können.
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.