Como hackear o Firefox para contornar a falta de suporte ao WebUSB
(github.com/ArcaneNibble)> "Nós não precisamos de WebUSB!"
- Existe uma forma de uma página web acessar dispositivos USB sem WebUSB. Além disso, o dispositivo pode ser projetado para contornar os requisitos de consentimento do usuário.
Demonstração rápida
- Carregue
u2f-hax.uf2em um Raspberry Pi Pico e abraindex.htmlem localhost ou em outro contexto seguro. - Os botões "On!" e "Off!" alternam o LED, e o estado do pino
GP22é atualizado periodicamente na página.
Como isso é possível?
- O Pico é programado para emular um dongle U2F (chave física de segurança de dois fatores).
- Em vez de recursos de segurança, dados arbitrários ficam escondidos no "key handle" e na assinatura da mensagem
U2F_AUTHENTICATE. - Se o key handle começar com 0xfeedface, o Pico imediatamente "confirma" a presença do usuário e retorna os dados.
Por que isso é possível?
- Os key handles do U2F foram projetados como blocos opacos de dados que pertencem ao dongle de segurança.
- Eles foram projetados para permitir que dongles de baixo custo sejam associados a muitos sites.
- O dongle armazena internamente uma chave criptográfica "mestra" exclusiva e, durante o registro, gera e retorna um novo par de chaves pública/privada.
- Como os key handles são tratados de forma opaca, é possível esconder dados arbitrários neles.
Como os dados são retornados
- Os dados são escondidos em uma assinatura ECDSA.
- A assinatura é composta por dois números (
r,s), e cada um deles é calculado dentro de um intervalo específico. - O Chrome verifica se os números da assinatura estão dentro do intervalo, mas o Firefox não faz essa verificação.
- Para contornar a validação padrão do Chrome, o primeiro byte de cada número é definido como 0x7f.
Isso é uma vulnerabilidade de segurança?
- Não, e não permite acessar dispositivos USB arbitrários.
- Só funciona com dispositivos que violam deliberadamente as regras.
- O modelo de segurança de dispositivos USB é questionável na maioria das plataformas.
- Você não deve conectar dispositivos desconhecidos e arbitrários ao seu computador.
1 comentários
Comentários no Hacker News
Este tópico é principalmente sobre WebUSB, não sobre o OP. WebUSB é um hack genial
O Firefox não oferece suporte à comunicação com dispositivos USB arbitrários. Porém, oferece suporte à comunicação USB com chaves de segurança U2F
Quem usa WebUSB diz que ele é excelente, e quem não usa fica confuso sobre por que ele seria necessário
Personalizar teclados com firmware QMK/Via via WebUSB é um pesadelo
USB Serial é uma ferramenta excelente, e agora existe uma lista de ferramentas que usam o navegador para configurar dispositivos
Para quem grava firmware em dispositivos com frequência, a vantagem é clara. Mas, para usuários comuns, isso não é importante
Talvez seja melhor que portas USB não sejam usadas por código baseado em navegador
Fazer flash do GrapehenOS em um telefone Pixel foi uma das experiências mais agradáveis e rápidas de instalação de sistema operacional que já tive
Criptografe a chave privada com uma chave "mestra" e retorne a chave privada criptografada como identificador de chave
Há uma discussão política relacionada ao WebUSB