
Этот репозиторий описывает уязвимость, затрагивающую процесс сопряжения на основе QR-кода устройств Интернета вещей eWeLink (CVE-2020-12702).
Неограниченный веб-доступ к частному ключу шифрования устройства в режиме сопряжения по QR-коду в мобильном приложении eWeLink (до версии 4.9.2 на Android и до версии 4.9.1 на iOS) позволяет физически близко находящемуся злоумышленнику перехватывать учётные данные Wi-Fi и другую конфиденциальную информацию, наблюдая за Wi-Fi-спектром во время процесса сопряжения устройства.
С точки зрения пользователя, процесс сопряжения между IoT-устройством и Wi-Fi пользователя на основе QR-кода через приложение eWeLink выглядит следующим образом:
QR-код, прилагаемый к поддерживаемому устройству (Sonoff Micro от ITEAD), содержит следующий URL: https://api.coolkit.cn:8080/add-ap-device?brand=ewelink\&ssid=ITEAD-device_id, где:
На первом этапе приложение подключается к конечной точке eu-api.coolkit.cc:8080/api/user/fdbaseinfo?deviceid=device_id&other_parameters, из которой получает секретный ключ устройства и другую информацию об устройстве. Согласно описанному выше процессу, сервис, вызываемый приложением, возвращает ключ, который затем используется для шифрования (с помощью алгоритма AES) учётных данных Wi-Fi пользователя перед их отправкой на IoT-устройство через выделенную Wi-Fi сеть softAP.
Зашифрованное JSON-сообщение отправляется HTTP POST-запросом на открытый HTTP-сервер устройства.
Исходная полезная нагрузка имеет структуру, приведённую ниже:
{"ssid" : "Test-Network", "password" : "Test-Password", "serverName" : "eu-disp.coolkit.cc", "port" : 443}
где параметры "Test-Network" и "Test-Password" — это сетевые учётные данные, выбранные для нашей тестовой конфигурации, а eu-disp.coolkit.cc — облачная платформа, обслуживающая европейский регион.
Мы провели несколько тестов и заметили, что во время процесса сопряжения любой человек рядом с Wi-Fi soft AP может получить параметр device_id, поскольку он является частью SSID Wi-Fi softAP устройства. Чтобы получить конкретный секретный ключ устройства, достаточно:
Как следствие, просто зная идентификатор устройства, можно легко получить соответствующий секретный ключ устройства. Это позволяет находящемуся поблизости злоумышленнику завладеть учётными данными Wi-Fi пользователя, перехватив конфигурационное сообщение, передаваемое со смартфона пользователя на IoT-устройство. Обратите внимание, что Wi-Fi softAP устройства открыт и не защищён по умолчанию, поэтому перехват возможен.
Получив секретный ключ из облачных сервисов (вместе с уже известным параметром device_id), злоумышленник может расшифровать конфигурационное сообщение и извлечь учётные данные Wi-Fi пользователя. Как следствие, вся домашняя сеть пользователя оказывается скомпрометированной.
Данная уязвимость была протестирована на версиях мобильного приложения eWeLink для Android (v4.11.0 и более ранних) и iOS (v4.9.1 и более ранних).
[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