
CVE-2021-27289: Bypass de Protección de Reproducción en dispositivos Ksix Zigbee
Hola a todos,
Supongo que lo profesional era titular este repositorio exactamente como está – claro, descriptivo y directo. Pero mientras lo preparaba, se me ocurrieron algunos otros títulos, como:
En fin, aquí está la historia.
Mientras me preparaba para divulgar una nueva vulnerabilidad, recordé algo en lo que había trabajado hace años: un fallo que encontré durante mi proyecto final de carrera mientras investigaba protocolos IoT como Thread y Zigbee. En ese momento, envié un informe a MITRE pero nunca recibí respuesta, así que supuse que simplemente lo habían ignorado.
Por curiosidad, volví a iniciar sesión en la antigua cuenta de Gmail que usé para el envío... y para mi sorpresa, en 2023 - tres años después - vi que efectivamente se había asignado un CVE.
CVE-2021-27289, vinculado a la vulnerabilidad que reporté como estudiante.
¿Por qué tardó tanto? Cuando contacté por primera vez con el proveedor, dijeron que no tenían suficiente personal para solucionarlo y siguieron repitiendo esa excusa. Le dije a MITRE que nadie parecía estar haciendo nada al respecto, así que supongo que esperaron, probablemente porque el problema nunca iba a ser parcheado de todos modos.
El fallo afectaba a varios dispositivos IoT basados en Zigbee fabricados por Ksix. El problema central era que el mecanismo de protección de reproducción, definido en la especificación Zigbee y aplicado mediante el contador de trama, no estaba implementado correctamente.
Debido a que los dispositivos no verificaban correctamente el contador de trama, un atacante podía comunicarse con la red y suplantar paquetes simplemente aumentando el número de secuencia a un valor superior al último visto por el dispositivo. Esto hacía posible reproducir mensajes capturados y lograr que fueran aceptados como válidos, resultando efectivamente en una omisión de autenticación.
Este repositorio incluye todo en lo que trabajé durante mi proyecto final:
Los dispositivos IoT Zigbee de Ksix se ven afectados por una vulnerabilidad de ataque de reproducción causada por una implementación incorrecta de los mecanismos de protección de reproducción de Zigbee.
Las siguientes versiones fueron probadas y encontradas vulnerables. No probé versiones posteriores, por lo que también podrían estar afectadas.
Estos productos ya no están disponibles en el sitio web del proveedor ni en plataformas como Amazon, y parecen haber sido descatalogados.
La pila Zigbee en los dispositivos afectados no aplica correctamente el mecanismo de protección de reproducción, que se basa en el campo de contador de trama definido en la especificación Zigbee. Este campo está diseñado para garantizar que los mensajes recibidos sean nuevos y no hayan sido reproducidos.
Sin embargo, en esta implementación, el contador de trama se ignora o no se valida correctamente. Como resultado, un atacante puede capturar un paquete Zigbee legítimo, aumentar su número de secuencia a un valor más alto (p. ej., 250) y reproducirlo en la red.
Dado que los dispositivos solo verifican el número de secuencia, aceptan el mensaje como nuevo, lo que permite comunicación suplantada y acciones no autorizadas sin que se rompa ningún mecanismo de autenticación o cifrado.
Dependiendo del tipo de dispositivo y de cómo esté integrado en el entorno, esto puede provocar que aparezcan alertas falsas o estados de sensor falsos en la aplicación que el usuario usó originalmente para configurar la red (p. ej., movimiento detectado, puerta abierta), aunque no haya ocurrido nada realmente. En configuraciones más complejas, incluso podría desestabilizar flujos de trabajo de automatización o desencadenar acciones no deseadas basadas en datos falsificados.