Comment contourner l’absence de prise en charge de WebUSB dans Firefox
(github.com/ArcaneNibble)> « Nous n’avons pas besoin de WebUSB ! »
- Il existe un moyen pour une page web d’accéder à un périphérique USB sans WebUSB. De plus, le périphérique peut être conçu pour contourner l’exigence de consentement de l’utilisateur.
Démo rapide
- Charger
u2f-hax.uf2sur un Raspberry Pi Pico, puis chargerindex.htmldepuis localhost ou un autre contexte sécurisé. - Les boutons « On! » et « Off! » basculent la LED, et l’état de la broche
GP22est mis à jour périodiquement sur la page.
Comment est-ce possible ?
- Le Pico est programmé pour émuler un dongle U2F (clé de sécurité physique à deux facteurs).
- Au lieu des fonctions de sécurité, des données arbitraires sont dissimulées dans le « key handle » du message
U2F_AUTHENTICATEet dans la signature. - Si le key handle commence par 0xfeedface, le Pico « confirme » immédiatement la présence de l’utilisateur et renvoie les données.
Pourquoi est-ce possible ?
- Les key handles U2F sont conçus comme des blocs de données opaques « possédés » par le dongle de sécurité.
- Ils sont conçus pour permettre à des dongles peu coûteux d’être associés à de nombreux sites web.
- Le dongle stocke en interne une clé de chiffrement « maître » unique et, lors de l’enregistrement, génère puis renvoie une nouvelle paire de clés publique/privée.
- Comme les key handles sont traités comme opaques, ils peuvent dissimuler des données arbitraires.
Méthode de renvoi des données
- Les données sont dissimulées dans une signature ECDSA.
- Une signature est composée de deux nombres (
r,s), chacun calculé dans une plage donnée. - Chrome vérifie que les nombres de la signature sont dans la plage, mais Firefox ne le vérifie pas.
- Pour contourner la validation par défaut de Chrome, le premier octet de chaque nombre est défini sur 0x7f.
Est-ce une faille de sécurité ?
- Non, cela ne permet pas d’accéder à n’importe quel périphérique USB.
- Cela ne fonctionne qu’avec des périphériques qui enfreignent volontairement les règles.
- Le modèle de sécurité des périphériques USB est discutable sur la plupart des plateformes.
- Il ne faut pas connecter à son ordinateur des périphériques inconnus et arbitraires.
1 commentaires
Avis Hacker News
Ce fil porte surtout sur WebUSB, et non sur l’OP. WebUSB est un hack génial
Firefox ne prend pas en charge la communication avec des périphériques USB arbitraires. En revanche, il prend en charge la communication USB avec les clés de sécurité U2F
Ceux qui utilisent WebUSB disent que c’est formidable, et ceux qui ne l’utilisent pas ne voient pas bien pourquoi c’est nécessaire
Personnaliser un clavier avec le firmware QMK/Via via WebUSB est un cauchemar
/dev/hidrawavant qu’il puisse interagir avec le firmwareUSB Serial est un excellent outil, et il existe désormais toute une liste d’outils qui utilisent le navigateur pour configurer des appareils
Pour les personnes qui flashent souvent des appareils, l’avantage est évident. Mais pour les utilisateurs ordinaires, ce n’est pas important
Il vaut peut-être mieux que les ports USB ne soient pas utilisés par du code exécuté dans le navigateur
Flasher GrapehenOS sur un téléphone Pixel a été l’une des expériences d’installation d’OS les plus agréables et les plus rapides
Chiffrer la clé privée avec une clé « maîtresse », puis renvoyer la clé privée chiffrée comme handle de clé
Il existe une controverse politique autour de WebUSB