
Questo repository descrive una vulnerabilità che riguarda il processo di associazione basato su codice QR dei dispositivi IoT eWeLink (CVE-2020-12702).
L'accesso Web senza restrizioni alla chiave di crittografia privata del dispositivo nella modalità di pairing tramite codice QR nell'applicazione mobile eWeLink (fino alla versione 4.9.2 su Android e fino alla 4.9.1 su iOS) consente a un attaccante fisicamente vicino di intercettare le credenziali Wi-Fi e altre informazioni sensibili monitorando lo spettro Wi-Fi durante il processo di pairing del dispositivo.
Dal punto di vista dell'utente, il processo di pairing basato su codice QR tra il dispositivo IoT e la rete WiFi dell'utente, tramite l'applicazione eWeLink, funziona come segue:
L'etichetta con codice QR fornita con un dispositivo supportato (un Sonoff Micro di ITEAD) codifica il seguente URL https://api.coolkit.cn:8080/add-ap-device?brand=ewelink\&ssid=ITEAD-device_id, dove:
Durante il primo passaggio, l'applicazione si connette all'endpoint eu-api.coolkit.cc:8080/api/user/fdbaseinfo?deviceid=device_id&other_parameters, dal quale recupera la chiave segreta del dispositivo, insieme ad altre informazioni sul dispositivo. Secondo il flusso sopra descritto, il servizio invocato dall'applicazione restituisce una chiave che viene poi usata per crittografare (usando l'algoritmo AES) le credenziali WiFi dell'utente prima di inviarle al dispositivo IoT tramite la rete WiFi softAP dedicata.
Un messaggio JSON crittografato viene inviato tramite una richiesta http post al server http aperto del dispositivo.
Il payload originale segue la struttura riportata di seguito:
{"ssid" : "Test-Network", "password" : "Test-Password", "serverName" : "eu-disp.coolkit.cc", "port" : 443}
dove i parametri "Test-Network" e "Test-Password" sono le credenziali di rete che abbiamo scelto per la nostra configurazione di test, ed eu-disp.coolkit.cc è la piattaforma cloud che serve la regione europea.
Abbiamo eseguito diversi test e abbiamo notato che durante il processo di pairing chiunque si trovi vicino alla rete soft AP WiFi può recuperare il parametro device_id, poiché fa parte dell'SSID WiFi softAP del dispositivo. Per recuperare una specifica chiave segreta del dispositivo è sufficiente:
Di conseguenza, semplicemente conoscendo un device id, la corrispondente chiave segreta del dispositivo può essere facilmente recuperata. Ciò consente a un utente malintenzionato nelle vicinanze di impossessarsi delle credenziali WiFi dell'utente intercettando il messaggio di configurazione trasmesso dallo smartphone dell'utente al dispositivo IoT. Si noti che la rete WiFi softAP del dispositivo è aperta e non protetta per impostazione predefinita, quindi l'intercettazione è possibile.
Dopo aver recuperato la chiave segreta dai servizi cloud (insieme al già noto parametro device_id), l'utente malintenzionato potrebbe decrittografare il messaggio di configurazione ed estrarre le credenziali WiFi dell'utente. Di conseguenza, l'intera rete domestica del cliente viene compromessa.
Questa vulnerabilità è stata testata con le versioni Android (v4.11.0 e precedenti) e iOS (v4.9.1 e precedenti) dell'applicazione mobile 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