
このリポジトリは、eWeLink IoTデバイスのQRコードベースのペアリングプロセスに影響を与える脆弱性(CVE-2020-12702)について説明しています。
QRコードペアリングモードにおけるデバイスの秘密暗号鍵への無制限なWebアクセス(Android 4.9.2まで、iOS 4.9.1までのeWeLinkモバイルアプリケーション)により、物理的に近接した攻撃者がデバイスペアリングプロセス中にWi-Fiスペクトラムを監視することで、Wi-Fi認証情報やその他の機密情報を盗聴することが可能となります。
ユーザーの視点から見ると、eWeLinkアプリケーションを介したIoTデバイスとユーザーのWi-Fi間のQRコードベースのペアリングプロセスは、次のように動作します:
サポート対象デバイス(ITEADのSonoff Micro)に付属するQRコードラベルには、次のURLがエンコードされています: https://api.coolkit.cn:8080/add-ap-device?brand=ewelink\&ssid=ITEAD-device_id。ここで:
ssid パラメータは、ペアリングプロセス中にデバイスがブロードキャストするWi-Fiネットワークの名前です。device_id は、一意のデバイスIDを表す英数字の文字列で、eWeLinkアプリケーションがCoolkitリモートAPIに問い合わせてデバイスの秘密暗号鍵(前述の秘密鍵)を取得するために使用されます。最初のステップで、アプリケーションは eu-api.coolkit.cc:8080/api/user/fdbaseinfo?deviceid=device_id&other_parameters エンドポイントに接続し、そこからデバイスの秘密鍵やその他のデバイス情報を取得します。上記の流れに従って、アプリケーションが呼び出すサービスは鍵を返し、その鍵はユーザーのWi-Fi認証情報を(AESアルゴリズムを使用して)暗号化した後、専用のソフトAP Wi-Fiネットワークを通じてIoTデバイスに送信するために使用されます。暗号化されたJSONメッセージは、開放されたデバイスのHTTPサーバーへのHTTP POSTリクエストとして送信されます。元のペイロードは以下の構造に従います:
{"ssid" : "Test-Network", "password" : "Test-Password", "serverName" : "eu-disp.coolkit.cc", "port" : 443}
ここで、"Test-Network" と "Test-Password" パラメータはテストベッド構成用に選択したネットワーク認証情報であり、eu-disp.coolkit.cc は欧州地域にサービスを提供するクラウドプラットフォームです。
さまざまなテストを実施したところ、ペアリングプロセス中にWi-FiソフトAPの近くにいる誰でも device_id パラメータを取得できることに気づきました。これは、device_id がデバイスのソフトAP Wi-Fi SSIDの一部だからです。特定のデバイスの秘密鍵を取得するためには、以下のものだけが必要です:
device_id パラメータ。その結果、デバイスIDがわかれば、対応するデバイスの秘密鍵も簡単に取得できます。これにより、近くの悪意のあるユーザーが、ユーザーのスマートフォンからIoTデバイスに送信される構成メッセージを盗聴することで、ユーザーのWi-Fi認証情報を取得できるようになります。なお、デバイスのソフトAP Wi-Fiはデフォルトで開放され保護されていないため、盗聴が可能です。
クラウドサービスから秘密鍵を(すでに既知の device_id パラメータとともに)取得した後、悪意のあるユーザーは構成メッセージを復号し、ユーザーのWi-Fi認証情報を抽出できます。その結果、顧客の家庭内ネットワーク全体が危険にさらされます。
この脆弱性は、Android(v4.11.0以前)およびiOS(v4.9.1以前)の 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