
Este repositório descreve uma vulnerabilidade que afeta o processo de emparelhamento baseado em código QR dos dispositivos IoT eWeLink (CVE-2020-12702).
O acesso Web irrestrito à chave de criptografia privada do dispositivo no modo de pareamento por código QR do aplicativo móvel eWeLink (até a versão 4.9.2 no Android e até a versão 4.9.1 no iOS) permite que um atacante fisicamente próximo intercepte as credenciais Wi-Fi e outras informações confidenciais monitorando o espectro Wi-Fi durante o processo de pareamento do dispositivo.
Do ponto de vista do usuário, o processo de pareamento baseado em código QR entre o dispositivo IoT e o Wi-Fi do usuário, por meio do aplicativo eWeLink, funciona da seguinte forma:
A etiqueta do código QR fornecida com um dispositivo compatível (um Sonoff Micro da ITEAD) codifica a seguinte URL https://api.coolkit.cn:8080/add-ap-device?brand=ewelink\&ssid=ITEAD-device_id, onde:
Durante a primeira etapa, o aplicativo se conecta ao endpoint eu-api.coolkit.cc:8080/api/user/fdbaseinfo?deviceid=device_id&other_parameters, do qual recupera a chave secreta do dispositivo, juntamente com outras informações do dispositivo. De acordo com o fluxo descrito acima, o serviço invocado pelo aplicativo retorna uma chave que é então usada para criptografar (usando o algoritmo AES) as credenciais Wi-Fi do usuário antes de enviá-las ao dispositivo IoT através da rede Wi-Fi softAP dedicada.
Uma mensagem JSON criptografada é enviada através de uma requisição HTTP POST para o servidor HTTP aberto do dispositivo.
A carga útil original segue a estrutura abaixo:
{"ssid" : "Test-Network", "password" : "Test-Password", "serverName" : "eu-disp.coolkit.cc", "port" : 443}
onde os parâmetros "Test-Network" e "Test-Password" são as credenciais de rede que escolhemos para a configuração do nosso ambiente de teste, e eu-disp.coolkit.cc é a plataforma em nuvem que atende a região europeia.
Realizamos diferentes testes e notamos que, durante o processo de pareamento, qualquer pessoa próxima ao soft AP Wi-Fi pode recuperar o parâmetro device_id, pois ele faz parte do SSID do softAP Wi-Fi do dispositivo. Para recuperar a chave secreta de um determinado dispositivo, você precisa apenas:
Como consequência, apenas sabendo o ID de um dispositivo, a chave secreta correspondente pode ser facilmente recuperada. Isso permite que um usuário malicioso próximo obtenha as credenciais Wi-Fi do usuário interceptando a mensagem de configuração transmitida pelo smartphone do usuário para o dispositivo IoT. Observe que, por padrão, o softAP Wi-Fi do dispositivo é aberto e desprotegido, portanto, a interceptação é possível.
Após recuperar a chave secreta dos serviços em nuvem (juntamente com o parâmetro device_id já conhecido), o usuário malicioso pode descriptografar a mensagem de configuração e extrair as credenciais Wi-Fi do usuário. Como consequência, toda a rede doméstica do cliente fica comprometida.
Esta vulnerabilidade foi testada com as versões Android (v4.11.0 e anteriores) e iOS (v4.9.1 e anteriores) do aplicativo móvel eWeLink.
[1] Daniele Granata, and Massimiliano Rak, and Giovanni Salzillo, and Umberto Barbato. "Segurança em Protocolos de Pareamento e Autenticação IoT, um Modelo de Ameaça e uma Análise de Caso de Estudo", ITASEC 2021.
MIT