
Uma análise e Prova de Conceito teórica para CVE-2019-19194
Esta é uma análise e Prova-de-Conceito teórica da CVE-2019-19194.
⚠️ Esta CVE foi encontrada por https://asset-group.github.io/disclosures/sweyntooth/
Este relatório descreve como a vulnerabilidade Zero LTK Initialisation (CVE-2019-19194) permite a um atacante o controle total da comunicação sobre aplicações Bluetooth Low Energy (BLE) ao ignorar o procedimento de emparelhamento Secure Connections.
Esta vulnerabilidade afeta produtos que utilizam implementações Telink SMP que suportam o procedimento de emparelhamento Secure Connections.
BLE é um sistema de comunicação por rádio de baixo consumo e curto alcance. Consiste em um conjunto de protocolos padronizados que fornecem conectividade remota e segurança entre dois dispositivos.
A pilha BLE é distribuída em dois blocos arquiteturais: Host e Controller.
A distribuição da pilha permite implementar cada bloco em componentes fisicamente separados.
Uma interface lógica padrão chamada Host Controller Interface (HCI) permite a comunicação entre os dois blocos.
Acima do bloco Host está a aplicação BLE.

A camada física opera na banda de rádio Industrial, Científica e Médica (ISM), no espectro de 2,4 GHz. Utiliza 40 canais: 3 canais de advertising e 37 canais de data.
A camada de enlace (LL) tem muitas responsabilidades que não serão descritas aqui. Ela é governada por uma máquina de estados que define papéis e estados importantes:
O protocolo de controle de enlace lógico e adaptação atua como uma camada de multiplexação de protocolos. Ele lida com fragmentação e recombinação de pacotes entre as camadas inferior e superior.
O Perfil de Acesso Genérico diz respeito à descoberta e conexão de dispositivos. Em outras palavras, o GAP define procedimentos para a transmissão de pacotes de anúncio e sua recepção através de scanning.
Uma vez estabelecida uma conexão entre dois dispositivos BLE, o GATT usa um modelo cliente/servidor para trocar dados entre os dois dispositivos. E tanto o cliente quanto o servidor usam o Protocolo de Atributo (ATT).
O SM suporta procedimentos relacionados à segurança, como pairing, bonding e key distribution. O emparelhamento de dispositivos é considerado a base da segurança Bluetooth: uma vez emparelhados, os dois dispositivos podem criptografar sua comunicação, autenticar um ao outro, ...
Entre os diferentes protocolos envolvidos na comunicação BLE, a CVE zero LTK installation ocorre durante o procedimento de emparelhamento, no modo Secure Connections.

O modo de emparelhamento Secure Connections é a "abordagem mais segura" e foi desenvolvido para resolver as fraquezas do modo Legacy. No entanto, a CVE zero LTK installation descobriu que implementações ruins do emparelhamento SC permitem ignorar a segurança.

O dispositivo central envia uma solicitação de emparelhamento e ambos os dispositivos trocam informações sobre suas capacidades e requisitos de segurança. Esta fase define o modo de emparelhamento.
Troca de chave pública: Uma troca de chaves públicas é iniciada pelo dispositivo central. Tanto o periférico quanto o central verificam se a chave recebida está na curva P-256.
Cálculo do DHKey: Cada dispositivo usa sua própria chave privada (SK) e a chave pública do outro dispositivo (PK) para calcular sua chave Diffie-Hellman (DHKey). Dessa forma, ambos os dispositivos possuem o mesmo valor de DHKey.
Central: DHKey = p256(SKc, PKp)
Peripheral: DHKey = p256(SKp, PKc)
Se a proteção MITM foi solicitada, um procedimento interativo ocorre para confirmar a autenticidade dos dispositivos de emparelhamento.
Cálculo da Long Term Key (LTK) e confirmação mútua: Os dispositivos autenticam um ao outro e calculam uma chave LTK. Uma chave de sessão é derivada da LTK para criptografar o enlace antes da Fase 3.
Através do enlace criptografado, os dispositivos podem distribuir chaves.
A causa raiz da zero LTK installation é que não há verificação do estado em que os dois dispositivos se encontram no procedimento de emparelhamento. Dessa forma, um dispositivo central atacante pode pular a etapa de geração de chaves e autenticação. Isso resulta em uma chave LTK definida como 0 no dispositivo periférico e, portanto, uma chave de sessão facilmente derivável.

⚠️ Esta é uma Prova-de-Conceito totalmente teórica, pois não consegui obter um pcap de descoberta BLE, anúncio ou procedimentos de emparelhamento, nem tinha um dispositivo BLE com implementação Telink SMP.