Unscharfe Attacke auf das Smartphone

BLOG: Datentyp

Informatik, Daten und Privatsphäre
Datentyp

Mit der Fuzzing-Technik können bisher unerkannte Softwarefehler identifiziert werden

Die Handykamera erfasst die Grafik und liest diese ohne weitere Rückfrage ein. Dann passiert es: Anstatt einer erfolgreichen Erkennung oder Ausgabe einer Fehlermeldung stürzt die App einfach ab! Das Smartphone-Betriebssystem bestätigt den Fehler bei der Ausführung der Software. Der Handybesitzer ist aber nicht verärgert sondern erfreut, denn genau das wollte er erreichen. Ein Fehler in einer aktuellen Software, die Millionen von Menschen mit sich herumtragen, wurde gefunden – und das war auch das Ziel des Praktikums zur Vorlesung Security an der Fachhochschule Münster.

Wenn Programme falsche Eingaben erhalten, erwarten die Benutzer die Ausgabe einer Fehlermeldung. Die Meldung sollte den Fehler möglichst genau beschreiben, um den Benutzer bei der Korrektur zu unterstützen. Da komplexe Software aber erfahrungsgemäß nicht fehlerfrei ist, gibt es Ausnahmen. Die Software verschluckt sich an der Eingabe und gerät in einen undefinierten Zustand, was oft zum Absturz des Programms führt. In schlimmeren Fällen ergeben sich sogar Sicherheitslücken, die gezielt ausgenutzt werden können.

In einem Praktikum sollten Studierende daher zum Ende des Wintersemesters 11/12  die Softwarebibliothek ZXing testen und Fehler finden, die bisher noch niemand identifiziert hatte. Diese Bibliothek ist Grundlage für das Erkennen von QR-Codes oder Barcodes mithilfe von Android-Smartphones; sie wird also von vielen Handybesitzern genutzt, ohne dass dies den meisten bewusst wäre. Falls diese Bibliothek tatsächlich schwerwiegende Fehler enthielte, wäre die Sicherheit von Smartphones beim Einlesen von manipulierten QR-Codes gefährdet. (Der Hintergrund wurde bereits in einem anderen Blogpost beleuchtet.)

Das spezielle Testverfahren für Software, das hier eingesetzt wurde, heißt Fuzzing (engl. fuzzy: unscharf). Mithilfe von Werkzeugen werden viele zufällige Eingaben erzeugt, in der Hoffnung vorhandene Fehler schrotschussartig zu erwischen. Die zu testende Software wird als Black Box angesehen, d. h. der interne Aufbau ist nicht bekannt bzw. wird nicht im Detail berücksichtigt.

Fuzzing wurde bereits 1988 von Barton Miller an der Universität von Wisconsin entwickelt oder – besser gesagt – entdeckt, denn ein zufälliges Ereignis spielte hier eine Rolle. Miller wählte sich während eines Gewitters per 1200-Baud-Modem in das Computernetz der Hochschule ein. Die Verbindung wurde immer wieder durch starkes Rauschen auf der Telefonleitung gestört, d. h. die Kommandos, die er per Tastatureingabe übertrug, wurden teilweise mit zufälligen Zeichen ergänzt oder überschrieben. Zur Überraschung Millers führte dies aber nicht nur zu Fehlermeldungen der Programme, die falsche Eingaben erhielten, sondern auch zu einer Reihe von Programmabstürzen. Betroffen waren Unix-Utilities, d. h. Hilfsprogramme, die täglich genutzt werden und als stabil und gut getestet angesehen wurden. Offenbar bewirkten aber zufällige Eingaben Fehlerzustände, die von den Programmieren und Testern zuvor nicht gefunden worden waren.

Miller ging der Sache auf den Grund und entwickelte gemeinsam mit Studierenden eine Testsoftware, die den Effekt gezielt ausnutzte und mit der alle gängigen Utilities getestet wurden. Fast ein Drittel der Unix-Utilities erwies sich als anfällig, so dass viele Programmierfehler aufgedeckt und korrigiert werden konnten. Die Veröffentlichung dieses Ergebnisses sorgte dafür, dass Fuzzing zu einer etablierten Testmethode wurde.

