
A criptografia fraca no teclado sem fio Acer SK-9662 permite que um atacante em proximidade física tanto descriptografe as teclas digitadas sem fio quanto injete teclas arbitrárias sem fio.
Descobri uma criptografia fraca usada no protocolo sem fio do teclado sem fio Acer SK-9662 (FCC ID: H4IKB9662). Essa criptografia fraca permite que um invasor monitore e registre facilmente as teclas digitadas e também injete pressionamentos de teclas arbitrários.
O teclado usa um chip Texas Instruments CC2545, transmitindo dados usando o protocolo Enhanced Shockburst desenvolvido pela Nordic Semiconductors. O payload consiste em 12 bytes, o primeiro byte parece ser um valor constante (0x48 nos meus testes). O segundo byte é o byte modificador (ctrl, shift etc.), o terceiro e quarto bytes são as teclas de controle do consumidor e de energia. O quinto ao décimo bytes são os códigos das teclas. O décimo primeiro byte atua como uma soma de verificação e o décimo segundo byte é o número aleatório usado para criptografia.
A criptografia do payload começa com a geração de um byte aleatório a partir do ruído de rádio. Um byte diferente armazenado no firmware (keyvalue) é usado como chave para AES. Tanto a chave quanto o byte aleatório são preenchidos com zeros até 128 bits e enviados ao coprocessador AES no CC2545. O coprocessador AES é configurado para o modo CBC com um IV nulo. A saída do coprocessador AES será chamada de xorkey. Os primeiros onze bytes do payload são submetidos a XOR com os bytes correspondentes no xorkey. O byte aleatório é o último byte do payload para que o receptor possa descriptografar o payload.
A descriptografia do payload é semelhante à criptografia. O décimo segundo byte do payload (o valor aleatório) junto com o keyvalue (conhecido pelo receptor antecipadamente) é usado para gerar o xorkey e submetido a XOR com o payload criptografado.
Esse esquema de criptografia é facilmente contornado devido ao uso de apenas uma chave AES de um byte. Como a chave está limitada a apenas 256 valores possíveis, a chave pode ser facilmente forçada por força bruta em segundos. O script Python neste repositório mostra a descriptografia por força bruta de um pacote criptografado capturado.
Para que essa vulnerabilidade seja explorada, um invasor deve ter meios de capturar o tráfego de rádio de 2,4 GHz. Isso requer proximidade física próxima ao teclado alvo. No entanto, uma vez que um único pacote é capturado, a chave AES pode ser forçada por força bruta em segundos e a gravação de teclas em tempo real e a injeção de pressionamentos de teclas são possíveis, permitindo acesso ao computador da vítima. Uma ferramenta popular de hackeamento sem fio, jackit (https://github.com/insecurityofthings/jackit), pode ser estendida para suportar a captura e injeção de teclas em teclados SK-9662 próximos usando um dongle USB barato de 2,4 GHz.
O teclado SK-9662 é um produto obsoleto. Não existe um mecanismo de atualização para o teclado e os usuários devem interromper o uso do teclado vulnerável. A Acer recomenda a troca para um produto de teclado mais novo.