Kernel-Treiber: Fuzzing deckt USB-Sicherheitslücken auf

Sicherheitslücken in USB-Treibern können eine einfache Möglichkeit darstellen, um Systeme zu übernehmen. Mittels Fuzzing-Technologien fanden zwei Sicherheitsforscher zahlreiche potenzielle Lücken in Linux-Treibern.

Artikel veröffentlicht am , Hanno Böck
USB-Treiber als Einfallstor für Angreifer sind ein unterschätztes Problem.
USB-Treiber als Einfallstor für Angreifer sind ein unterschätztes Problem. (Bild: Andreas Frank, Wikimedia Commons, CC by-sa 2.0)

USB-Geräte als mögliche Einfallstore für Angriffe sind eigentlich keine Neuheit. Die beiden Sicherheitsforscher Sergej Schumilo und Ralf Spenneberg wiesen in ihrem Vortrag auf der Black Hat Europe darauf hin, dass bereits 2005 in einem Vortrag, ebenfalls auf einer Black Hat-Konferenz, vor entsprechenden Lücken gewarnt worden war. Trotzdem ist das Problem offenbar gravierend: Mit Hilfe von Fuzzing-Technologien fanden Schumilo und Spenneberg zahlreiche Bugs in Linux-Kernel-Treibern für USB-Geräte.

Zufälligen Eingabedaten

Die Idee des Fuzzings ist eigentlich simpel: Man versucht, möglichst viele fehlerhafte, zufällige Eingabedaten für ein System, das man testen möchte, zu generieren. Stürzen das untersuchte Programm oder das System dabei ab, handelt es sich mit hoher Wahrscheinlichkeit um ein Sicherheitsproblem. Wie kritisch das Problem ist, muss jedoch im einzelnen untersucht werden.

Schumilo und Spenneberg haben mit Hilfe von QEMU und KVM versucht, die Treiber eines virtualisierten Linux-Systems zu testen. Im Vergleich zu echten Systemen hat die Virtualisierung den Vorteil, dass man deutlich schneller testen kann. Fuzzing ist meist nur erfolgreich, wenn man sehr viele mögliche Eingabedaten schicken kann. Zwei Strategien kamen hierbei zum Einsatz: Bei der ersten Methode wurde das System jeweils in seinen Ursprungszustand zurückgesetzt und ein erneuter Test-Payload an den virtuellen USB-Port gesendet. Bei der zweiten Methode wurden mehrere Payloads hintereinander gesendet - so lange, bis entweder das System abstürzte oder Speicherzugriffsfehler in Anwendungsprozessen auf dem System auftraten. Die zweite Methode war dabei deutlich schneller.

Getestet wurden 150 parallel laufende virtuelle Systeme, damit gelang es, etwa 77 Payloads pro Sekunde zu testen. Die Methode war damit deutlich schneller als bisherige Versuche, USB-Treiber zu fuzzen. Insgesamt fanden Schumilo und Spenneberg etwa 4.000 Payloads, die zu Abstürzen führten. Viele davon sind vermutlich Duplikate, die dieselben Bugs betreffen. Anhand der Ausgabe der Kernel-Abstürze schätzten die Forscher, dass es sich um etwa 20 bis 50 unterschiedliche Bugs handelt. Eine genauere Analyse der Payloads steht noch aus, die Fehler wurden somit bisher auch nicht an die Kernelentwickler gemeldet.

Vermutlich noch viel mehr Probleme

Die beteiligten Forscher gehen davon aus, dass sie bisher nur an der Oberfläche des Problems gekratzt haben. Vermutlich ließen sich mit ähnlichen Methoden viele weitere Fehler finden. Der Quellcode des verwendeten Fuzzing-Frameworks soll in Kürze auf Github veröffentlicht werden. Als nächstes wollen sie versuchen, ihre Methode auch unter Windows einzusetzen. Das Problem sei hierbei, dass es schwieriger sei, automatisiert zu erkennen, ob und warum unter Windows das System abgestürzt ist. Unter Linux lasse sich das einfach am Konsolenoutput ablesen.

Sicherheitslücken in USB-Treibern können dazu führen, dass man durch simples Anschließen eines manipulierten USB-Geräts Zugriff auf ein System erlangt. Da die Treiber im Kernelspace laufen, haben diese üblicherweise gleich die maximalen Rechte auf einem System. Vorstellbar ist etwa, entsprechende Geräte an einen kurze Zeit unbewachten Laptop mit gesperrtem Bildschirm anzuschließen oder jemandem einen USB-Stick zu geben.

Im Sommer gab es einen Vortrag auf der Black Hat in Las Vegas, der unter dem Stichwort Bad USB für einige Aufmerksamkeit sorgte. Die dort verwendeten Methoden basierten jedoch nicht auf Fehlern in Treibern, sondern auf grundsätzlichen Designproblemen von USB.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed


Aktuell auf der Startseite von Golem.de
KI-Bildgenerator
Diese Kamera generiert, statt zu fotografieren

Ein Bastler hat eine KI-Kamera ohne Objektiv gebaut. Paragraphica erzeugt Schnappschüsse mit einem Raspberry Pi und Stable Diffusion.

KI-Bildgenerator: Diese Kamera generiert, statt zu fotografieren
Artikel
  1. Seekabel: Colt bietet eine europäische Verbindung in die USA
    Seekabel
    Colt bietet eine europäische Verbindung in die USA

    Colt bringt eine neue Seekabelverbindung von Europa in die USA, die stärker in europäischer Hand ist. Statt in New York landet man in New Jersey. Doch Google und Facebook sind dabei.

  2. Magnetohydrodynamischer Antrieb: US-Militär lässt lautlosen U-Boot-Antrieb entwickeln
    Magnetohydrodynamischer Antrieb
    US-Militär lässt lautlosen U-Boot-Antrieb entwickeln

    Bislang war magnetohydrodynamischer Antrieb der Fiktion vorbehalten. Dank Fortschritten in der Akku- und Fusionstechnik soll sich das ändern.

  3. Disney und Videostreaming: Über 100 Eigenproduktionen aus Abo von Disney+ entfernt
    Disney und Videostreaming
    Über 100 Eigenproduktionen aus Abo von Disney+ entfernt

    Eigentlich wollte Disney nur etwas mehr als 50 Eigenproduktionen aus Disney+ verschwinden lassen. Nun fehlen deutlich mehr Filme und Serien.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    • Daily Deals • Roccat bis -50% • AVM Modems & Repeater bis -36% • MindStar: 13 Grafikkarten im Sale • Logitech G Pro Wireless Maus 89€ • The A500 Mini 74,99€ • Logitech G213 Prodigy Tastatur 49,90€ • Crucial P5 Plus (PS5-komp.) 1TB 71,99€, 2TB 133,99€ [Werbung]
    •  /