Abo
  • IT-Karriere:

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

Stellenmarkt
  1. Eurowings Aviation GmbH, Köln
  2. operational services GmbH & Co. KG, Braunschweig

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.



Anzeige
Hardware-Angebote
  1. täglich neue Deals bei Alternate.de
  2. 289€

neocron 17. Okt 2014

sehr gut ... mein rechner geht teils schon aus, wenn ich den stecker versuche blind...

blizzy 17. Okt 2014

Die Duplikate rauszufinden kann man sich ja sparen. Man greift sich ein paar der...


Folgen Sie uns
       


Cepton Lidar angesehen

So funktioniert der Laserscanner des US-Startups Cepton.

Cepton Lidar angesehen Video aufrufen
5G-Report: Nicht jedes Land braucht zur Frequenzvergabe Auktionen
5G-Report
Nicht jedes Land braucht zur Frequenzvergabe Auktionen

Die umstrittene Versteigerung von 5G-Frequenzen durch die Bundesnetzagentur ist zu Ende. Die Debatte darüber, wie Funkspektrum verteilt werden soll, geht weiter. Wir haben uns die Praxis in anderen Ländern angeschaut.
Ein Bericht von Stefan Krempl

  1. Testlabor-Leiter 5G bringt durch "mehr Antennen weniger Strahlung"
  2. Sindelfingen Mercedes und Telefónica Deutschland errichten 5G-Netz
  3. iPhone-Modem Apple will Intels deutsches 5G-Team übernehmen

WD Blue SN500 ausprobiert: Die flotte günstige Blaue
WD Blue SN500 ausprobiert
Die flotte günstige Blaue

Mit der WD Blue SN500 bietet Western Digital eine spannende NVMe-SSD an: Das M.2-Kärtchen basiert auf einem selbst entwickelten Controller und eigenem Flash-Speicher. Das Resultat ist ein schnelles, vor allem aber günstiges Modell als bessere Alternative zu Sata-SSDs.
Von Marc Sauter

  1. WD Black SN750 ausprobiert Direkt hinter Samsungs SSDs
  2. WD Black SN750 Leicht optimierte NVMe-SSD mit 2 TByte
  3. Ultrastar DC ME200 Western Digital baut PCIe-Arbeitsspeicher mit 4 TByte

Ada und Spark: Mehr Sicherheit durch bessere Programmiersprachen
Ada und Spark
Mehr Sicherheit durch bessere Programmiersprachen

Viele Sicherheitslücken in Software sind auf Programmierfehler zurückzuführen. Diese Fehler lassen sich aber vermeiden - und zwar unter anderem durch die Wahl einer guten Programmiersprache. Ada und Spark gehören dazu, leider sind sie immer noch wenig bekannt.
Von Johannes Kanig

  1. Das andere How-to Deutsch lernen für Programmierer
  2. Programmiersprachen, Pakete, IDEs So steigen Entwickler in Machine Learning ein
  3. Software-Entwickler Welche Programmiersprache soll ich lernen?

    •  /