
Un análisis y una prueba de concepto teórica para CVE-2019-19194
Este es un análisis y una Prueba de Concepto teórica de CVE-2019-19194.
⚠️ Este CVE fue encontrado por https://asset-group.github.io/disclosures/sweyntooth/
Este informe describe cómo la vulnerabilidad Zero LTK Initialisation (CVE-2019-19194) permite a un atacante el control total de la comunicación sobre una aplicación Bluetooth Low Energy (BLE) al omitir el procedimiento de emparejamiento Secure Connections.
Esta vulnerabilidad afecta a productos que utilizan las implementaciones SMP de Telink que admiten el procedimiento de emparejamiento Secure Connections.
BLE es un sistema de comunicación por radio de bajo consumo y corto alcance. Consiste en un conjunto de protocolos estandarizados que proporcionan conectividad remota y seguridad entre dos dispositivos.
La pila BLE se distribuye en dos bloques arquitectónicos: Host y Controller.
La distribución de la pila permite implementar cada bloque en componentes físicamente separados.
Una interfaz lógica estándar denominada Host Controller Interface (HCI) permite la comunicación entre los dos bloques.
Sobre el bloque Host se encuentra la aplicación BLE.

La capa física opera en la banda de radio Industrial, Científica y Médica (ISM), a lo largo del espectro de 2.4 GHz. Utiliza 40 canales: 3 canales de publicidad y 37 canales de datos.
La capa de enlace (LL) tiene muchas responsabilidades que no se describirán aquí. Está gobernada por una máquina de estados que define roles y estados importantes:
El protocolo de control y adaptación de enlace lógico actúa como una capa de multiplexación de protocolos. Gestiona la fragmentación y recombinación de paquetes entre las capas inferiores y superiores.
El Perfil de acceso genérico se ocupa del descubrimiento y la conexión de dispositivos. En otras palabras, GAP define procedimientos para la transmisión de paquetes de anuncio y su recepción mediante escaneo.
Una vez que se ha establecido una conexión entre dos dispositivos BLE, GATT utiliza un modelo cliente/servidor para intercambiar datos entre los dos dispositivos. Tanto el cliente como el servidor utilizan el Protocolo de Atributos (ATT).
El SM admite procedimientos relacionados con la seguridad, como el emparejamiento, la vinculación y la distribución de claves. El emparejamiento de dispositivos se considera la base de la seguridad de Bluetooth: una vez emparejados, los dos dispositivos pueden cifrar su comunicación, autenticarse entre sí, ...
Entre los diferentes protocolos involucrados en la comunicación BLE, la vulnerabilidad zero LTK installation ocurre durante el procedimiento de emparejamiento, en el modo Secure Connections.

El modo de emparejamiento Secure Connections es el «enfoque más seguro» y fue desarrollado para resolver las debilidades del modo Legacy. Sin embargo, la vulnerabilidad zero LTK installation encontró que las malas implementaciones del emparejamiento SC permiten omitir la seguridad.

El dispositivo central envía una solicitud de emparejamiento y ambos dispositivos intercambian sus capacidades y requisitos de seguridad. Esta fase define el modo de emparejamiento.
Intercambio de claves públicas: el dispositivo central inicia un intercambio de claves públicas. Tanto el periférico como el central verifican que la clave recibida se encuentra en la curva P-256.
Cálculo de la DHKey: cada dispositivo utiliza su propia clave privada (SK) y la clave pública del otro dispositivo (PK) para calcular su clave Diffie-Hellman (DHKey). De esta manera, ambos dispositivos poseen el mismo valor DHKey.
Central: DHKey = p256(SKc, PKp)
Peripheral: DHKey = p256(SKp, PKc)
Si se solicitó protección contra MITM, se lleva a cabo un procedimiento interactivo para confirmar la autenticidad de los dispositivos emparejados.
Cálculo de la Long Term Key (LTK) y confirmación mutua: los dispositivos se autentican entre sí y calculan una clave LTK. Una clave de sesión se deriva de la LTK para cifrar el enlace antes de la Fase 3.
A través del enlace cifrado, los dispositivos pueden distribuir claves.
La causa raíz de zero LTK installation es que no se verifica el estado en el que se encuentran los dos dispositivos en el procedimiento de emparejamiento. De este modo, un dispositivo central atacante puede omitir el paso de generación de claves y autenticación. Esto da como resultado una clave LTK establecida en 0 en el dispositivo periférico y, por lo tanto, una clave de sesión fácilmente derivable.

⚠️ Esta es una Prueba de Concepto totalmente teórica, ya que no pude obtener un pcap de los procedimientos de descubrimiento, anuncio o emparejamiento BLE, ni dispuse de un dispositivo BLE con la implementación SMP de Telink.