
Este repositorio describe una vulnerabilidad que afecta al proceso de emparejamiento basado en códigos QR de los dispositivos IoT de eWeLink (CVE-2020-12702).
El acceso web sin restricciones a la clave de cifrado privada del dispositivo en el modo de emparejamiento por código QR de la aplicación móvil eWeLink (hasta 4.9.2 en Android y hasta 4.9.1 en iOS) permite que un atacante físicamente cercano espíe las credenciales Wi-Fi y otra información sensible monitoreando el espectro Wi-Fi durante el proceso de emparejamiento del dispositivo.
Desde la perspectiva del usuario, el proceso de emparejamiento basado en código QR entre el dispositivo IoT y el WiFi del usuario, mediante la aplicación eWeLink, se desarrolla de la siguiente manera:
La etiqueta de código QR suministrada con un dispositivo compatible (un Sonoff Micro de ITEAD) codifica la siguiente URL https://api.coolkit.cn:8080/add-ap-device?brand=ewelink\&ssid=ITEAD-device_id, donde:
Durante el primer paso, la aplicación se conecta al endpoint eu-api.coolkit.cc:8080/api/user/fdbaseinfo?deviceid=device_id&other_parameters, del cual obtiene la clave secreta del dispositivo junto con otra información del dispositivo. Según el flujo descrito anteriormente, el servicio invocado por la aplicación devuelve una clave que luego se utiliza para cifrar (mediante el algoritmo AES) las credenciales WiFi del usuario antes de enviarlas al dispositivo IoT a través de la red WiFi softAP dedicada.
Se envía un mensaje JSON cifrado mediante una petición HTTP POST al servidor HTTP abierto del dispositivo.
La carga útil original sigue la estructura que se muestra a continuación:
{"ssid" : "Test-Network", "password" : "Test-Password", "serverName" : "eu-disp.coolkit.cc", "port" : 443}
donde los parámetros "Test-Network" y "Test-Password" son las credenciales de red que elegimos para la configuración de nuestro banco de pruebas, y eu-disp.coolkit.cc es la plataforma en la nube que presta servicio en la región europea.
Realizamos diferentes pruebas y observamos que, durante el proceso de emparejamiento, cualquier persona cerca del soft AP WiFi puede obtener el parámetro device_id, ya que forma parte del SSID de la WiFi softAP del dispositivo. Para obtener la clave secreta de un dispositivo en particular, solo necesitas:
En consecuencia, con solo conocer un ID de dispositivo, se puede obtener fácilmente la clave secreta correspondiente. Esto permite que un usuario malintencionado cercano capture las credenciales WiFi del usuario espiando el mensaje de configuración transmitido por el teléfono inteligente del usuario al dispositivo IoT. Tenga en cuenta que la WiFi softAP del dispositivo está abierta y sin protección por defecto, por lo que es posible espiar.
Después de obtener la clave secreta de los servicios en la nube (junto con el parámetro device_id ya conocido), el usuario malintencionado podría descifrar el mensaje de configuración y extraer las credenciales WiFi del usuario. Como consecuencia, toda la red doméstica del cliente queda comprometida.
Esta vulnerabilidad ha sido probada en las versiones para Android (v4.11.0 y anteriores) e iOS (v4.9.1 y anteriores) de la aplicación móvil eWeLink.
[1] Daniele Granata, and Massimiliano Rak, and Giovanni Salzillo, and Umberto Barbato. "Security in IoT Pairing & Authentication protocols, a Threat Model and a Case Study Analysis", ITASEC 2021.
MIT