Schwachstellen in Software automatisch finden

03.05.2019 - Lara Kristin Zeitel

Software Programmierfehler in Software sind keine Seltenheit; regelmäßig verschaffen sich Angreifer über solche Schwachstellen Kontrolle über die Programme. Das Team am Lehrstuhl für Systemsicherheit der RUB arbeitet seit einigen Jahren an Tools, mit denen sich Schwachstellen im Programmcode automatisiert finden lassen. „Wir nutzen dazu das sogenannte Fuzzing, eine Technik, die eigentlich schon seit den 1980er-Jahren bekannt ist, aber in den vergangenen fünf Jahren immens verbessert wurde“, erklärt Prof. Dr. Thorsten Holz, Leiter des Lehrstuhls. „Wir und andere Forschungsgruppen, aber auch die Industrie haben sie seither entscheidend weiterentwickelt.“

Crashs weisen auf Programmierfehler hin

Fuzzer sind Algorithmen, die die zu testende Software mit zufälligen Inputs füttern und überprüfen, ob sie die Anwendung damit zum Absturz bringen können. „Der Fuzzer speist einen bestimmten Input in das Programm und beobachtet, welche Code-Teile ausgeführt werden“, beschreibt Holz. Anschließend variiert er den Input etwas und verfolgt, ob die gleichen oder neue Code-Bestandteile aktiviert werden. Der Fuzzer hat dabei zum Ziel, möglichst viel von dem Programmcode auszuführen und somit für alle Code-Bestandteile zu prüfen, ob ein bestimmter Input sie zum Absturz bringt. „Solche Crashs weisen auf Programmierfehler hin“, sagt Thorsten Holz. „Wenn wir auf diese Weise Schwachstellen finden, können wir im nächsten Schritt überprüfen, ob sie sicherheitsrelevant sind.“

Gemeinsam mit seinen Doktoranden Sergej Schumilo und Cornelius Aschermann hat der Forscher in den vergangenen Jahren verschiedene Fuzzer entwickelt. Zu den getesteten Programmen gehören Programmiersprachen, Betriebssysteme und sogar die Virtualisierungslösungen, ohne die die Cloud nicht möglich wäre. In praktisch allen getesteten Anwendungen fanden die Forscher Fehler, insgesamt waren es hunderte, wovon sie über 60 als sicherheitskritisch einstuften. „Der Fuzzer ist so erfolgreich im Finden von Fehlern, dass wir zusätzliche studentische Hilfskräfte einstellen mussten, um alle Fehler an die Entwickler melden zu können“, veranschaulicht Holz.

Holz

Momentan arbeitet das Bochumer Team an Fuzzern für sogenannte Hypervisor, also Programme, die auf einer Hardware virtuelle Umgebungen erzeugen, in denen dann zum Beispiel mehrere Betriebssysteme parallel installiert werden können, und die grundlegend für die Sicherheit moderner Cloud-Systeme sind.

„Wir haben diverse Sicherheitslücken gefunden, die es Angreifern unter Umständen erlauben, die gesamte Infrastruktur des Cloud-Anbieters zu übernehmen“, resümiert Thorsten Holz. „Zum Beispiel, weil sie einem Angreifer erlauben würden, nicht nur Kontrolle über die Software zu erlangen, sondern auch über die Hardware, für die die virtuellen Umgebungen erzeugt wurden.“

Unternehmensgründung angedacht

„Fuzzing wird seit einer Weile von Softwareentwicklern sehr stark genutzt und wird in Zukunft mit Sicherheit die Grundlage für die Software-Qualitätssicherung sein“, erzählt Thorsten Holz. Die Unternehmen haben daher durchaus Interesse an neuen effizienten Fuzzern, wie sie Sergej Schumilo und Cornelius Aschermann in ihren Doktorarbeiten entwickelt haben. Die beiden Nachwuchsforscher planen derzeit, mithilfe des Gründungsinkubators „Cube 5“ an der RUB, ein Start-up auf die Beine zu stellen, das kritische Softwaresysteme sicherer machen möchte.

Schutzmechanismen gegen Fuzzing

Parallel geht auch die Forschung am Lehrstuhl für Systemsicherheit weiter. Derzeit arbeitet das Team unter anderem an Schutzmechanismen, die das Fuzzing von Software verhindern sollen. „Firmen nutzen Fuzzing gern, um ihre eigene Software intern auf Schwachstellen zu testen und diese dann zu beheben“, erklärt Holz. „Sie wollen aber verhindern, dass Angreifer mit der Methode die Schwachstellen vor ihnen finden und ausnutzen können.“ Ein Tool vom Bochumer Lehrstuhl für Systemsicherheit könnte künftig helfen, unbefugtes Fuzzing deutlich zu erschweren. (Fotos:RUB/Kramer)