Cómo hackear Firefox para resolver la falta de soporte de WebUSB
(github.com/ArcaneNibble)> "¡No necesitamos WebUSB!"
- Hay una forma en que una página web puede acceder a un dispositivo USB sin WebUSB. Además, el dispositivo puede diseñarse para evadir los requisitos de consentimiento del usuario.
Demo rápida
- Carga
u2f-hax.uf2en una Raspberry Pi Pico y luego cargaindex.htmldesde localhost u otro contexto seguro. - Los botones "On!" y "Off!" alternan el LED, y el estado del pin
GP22se actualiza periódicamente en la página.
¿Cómo es posible?
- La Pico está programada para emular un dongle U2F (llave física de seguridad de dos factores).
- En lugar de funciones de seguridad, se ocultan datos arbitrarios en el "key handle" y en la firma del mensaje
U2F_AUTHENTICATE. - Si el key handle empieza con 0xfeedface, la Pico "verifica" de inmediato la presencia del usuario y devuelve los datos.
¿Por qué es posible?
- Los key handles de U2F están diseñados como bloques opacos de datos que pertenecen al dongle de seguridad.
- Están diseñados para que un dongle de bajo costo pueda asociarse con muchos sitios web.
- El dongle guarda internamente una clave criptográfica "maestra" única y, durante el registro, genera y devuelve un nuevo par de claves pública/privada.
- Como el key handle se trata de forma opaca, puede ocultar datos arbitrarios.
Cómo devolver datos
- Se ocultan datos dentro de una firma ECDSA.
- La firma está compuesta por dos números (
r,s), y cada uno se calcula dentro de un rango específico. - Chrome verifica que los números de la firma estén dentro del rango, pero Firefox no lo verifica.
- Para evadir la validación predeterminada de Chrome, se establece el primer byte de cada número en 0x7f.
¿Es una vulnerabilidad de seguridad?
- No, y no permite acceder a dispositivos USB arbitrarios.
- Solo funciona con dispositivos diseñados intencionalmente para violar las reglas.
- El modelo de seguridad de los dispositivos USB es cuestionable en la mayoría de las plataformas.
- No deberías conectar dispositivos desconocidos y arbitrarios a tu computadora.
1 comentarios
Opiniones en Hacker News
Este hilo trata principalmente sobre WebUSB, no sobre el OP. WebUSB es un hack muy ingenioso
Firefox no soporta la comunicación con dispositivos USB arbitrarios. Sin embargo, sí soporta la comunicación USB con llaves de seguridad U2F
Quienes usan WebUSB dicen que es excelente, y quienes no lo usan no entienden por qué sería necesario
Personalizar teclados con firmware QMK/Via usando WebUSB es una pesadilla
/dev/hidrawantes de que el firmware interactúe con élsudoUSB Serial es una gran herramienta, y ahora hay una lista de herramientas para configurar dispositivos usando el navegador
Para quienes flashean dispositivos con frecuencia, la ventaja es clara. Pero para el usuario común no es importante
Quizá sea mejor que los puertos USB no se usen desde código basado en navegador
Flashear GrapehenOS en un teléfono Pixel fue una de las experiencias de instalación de sistema operativo más agradables y rápidas que he tenido
Se cifra la clave privada con una clave "maestra", y la clave privada cifrada se devuelve como key handle
Hay una discusión política relacionada con WebUSB