Die Axt im Walde

Fuzzing hilft bei der automatischen Suche nach Programmierfehlern in Anwendungen. Unterstützung bieten dabei Tools für spezifische Anwendungen und Protokolle. Wir haben uns drei davon angeschaut.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 9 Min.
Von
  • Daniel Bachfeld
Inhaltsverzeichnis

Die Schwachstellensuche mit Fuzzing ist spätestens seit dem "Month of the Browser Bug" (MoBB) vielen Sicherheitsspezialisten ein Begriff. Innerhalb von 30 Tagen veröffentlichte H. D. Moore 25 Schwachstellen im Internet Explorer. Der größte Teil davon fand sich in fehlerhaften Funktionen von ActiveX-Controls, die Moore mit Hilfe eines selbstgeschriebenen Fuzzing-Tools entdeckt hatte.

AxMan besteht im Wesentlichen aus zwei Teilen: Das Windows-Tool axman.exe, das auf dem Windows-PC sämtliche COM-Objekte, also auch ActiveX-Controls erfasst, analysiert und für jedes einzelnes ein JavaScript mit einem Array sämtlicher Methoden in ein vorgegebenes Log-Verzeichnis schreibt [1]. Dazugesellen sich Skripte, die im zweiten Schritt den eigentlichen Fuzzing-Vorgang mit Hilfe eines Webservers steuern. Je nach Zahl der auf dem PC vorhandenen Controls kann die Analyse von AxMan bis zu mehrere Stunden dauern. Das über die Eingabeaufforderung zu startende Tool ruft dazu ein Reihe von ActiveX-Modulen auf dem Computer auf. Dabei öffnen und schließen sich etwa Office-Programme und viele weitere Anwendungen wie von Geisterhand.

Anschließend muss das Log-Verzeichnis zusammen mit einer zu AxMan gehörigen Skriptsammlung im Root-Verzeichnis eines Webservers gespeichert werden – alle erforderlichen Dateien finden sich im Archiv der herunterladbaren AxMan-Datei. Im nächsten Schritt ruft man die index.html-Seite im Root-Verzeichnis des Webservers mit dem Internet Explorer auf. Dem Anwender präsentiert sich nun eine Oberfläche, die anzeigt, wie viele Controls zum Testen zur Verfügung stehen; in unserem Test waren das 3733 Objekte. Darüber hinaus lässt sich in der GUI über Optionen festlegen, welche Teile der Eigenschaften und Methoden dem Fuzzing unterzogen werden.

Für den Fuzzing-Vorgang benötigt man einen lokalen oder externen Webserver.

Ohne weitere Vorgaben werden beim Start sämtliche Objekte durchprobiert. Es lassen sich aber auch einzelne Objekte fuzzen, sofern man deren CLSID kennt. Während des Durchlaufs zeigt die GUI die ID des gerade gefolterten Objekts sowie die getestete Eigenschaft und Methode an. Im Internet Explorer können sich dabei die unterschiedlichsten Dinge abspielen – bis zum Absturz des Browsers. In Kombination mit einem Debugger und der Information über die fehlerhafte Methode lassen sich dann Informationen für weitere manuelle Analysen gewinnen und ob sich die Lücke auch zum Einschleusen von Code eignet. Damit der Fuzzing-Prozess fortan nicht immer am selben Objekt hängen bleibt und man in der Folge keine weiteren Objekte untersuchen kann, muss die CLSID des verursachenden Controls in die Datei blacklist.js eingetragen werden.

Im Test fanden wir innerhalb kürzester Zeit eine Schwachstelle in einem Objekt für Microsoft Data Access Components (MDAC) in der Bibliothek msado15.dll, die zum Absturz des Internet Explorer führte. AxMan liefert zwar schnell die ersten Ergebnisse, kann jedoch nur Hinweise geben, wo ein Entwickler nacharbeiten muss.