Options
2017
Bachelor Thesis
Titel
Eine systematische Evaluierung von Dateiformat Fuzzern zur Erkennung von Implementierungsfehlern und Verwundbarkeiten
Abstract
Fuzzy wird im Deutschen mit unscharf, undeutlich oder verschwommen übersetzt [DEW17][vgl. Deutsch]. Das heißt Fuzzing bedeutet so viel, wie undeutlich machen oder verschwommen machen. Genau das wird beim Fuzzing gemacht. Einem Programm, das über eine Schnittstelle eine Eingabe erwartet, wird diese Eingabe in verschwommener, undeutlicher Version übergeben. Das Ziel dabei ist es, Implementierungsfehler in der gefuzzten Software zu finden. Das kann beispielsweise ein Buffer Overflow sein, der auftritt, wenn ein Datum, dass das Programm in kleinerer Form erwartet, zu groß ist. Es können zum Beispiel Netzwerkprotokolle, Web-Applikationen, Webbrowser oder auch Dateiformate gefuzzt werden. Die vorliegende Arbeit beschäftigt sich mit Dateiformat Fuzzern. Und zwar konkret mit der Frage: Es soll ein Programm gefuzzt werden, das als Eingabe eine Datei erwartet. Welchen Dateiformat Fuzzer nehme ich?. Hierfür möglichst anwendungsfallspezifisch eine konkrete Empfehlung auszusprechen, ist das Ziel dieser Arbeit. Hierbei spielt es zum Beispiel eine Rolle, wie viel Aufwand in das Dateiformat Fuzzing investiert werden soll, auf welchem Betriebssystem das Zielprogramm läuft oder in welcher Sprache dieses implementiert ist. Zum Zwecke dieser Evaluierung wurde eine möglichst relevante Auswahl an Dateiformat Fuzzern gewählt. Diese Auswahl erfolgte auch durch eine Befragung von mehreren Pentesting-Firmen. Zudem wurden mehrere Anbieter von kommerziellen Dateiformat Fuzzern angeschrieben. Diese gewährten allerdings keine freie Lizenz zum Zwecke der Evaluierung, weswegen nur fre i verfügbare Dateiformat Fuzzer in die Evaluierung mit einflossen. Die ausgewählten Fuzzer wurden installiert, ausgeführt und zunächst auf ihre Eignung und Benutzbarkeit untersucht. Anschließend wurden diese in einer tiefergehenderen Untersuchung nach vorher aufgestellten Metriken in Tests verglichen. Die ausgewählten Fuzzer unterschieden sich zum Beispiel in Brute Force Fuzzer und in Intelligente Brute Force Fuzzer. Letzteren kann mit Hilfe von Dateistrukturbeschreibungsdateien1 die Dateistruktur übergeben werden. Zudem beinhaltete die Auswahl einen Fuzzer, der Instrumentierung beherrschte, der aber auch ohne Instrumentierung arbeiten konnte. Beispiele für die aufgestellten Metriken, die zur Evaluierung herangezogen wurden, sind zum einen Ressourcenverbrauch, Mächtigkeit der Spezi fikationssprachen, Stabilität oder auch, ob der Fuzzer in einem Zielprogramm, z.B. einem Programm, das PNG-Dateien verarbeitet, Implementierungsfehler, wie Buffer Overflow oder Format String Schwachstellen, findet. Als repräsentative Dateiformate aus den Bereichen Bild-, Kompressions- und Dokumentenformate wurden PNG, ZIP und PDF gewählt. Die Untersuchung erfolgte sowohl mit Programmen, welche Bugs atomar implementierten, als auch mit frei verfügbaren Programmen, die eine der drei Dateiformate PNG, PDF oder ZIP verarbeiten. Hierfür wurden zum Beispiel die von libpng zur Verfügung gestellten Tests oder den Bildbetrachter XViewer unter Linux Mint verwendet. Nicht jeder Fuzzer war für jeden Anwendungsfall gleich gut geeignet. Das Resultat dieser Arbeit stellt eine Auswertung der Tests und Vergleiche der Fuzzer zur Verfügung. Unter anderem liefen untersuchte Fuzzer nicht mehr auf aktuellen Betriebssystemen und sind nur in einem veralteten Linux ausführbar. Das Ergebnis zeigte teilweise große Unterschiede zwischen den untersuchten Fuzzern. Manche konnten zum Beispiel Format String Schwachstellen ohne Probleme finden, bei anderen war es eher Zufall, wenn sie beim verändern der Datei einen Format String einfügten. Bei den Aufzeichnungen der gefundenen Implementierungsfehler, dem Monitoring, gab es zudem Unterschiede von einer reinen Kommandozeilenausgabe bis hin zu ausführlicheren Bugreports.
ThesisNote
Darmstadt, TU, Bachelor Thesis, 2017
Verlagsort
Darmstadt