
CVE-2021-27289: Bypass de Proteção de Reprodução em dispositivos Ksix Zigbee
Olá a todos,
Suponho que a abordagem profissional fosse apenas intitular este repositório exatamente como está – claro, descritivo e direto ao ponto. Mas quando o estava a montar, alguns outros títulos me vieram à mente, como:
De qualquer forma, aqui está a história.
Enquanto me preparava para divulgar uma nova vulnerabilidade, lembrei-me de algo em que tinha trabalhado há anos - um bug que encontrei durante o meu projeto final de curso enquanto investigava protocolos IoT como Thread e Zigbee. Na altura, enviei um relatório à MITRE mas nunca obtive resposta, por isso pensei que tinha sido simplesmente ignorado.
Por curiosidade, entrei novamente na minha antiga conta do Gmail que usei para a submissão... e para minha surpresa, em 2023 - três anos depois - vi que um CVE tinha sido realmente atribuído.
CVE-2021-27289, ligado à vulnerabilidade que reportei como estudante.
Porque é que demorou tanto tempo? Quando contactei o fornecedor pela primeira vez, disseram que não tinham pessoal suficiente para o corrigir e repetiram essa desculpa. Informei a MITRE que ninguém parecia estar a fazer nada em relação ao problema, por isso acho que esperaram - provavelmente porque o problema nunca iria ser corrigido de qualquer forma.
O bug afetava vários dispositivos IoT baseados em Zigbee fabricados pela Ksix. O problema central era que o mecanismo de proteção contra reprodução, definido na especificação Zigbee e aplicado através do contador de quadros, não estava implementado corretamente.
Como os dispositivos não verificavam corretamente o contador de quadros, um invasor podia comunicar com a rede e falsificar pacotes simplesmente aumentando o número de sequência para um valor superior ao último visto pelo dispositivo. Isto tornava possível reproduzir mensagens capturadas e fazê-las ser aceites como válidas - resultando efetivamente numa bypass de autenticação.
Este repositório inclui tudo o que trabalhei durante o meu projeto final:
Os dispositivos IoT Zigbee da Ksix são afetados por uma vulnerabilidade de ataque de repetição causada pela implementação incorreta dos mecanismos de proteção contra repetição do Zigbee.
As seguintes versões foram testadas e consideradas vulneráveis. Não testei versões posteriores, por isso também podem estar afetadas.
Estes produtos já não estão disponíveis no site do fornecedor ou em plataformas como a Amazon, e parecem ter sido descontinuados.
A pilha Zigbee nos dispositivos afetados não aplica corretamente o mecanismo de proteção contra repetição, que depende do campo de contador de quadros definido na especificação Zigbee. Este campo destina-se a garantir que as mensagens recebidas são recentes e não foram repetidas.
No entanto, nesta implementação, o contador de quadros é ignorado ou não é validado corretamente. Como resultado, um invasor pode capturar um pacote Zigbee legítimo, aumentar o seu número de sequência para um valor superior (por exemplo, 250), e reproduzi-lo na rede.
Como os dispositivos apenas verificam o número de sequência, aceitam a mensagem como nova - permitindo comunicação falsificada e ações não autorizadas sem quebrar qualquer autenticação ou encriptação.
Dependendo do tipo de dispositivo e de como está integrado no ambiente, isto pode causar alertas falsos ou estados de sensor falsos a surgir na aplicação que o utilizador originalmente usou para configurar a rede (por exemplo, movimento detetado, porta aberta) - mesmo que nada tenha realmente acontecido. Em configurações mais complexas, pode até desestabilizar fluxos de trabalho de automação ou desencadear ações indesejadas com base em dados falsificados.