Testing: Google integriert deutschen Jazzer in OSS-Fuzz

Das Projekt zum Abklopfen von Open-Source-Software auf Schwachstellen testet neuerdings JVM-Anwendungen mit dem Fuzzer von Code Intelligence.

Lesezeit: 3 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 2 Beiträge

(Bild: ROMAN NOGIN / Shutterstock.com)

Von
  • Rainald Menge-Sonnentag

Google und Code Intelligence haben eine Integration des Fuzzing-Werkzeugs Jazzer in OSS-Fuzz bekanntgegeben. Damit kann das Projekt zum Testen von Open-Source-Anwendungen über Fuzzing ab sofort auch JVM-Applikationen (Java Virtual Machine) auf potenzielle Schwachstellen überprüfen. Code Intelligence ist ein deutsches Unternehmen, das sich auf Fuzz-Testing spezialisiert hat.

Beim Fuzzing blicken Werkzeuge anders als bei der statischen Codeanalyse nicht auf den Sourcecode, sondern füttern die zu testende Software mit Eingabedaten, die zufällig oder bewusst fehlerhaft beziehungsweise unvollständig sind. Auf die Weise findet das Fuzzing-Verfahren Fehler wie Pufferüberläufe, die durchrutschen können, wenn menschliche Tester nur plausible Daten nutzen.

Das Projekt OSS-Fuzz hat Google gemeinsam mit der Core Infrastructure Inititative entwickelt und erstmals Ende 2016 vorgestellt. Laut dem Internetriesen hat OSS-Fuzz seitdem über 25.000 Bugs in Open-Source-Projekten aufgespürt. Bisher zielte der Einsatz vor allem auf das Prüfen von C- und C++-Anwendungen, die für typische Speicherfehler anfällig sind.

Das Anfang Februar von Code Intelligence vorgestellte Tool Jazzer zielt dagegen auf Anwendungen auf der JVM-Plattform, die unter anderem in Java, Kotlin, Scala oder Clojure geschrieben sind. Auch wenn sich dabei die JVM um die Speicherverwaltung kümmert, sind die Applikationen anfällig für andere Schwachstellen. Unter anderem hat Jazzer die Schwachstelle CVE-2021-23899 im json-sanitzer aufgedeckt, die sich für Cross-Site-Scripting (XSS) ausnutzen lässt. Das Tool zum Bereinigen von JSON-Inhalten stammt übrigens vom Open Web Application Security Project (OWASP), das in seiner noch aktuellen Top 10 der Web Application Security Risks XSS auf Platz 7 führt.

Jazzer baut auf den in der Compilerarchitektur LLVM verankerten libFuzzer auf und führt den Bytecode innerhalb des Fuzzer-Prozesses aus, um eine möglichst hohe Performance zu erreichen. Er benötigt eine JVM-Klasse, die eine Methode enthält, über die der Fuzzer die Anwendung mit Eingaben füttert.

Wenn die von Jazzer übergebenen Eingabedaten eine nicht abgefangene Exception oder eine fehlgeschlagene Assertion auslösen, erstellt das Tool neben einem Java-Stack-Trace zwei Dateien, die Informationen über die Eingabedaten und die verantwortliche Java-Klasse zum Reproduzieren des Problems enthalten.

Auch native Libraries, die über JNI eingebunden sind, kann Jazzer untersuchen. Dabei unterstützt das Tool das Zusammenspiel mit dem Sanitizer-Werkzeug AddressSanitizer, das bei der Suche nach Speicherfehlern in C- und C++-Code hilft.

Weitere Informationen zur Integration von Jazzer in OSS-Fuzz lassen sich den Blogbeiträgen bei Google und Code Intelligence entnehmen. Für die FuzzCon Europe, die am 24. März stattfindet, kündigt der Code-Intelligence-Blog eine virtuelle Release Party an.

(rme)