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. CPA Software Consult GmbH, Langenfeld
  2. Allianz Deutschland AG, Stuttgart

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
Spiele-Angebote
  1. 4,31€
  2. (-79%) 12,50€
  3. 3,99€
  4. 44,99€

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
       


Golem.de probiert 5G in Berlin aus - Bericht

Wir probieren 5G in Berlin-Adlershof aus.

Golem.de probiert 5G in Berlin aus - Bericht Video aufrufen
Geothermie: Wer auf dem Vulkan wohnt, muss nicht so tief bohren
Geothermie
Wer auf dem Vulkan wohnt, muss nicht so tief bohren

Die hohen Erwartungen haben Geothermie-Kraftwerke bisher nicht erfüllt. Weltweit setzen trotzdem immer mehr Länder auf die Wärme aus der Tiefe - nicht alle haben es dabei leicht.
Ein Bericht von Jan Oliver Löfken

  1. Nachhaltigkeit Jute im Plastik
  2. Nachhaltigkeit Bauen fürs Klima
  3. Autos Elektro, Brennstoffzelle oder Diesel?

Dick Pics: Penis oder kein Penis?
Dick Pics
Penis oder kein Penis?

Eine Studentin arbeitet an einer Software, die automatisch Bilder von Penissen aus Direktnachrichten filtert. Wer mithelfen will, kann ihr Testobjekte schicken.
Ein Bericht von Fabian A. Scherschel

  1. Medienbericht US-Regierung will soziale Netzwerke stärker überwachen
  2. Soziales Netzwerk Openbook heißt jetzt Okuna
  3. EU-Wahl Spitzenkandidat Manfred Weber für Klarnamenpflicht im Netz

Programmiersprache: Java 13 bringt mehrzeilige Strings mit Textblöcken
Programmiersprache
Java 13 bringt mehrzeilige Strings mit Textblöcken

Die Sprache Java steht im Ruf, eher umständlich zu sein. Die Entwickler versuchen aber, viel daran zu ändern. Mit der nun verfügbaren Version Java 13 gibt es etwa Textblöcke, mit denen sich endlich angenehm und ohne unnötige Umstände mehrzeilige Strings definieren lassen.
Von Nicolai Parlog

  1. Java Offenes Enterprise-Java Jakarta EE 8 erschienen
  2. Microsoft SQL-Server 2019 bringt kostenlosen Java-Support
  3. Paketmanagement Java-Dependencies über unsichere HTTP-Downloads

    •  /