Firefox-Hack zur Umgehung des fehlenden WebUSB-Supports
(github.com/ArcaneNibble)> "Wir brauchen WebUSB nicht!"
- Es gibt eine Möglichkeit, wie Webseiten auch ohne WebUSB auf USB-Geräte zugreifen können. Außerdem können Geräte so entworfen werden, dass sie die Anforderung einer Nutzereinwilligung umgehen.
Schnelle Demo
u2f-hax.uf2auf einen Raspberry Pi Pico laden undindex.htmlauflocalhostoder in einem anderen sicheren Kontext laden.- Die Buttons "On!" und "Off!" schalten die LED um, und der Status von Pin
GP22wird regelmäßig auf der Seite aktualisiert.
Wie ist das möglich?
- Der Pico ist so programmiert, dass er einen U2F-Dongle (physischen Zwei-Faktor-Sicherheitsschlüssel) emuliert.
- Statt einer Sicherheitsfunktion werden beliebige Daten im "Key Handle" und in der Signatur einer
U2F_AUTHENTICATE-Nachricht versteckt. - Wenn das Key Handle mit
0xfeedfacebeginnt, "bestätigt" der Pico sofort die Benutzerpräsenz und gibt die Daten zurück.
Warum ist das möglich?
- U2F-Key-Handles sind als undurchsichtige Datenblöcke konzipiert, die dem Sicherheits-Dongle "gehören".
- Sie sind dafür ausgelegt, dass ein kostengünstiger Dongle mit vielen Websites verknüpft werden kann.
- Der Dongle speichert intern einen einzigartigen "Master"-Kryptoschlüssel und erzeugt bei der Registrierung ein neues Public-/Private-Key-Paar, das zurückgegeben wird.
- Da Key Handles undurchsichtig behandelt werden, können darin beliebige Daten verborgen werden.
Wie werden die Daten zurückgegeben?
- Daten werden in einer ECDSA-Signatur versteckt.
- Die Signatur besteht aus zwei Zahlen (
r,s), wobei jede Zahl innerhalb eines bestimmten Bereichs berechnet wird. - Chrome prüft, ob die Zahlen der Signatur innerhalb des Bereichs liegen, Firefox prüft das nicht.
- Um die standardmäßige Gültigkeitsprüfung von Chrome zu umgehen, wird das erste Byte jeder Zahl auf
0x7fgesetzt.
Ist das eine Sicherheitslücke?
- Nein, man erhält damit keinen Zugriff auf beliebige USB-Geräte.
- Es funktioniert nur mit Geräten, die absichtlich gegen die Regeln verstoßen.
- Das Sicherheitsmodell von USB-Geräten ist auf den meisten Plattformen fragwürdig.
- Man sollte keine beliebigen unbekannten Geräte an den Computer anschließen.
1 Kommentare
Hacker-News-Kommentare
In diesem Thread geht es hauptsächlich um WebUSB, nicht um den OP. WebUSB ist ein cooler Hack
Firefox unterstützt keine Kommunikation mit beliebigen USB-Geräten. USB-Kommunikation mit U2F-Sicherheitsschlüsseln wird jedoch unterstützt
Leute, die WebUSB verwenden, sagen, es sei großartig, und Leute, die es nicht verwenden, sind verwirrt, warum es nötig sein soll
Das Anpassen von Tastaturen mit QMK/Via-Firmware über WebUSB ist ein Albtraum
/dev/hidraw-Gerät vollständig gelesen werden kannsudo-Niveau auf die Tastatur zu flashenUSB Serial ist ein großartiges Werkzeug, und inzwischen gibt es eine Liste von Tools, mit denen man Geräte über den Browser einrichten kann
Für Leute, die Geräte häufig flashen, sind die Vorteile offensichtlich. Für normale Nutzer ist es jedoch nicht wichtig
Vielleicht ist es besser, wenn USB-Ports nicht von browserbasiertem Code verwendet werden
Das Flashen von GrapehenOS auf ein Pixel-Handy war eine der angenehmsten und schnellsten OS-Installationen, die ich je erlebt habe
Der private Schlüssel wird mit einem „Master“-Schlüssel verschlüsselt, und der verschlüsselte private Schlüssel wird als Key Handle zurückgegeben
Es gibt politische Kontroversen rund um WebUSB