O padrão Webusb é certamente controverso. Muitos consideram um risco de segurança e, até o momento, apenas os navegadores baseados em cromo o sustentam. Mas há uma solução alternativa que, ironicamente, deve aumentar a segurança. O padrão de 2º fator universal adjacente (U2F) também adiciona suporte USB (limitado) aos navegadores. Claro, isso se destina apenas a apoiar dongles USB U2F para fins de autenticação de dois fatores, mas como [ArcaneNibble] Demonstra usando firmware compatível com U2F em um Raspberry Pi RP2040, seqüestrando o U2f carga útil, esta API pode ser usada para fornecer funcionalidade do tipo Webusb.
A demonstração fornecida envolve piscar um RP2040 (por exemplo, placa pico) com o u2f-hax.u2f
firmware e carregando o index.html
página do localhost ou um contexto seguro semelhante. Depois disso, os botões na página do navegador podem ser usados para alternar ou desativar um LED na placa Pico. Você também pode ler uma entrada de volta do RP2040.
Esse feito é possível pela natureza opaca da alça de chave U2F, o que significa que tudo pode ser colocado nessa bolha. Isso torna o SNAP passar dados do dongle U2F para o host. Para os inversos, as coisas ficam um pouco mais complicadas. Aqui, a assinatura da ECDSA é manipulada dentro do ASN.1 que é devolvido ao dongle. Como o Firefox não executa a validação de assinatura (e o Chrome só faz uma verificação de intervalo), isso funciona. O MCU também confirma a presença do usuário de confirmação automática, tendo a alça de chave começar com oxfeedface
então o dispositivo funciona sem interação do usuário. No entanto, você parece ter um pop -up irritante que desaparece imediatamente.
Obviamente, isso só funciona se você criar um dispositivo USB especial para esse fim. Isso significa que seus dispositivos USB normais ainda estão seguros. Embora saibamos que pode ser um risco de segurança, você pode fazer algumas coisas legais com o Webusb. Vimos alguns projetos que o usam.