Beim praktischen Einsatz von Fuzzing ist es jedoch nicht ausreichend, zufällige Zeichenfolgen oder – wie im Fall von QR-Codes – verrauschte Pixelmuster zu erzeugen und abzuwarten, wann ein Programm bei der Eingabe abstürzt. Die zu testende Software erwartet die Eingabe in einem vorgegebenen Format: Eine spezielle Syntax wird vorausgesetzt. Bei zufälligen Eingaben ist es unwahrscheinlich oder sogar praktisch ausgeschlossen, dass diese eine korrekte Syntax aufweisen. Die Überprüfung der Syntax ist aber nur eine Funktion der Software unter vielen; der Test wäre also ineffizient. Beim fortgeschrittenen Fuzzing ist daher darauf zu achten, dass die Eingaben sorgfältig konstruiert werden: Zufällige Elemente werden auf eine Weise eingefügt, dass Nebenbedingungen (wie korrekte Syntax) nicht verletzt werden.

Die Studierenden (des Master-Studiengangs Informationstechnik) mussten sich daher mit der Spezifikation der QR-Codes vertraut machen und eine geeignete Strategie entwickeln, um zufällige Eingaben zu erzeugen, die eine Ähnlichkeit zu korrekten Eingaben aufweisen, um möglichst viele Programmfunktion beim Testen abzudecken. Die Gesamtgruppe (15 Studierende, zwei Betreuer) wurde daher in zwei Teilgruppen aufgeteilt, die verschiedene Fuzzing-Strategien verfolgte. Jede Teilgruppe  zerfiel ihrerseits in drei Teilkompetenzen, so dass studentische Experten für die Smartphone-Simulation, die Fuzzing-Steuerung und die QR-Code-Generierung in beiden Teilgruppen vorhanden waren. Es kam daher auf Arbeitsteilung und funktionierendes Teamwork an, und das gelang erfolgreich. In nur zwei Nachmittagen wurde ein funktionsfähiger und vielseitiger Testaufbau im Hochschullabor entwickelt – und es wurden sofort „echte“ Fehler gefunden!

altaltaltalt

Picture credits: fuzzing team members T Biermann, R Böing, S Brinkhaus, M Dankel, U Greveler, A Jordan, A Kaiser, A Kuhn, D Löhr, S Möstel, W Rickert, M Ruffer, D Sondermann, P Steffan, M Wellmeyer, M Wesker, M Wilmes. Münster University of Applied Sciences.

Die Leser können es selbst ausprobieren. Scannen Sie eines der obigen Bilder mithilfe einer Android-App ein, die QR-Codes versteht. Aber Vorsicht: Sie tun dies auf eigene Gefahr! Wenn beim Absturz der App noch nicht gespeicherte Daten verloren gehen, übernehmen wir keine Verantwortung. Das ZXing-Entwicklerteam wurde übrigens bereits einige Stunden vor Erscheinen dieses Beitrags informiert. Der Fehler wurde umgehend beseitigt, was sich aber erst im nächsten Release der Systemsoftware bemerkbar machen wird. Eine unmittelbare Sicherheitsrelevanz haben die gefundenen Fehler nach erster Analyse nicht, sieht man einmal davon ab, dass Abstürze von Apps, die QR-Codes ohne weitere Interaktion mit dem Nutzer analysieren, die Verfügbarkeit des Smartphones mindern.



”The purpose of computing is insight, not numbers.” (Richard Hamming) Ulrich Greveler studierte in Gießen Mathematik und Informatik, arbeitete sechs Jahre in der Industrie im In- und Ausland, bevor er als Wissenschaftler an die Ruhr-Universität nach Bochum wechselte. Seit 2006 lehrt er Informatik mit dem Schwerpunkt IT-Sicherheit an der Fachhochschule Münster (bis 03/2012) und der Hochschule Rhein-Waal (seit 03/2012). Sein besonderes Interesse gilt datenschutzfördernden Technologien und dem Spannungsverhältnis zwischen Privatsphäre und digitaler Vernetzung.

Schreibe einen Kommentar