Wissenschaftler des Instituts für Systemsicherheit der Ruhr-Universität Bochum arbeiten derzeit an einem Verfahren, mit dem sich Sicherheitslücken im Binärcode von IoT-Geräten aufspüren lassen. Anders als bestehende Analysewerkzeuge, die meist nur bestimmte Komponenten oder Plattformen unterstützen, soll es unabhängig von der eingesetzten Hardware funktionieren.
Im Zuge des von der EU geförderten Projekts „Bastion – Leveraging Binary Analysis to Secure the Internet of Things“ wollen die Bochumer Forscher eine universelle Sprache für die Geräte und deren Prozessoren entwickeln. Den Binärcode lesen sie direkt aus den Geräten aus, weil sie nicht auf den von Herstellern unter Verschluss gehaltenen Quellcode zugreifen können.
Je nach Komplexität des Prozessors gibt es natürlich auch im Binärcode der Geräte starke Unterschiede, so dass gleichlautende Instruktionen sehr unterschiedlichen Code generieren können. Damit das Team um Prof. Dr. Thorsten Holz dennoch eine Sicherheitsanalyse durchführen kann, übersetzt es den Binärcode zunächst in eine „Zwischensprache“. Für Intel-, ARM- und MIPS-Prozessoren liegt diese Sprache bereits vor.
Durch Analyse des Codes in dieser Sprache können die Forscher Programmierfehler und Sicherheitslecks aufspüren. Schon 2015 gelang es ihnen auf diese Weise, eine Lücke in Microsofts Browser Internet Explorer aufzudecken und automatisch zu beheben. Holz hatte unter anderem auch die Testsoftware für Dieselfahrzeuge des Volkswagen-Konzerns analysiert und dank der Methode nachvollziehen können, wie der Hersteller die Software genau manipuliert hatte.
Allerdings lässt sich das Verfahren derzeit noch nicht auf jede Software anwenden. Bis zum Ende des Projekts im Jahr 2020 soll es aber für alle Prozessortypen verfügbar sein. Auch die Mehrzahl der Geräte soll dann automatisch aktualisiert werden können.
Bis dahin wartet aber noch viel Arbeit auf das Bochumer Team. Denn während beispielsweise ein moderner Autoschlüssel mit 20 Instruktionen auskommt, verwendet ein komplexer Intel-Prozessor mehr als 500 Befehle.
Damit ihre Sicherheitsanalysen unabhängig vom Prozessor funktionieren, müssen die Forscher die Binärcodes zunächst übersetzen. Am Ende sollen Instruktionen eines Microcontrollers genau so aussehen, wie die Befehle aus einem PC-Prozessor: „Das ist Fleißarbeit“, kommentiert Holz. „Unsere Zwischensprache enthält weniger als zwei Dutzend Befehle. Was komplexe Prozessoren in einem einzigen Schritt machen, müssen wir in viele kleine Schritten zerlegen.“
Wenn Smartphones beruflich und privat genutzt werden, steht der Schutz sensibler Unternehmensdaten auf dem Spiel. Samsung KNOX™ bietet einen mehrschichtigen, hochwirksamen Schutz, ohne die Privatsphäre der Mitarbeiter anzutasten.
Wo also ein Intel-Prozessor einen einzigen Befehl für eine Verschlüsselung ausgibt, müssen die Wissenschaftler auf eine lange Folge arithmetischer und logischer Operationen sowie verschiedener Sprungbefehle zurückgreifen. Erst wenn sie den Befehlssatz in die Metasprache übersetzt haben, können sie gezielt nach Programmierfehlern suchen, über die sich Kriminelle möglicherweise Zugriff auf das System verschaffen könnten.
„Durchschnittlich finden sich in einer gut gepflegten Software ein bis zwei sicherheitskritische Schwachstellen pro 20.000 Zeilen Code“, erklärt Holz. Microsofts Betriebssystem Windows besteht beispielsweise aus 40 bis 50 Millionen Zeilen. Laut Holz Rechnung müsste Windows damit Tausende von Sicherheitslücken enthalten.
Besonders gefährlich sind Code-Zeilen, in denen eine Variable nur eine bestimmte Länge haben darf, Angreifer aber über diese Grenze hinaus schreiben können (Buffer Overflow). Ebenfalls fehleranfällig sind Prüfungen, ob eine Variable einer bestimmten Bedingung entspricht, etwa kleiner, größer oder gleich null ist. Wird im Programm dann die Abfrage dieser Bedingung vergessen, kann das Angreifern ebenfalls Zugriff auf das System ermöglichen.
Aber nicht alle auf diese Weise aufgespürten Fehler ließen sich auch für einen Angriff ausnutzen, betont Holz. Daher prüfen die Forscher in einem dritten Schritt, in welchem Kontext ein Code ausgeführt wird. Dafür greifen sie wieder auf Standardverfahren zurück, etwa symbolische Ausführung. Dabei wird ein Programm, etwa eine Taschenrechner-App, mit den Variablen Alpha und Beta statt konkreten Zahlen gefüttert. Dann prüft ein Algorithmus, welche Werte die Variablen annehmen müssen, um einen gewissen Punkt im Programmcode zu erreichen. „In unserem Beispiel könnte das etwa bedeuten, dass Alpha zwischen 100 und 500 liegen muss, um an die sicherheitskritische Schwachstelle im Code zu gelangen“, erläutert Holz.
„Manchmal dauert es eine Weile, bis Sicherheitslücken in einem Gerät auffallen und Hersteller sie beheben“, so der Teamleiter weiter. Genau hier könnten die Methoden seiner Gruppe helfen. Daher will er nicht nur Lücken aufspüren, sondern diese Lecks auch automatisch schließen. Dazu müssen die entsprechenden Aktualisierungen aber in der Zwischensprache durchgeführt und anschließend in die Binärsprache zurückübersetzt werden, damit der Prozessor die Instruktionen ausführen kann.
„Es ist, als würde man einen deutschen Text ins Englische übersetzen, eine Passage hinzufügen und dann zurück ins Deutsche übersetzen“, veranschaulicht Holz. „Beim letzten Übersetzungsschritt hakt es derzeit noch. Aber ich bin optimistisch, dass wir das hinbekommen.“
[mit Material von Martin Schindler, silicon.de]
Die Hintermänner haben es auf Zugangsdaten zu Microsoft Azure abgesehen. Die Kampagne ist bis mindestens…
Cloud-Plattform für elektronische Beschaffungsprozesse mit automatisierter Abwicklung elektronischer Rechnungen.
Mindestens eine Schwachstelle erlaubt eine Remotecodeausführung. Dem Entdecker zahlt Google eine besonders hohe Belohnung von…
Nur rund die Hälfte schaltet während der Feiertage komplett vom Job ab. Die anderen sind…
Security-Experten von Check Point sind einer neuen Angriffsart auf die Spur gekommen, die E-Mail-Schutzmaßnahmen umgehen…
Hinter 84 Prozent der Zwischenfälle bei Herstellern stecken Schwachstellen in der Lieferkette. Auf dem Vormarsch…