IT-Sicherheit Schwachstellen in Software schnell und effizient finden
Bochumer Forscher finden Sicherheitslücken in IT-Systemen besonders schnell. Ihr Trick: Sie konzentrieren sich auf das Wesentliche.
Nahezu jeder neue Programmcode besitzt Fehler, die schlimmstenfalls sicherheitskritisch sein können. Um sie schnell und gründlich aufzuspüren, haben Forscher vom Horst-Görtz-Institut für IT-Sicherheit der Ruhr-Universität Bochum ein neues System entwickelt – Fuzzware genannt. Es ist auf die Analyse von eingebetteten Systemen spezialisiert, also Mini-Computern, die sich etwa in smarten Glühlampen, intelligenten Thermostaten oder Steuerungssystemen in der Industrie finden. Über die Arbeit berichtet das Wissenschaftsmagazin Rubin der Ruhr-Universität.
Die Ergebnisse hat der Bochumer Doktorand Tobias Scharnowski, betreut von Prof. Dr. Thorsten Holz, im August 2022 beim 31st Usenix Security Symposium in den USA vorgestellt. Er kooperierte für die Arbeiten mit Kolleginnen und Kollegen der University of California Santa Barbara und der Vrije Universiteit Amsterdam.
Die Software mit Absicht zum Absturz bringen
Die Gruppe nutzt das sogenannte Fuzzing, um Fehler im Programmcode aufzuspüren. Als Fuzzer bezeichnet man Algorithmen, die die zu testende Software mit zufälligen Inputs füttern und prüfen, ob sie die Anwendung damit zum Absturz bringen können. Solche Crashs weisen auf Programmierfehler hin. Immer wieder variiert der Fuzzer den Input, um Schritt für Schritt möglichst viele Programmbestandteile zu erkunden.
Für bestimmte Anwendungsbereiche ist das Fuzzing bereits etabliert, zum Beispiel, um Betriebssysteme wie Windows oder Linux zu testen. Eingebettete Systeme hingegen wurden noch nicht ausgiebig damit untersucht; denn sie bringen einige Herausforderungen mit sich: Bei ihnen ist die Software – die sogenannte Firmware – in eine Hardware eingebettet, mit der sie interagiert. Oft haben solche Systeme verhältnismäßig wenig Speicher und langsame Prozessoren. Ein Problem, wenn die Forscher das Fuzzing direkt im System durchführen wollen. Es würde viel zu lange dauern, alle möglichen Inputs durchzuprobieren und auf die Antwort des Systems zu warten.
Hardware virtuell imitieren
Deswegen analysiert das Team die Firmware nicht direkt in der industriellen Steuereinheit oder in der Glühbirne. Stattdessen bauen sie die Hardware virtuell nach – emulieren nennt sich dieser Prozess. Der Emulator gaukelt der Firmware vor, sich in dem realen Gegenstand zu befinden. Dazu muss er genauso mit dem Programm interagieren, wie es die echte Hardware tun würde.
Um den Prozess weiter zu beschleunigen, schalten die Forscher dem eigentlichen Fuzzing-Prozess noch einen Schritt vor, in dem sie die möglichen Inputs eingrenzen. Sie modellieren zunächst, in welchem Rahmen sich die Eingaben befinden müssen, um für die Firmware logisch zu sein. Ein Beispiel: Handelt es sich bei der Hardware um einen Kühlschrank mit einem Temperaturfühler, kann die Kühlschrank-Hardware die gemessenen Temperaturen an die Software des Kühlschranks, also seine Firmware, melden. Realistischerweise können nicht alle möglichen Temperaturen auftreten, sondern nur ein gewisser Bereich. Daher ist auch die Firmware nur für einen bestimmten Temperaturbereich programmiert. Andere Werte könnte sie gar nicht verarbeiten, also muss man sie auch nicht im Fuzzing testen.
Beschränkte Inputs erlauben effiziente Analyse
Zusammen mit Partnern aus Santa Barbara und Amsterdam testete das Bochumer Team 77 Firmwares mit Fuzzware. Im Vergleich zu herkömmlichen Fuzzing-Methoden sortierten sie bis zu 95,5 Prozent der möglichen Inputs aus. Trotzdem gelang es ihnen, mit dem Fuzzware-System in der gleichen Zeit bis zu dreimal mehr von dem Programmcode zu checken wie mit herkömmlichen Verfahren. Dabei fand die Gruppe auch neue Schwachstellen, die mit anderen Fuzzing-Methoden unentdeckt geblieben waren.