
Dieses Repository beschreibt eine Sicherheitslücke, die den auf QR-Code basierenden Kopplungsprozess der eWeLink IoT-Geräte betrifft (CVE-2020-12702).
Uneingeschränkter Webzugriff auf den privaten Verschlüsselungsschlüssel des Geräts im QR-Code-Pairing-Modus der eWeLink Mobil-App (bis Version 4.9.2 auf Android und bis Version 4.9.1 auf iOS) ermöglicht einem physisch nahen Angreifer, WLAN-Anmeldedaten und andere sensible Informationen abzuhören, indem er das WLAN-Funkspektrum während eines Geräte-Pairing-Vorgangs überwacht.
Aus Benutzersicht läuft der QR-Code-basierte Pairing-Prozess zwischen dem IoT-Gerät und dem WLAN des Benutzers über die eWeLink-App wie folgt ab:
Das mit einem unterstützten Gerät (einem Sonoff Micro von ITEAD) gelieferte QR-Code-Etikett kodiert die folgende URL https://api.coolkit.cn:8080/add-ap-device?brand=ewelink\&ssid=ITEAD-device_id, wobei:
Im ersten Schritt verbindet sich die App mit dem Endpunkt eu-api.coolkit.cc:8080/api/user/fdbaseinfo?deviceid=device_id&other_parameters, von dem sie den geheimen Geräteschlüssel zusammen mit anderen Geräteinformationen abruft. Gemäß dem oben beschriebenen Ablauf gibt der von der App aufgerufene Dienst einen Schlüssel zurück, der dann verwendet wird, um die WLAN-Anmeldedaten des Benutzers (mittels des AES-Algorithmus) zu verschlüsseln, bevor sie über das dedizierte SoftAP-WLAN an das IoT-Gerät gesendet werden.
Eine verschlüsselte JSON-Nachricht wird per HTTP-POST-Anfrage an den offenen HTTP-Server des Geräts gesendet.
Die ursprüngliche Nutzlast hat die unten dargestellte Struktur:
{"ssid" : "Test-Network", "password" : "Test-Password", "serverName" : "eu-disp.coolkit.cc", "port" : 443}
wobei die Parameter „Test-Network“ und „Test-Password“ die Netzwerkanmeldedaten sind, die wir für unsere Testumgebung gewählt haben, und eu-disp.coolkit.cc die Cloud-Plattform für die europäische Region ist.
Wir haben verschiedene Tests durchgeführt und festgestellt, dass während des Pairing-Vorgangs jeder in der Nähe des WLAN-Soft-APs den Parameter device_id abrufen kann, da dieser Teil der SSID des Soft-AP-WLANs des Geräts ist. Um einen bestimmten geheimen Geräteschlüssel abzurufen, benötigt man lediglich:
Folglich kann allein durch Kenntnis einer Geräte-ID der entsprechende geheime Geräteschlüssel leicht abgerufen werden. Dies ermöglicht es einem nahen böswilligen Benutzer, die WLAN-Anmeldedaten des Benutzers abzugreifen, indem er die vom Smartphone des Benutzers an das IoT-Gerät gesendete Konfigurationsnachricht abhört. Beachten Sie, dass das Soft-AP-WLAN des Geräts standardmäßig offen und ungeschützt ist, sodass ein Abhören möglich ist.
Nachdem der geheime Schlüssel von den Cloud-Diensten abgerufen wurde (zusammen mit dem bereits bekannten Parameter device_id), könnte der böswillige Benutzer die Konfigurationsnachricht entschlüsseln und die WLAN-Anmeldedaten des Benutzers extrahieren. Infolgedessen ist das gesamte Heimnetzwerk des Kunden kompromittiert.
Diese Schwachstelle wurde mit den Android-Versionen (v4.11.0 und früher) und iOS-Versionen (v4.9.1 und früher) der eWeLink Mobil-App getestet.
[1] Daniele Granata, Massimiliano Rak, Giovanni Salzillo und Umberto Barbato. "Security in IoT Pairing & Authentication protocols, a Threat Model and a Case Study Analysis", ITASEC 2021.
MIT