
PoC per CVE-2026-78997, un Universal XSS in UC Browser per Android. Include un generatore di URL craftato, un oracolo di callback-dispatch e hook Frida per osservare il bridge vulnerabile.
Materiale PoC per CVE-2026-78997 — Universal Cross-Site Scripting in
UC Browser per Android (com.UCMobile.intl, versione 13.7.8.1314),
divulgato da Omri Inbar (Novee).
Un XSS reflected sul dominio inserito nella whitelist del bridge mtmsg.uc.cn concede
l'accesso al bridge JavaScript privilegiato ucapi. L'API del bridge
account.openLoginWindow memorizza stringhe JavaScript controllate dall'attaccante come callback di login/dismiss nella memoria nativa, dove
sopravvivono alla navigazione della pagina. Quando l'utente chiude la finestra di dialogo nativa di login
sul sito di destinazione, la callback viene inviata con
una guardia URL vuota, e il browser la esegue con
WebView.evaluateJavascript() nell'origine di qualunque pagina sia caricata —
aggirando la Same-Origin Policy.
Analisi completa: https://www.hunt-benito.com/blog/the-callback-that-outlived-the-page-cve-2026-78997-uc-browser-android-universal-xss/
# 1. Build the crafted URL (string assembly only)
$ python3 poc_url_builder.py alert --victim https://www.google.com
# 2. Watch the mechanism (vulnerable vs. fixed dispatch)
$ python3 callback_oracle.py
$ python3 callback_oracle.py --fixed
# 3. Observe in the real app (device/emulator you own, vulnerable build)
$ frida -U -f com.UCMobile.intl -l frida_hooks.js --no-pause
Su una build vulnerabile: apri l'URL creato ad hoc, lascia che navighi verso il sito vittima, poi chiudi la finestra di dialogo nativa di login (tocca un'opzione di accesso e premi X, o chiudila in qualsiasi altro modo). La callback memorizzata viene attivata nell'origine del sito vittima.
Il generatore di URL non esegue alcun I/O di rete. Il reflection su mtmsg.uc.cn
e il comportamento del bridge sono documentati nella divulgazione pubblica del ricercatore (referenziata di seguito). Testa solo contro dispositivi e posizioni di rete
di tua proprietà o che sei esplicitamente autorizzato a testare. L'accesso non autorizzato
a sistemi informatici è illegale nella maggior parte delle giurisdizioni.
| File | Scopo |
|---|
poc_url_builder.py | Assembla l'URL mtmsg.uc.cn creato ad hoc esattamente come documentato (parametro email reflected, stage-2 in base64, registrazione account.openLoginWindow, navigazione). Preset: alert (demo del ricercatore), demo (innocuo), exfil (template di collector). Assembla solo una stringa — non contatta alcun host. |
callback_oracle.py | Miniatura autonoma del meccanismo vulnerabile di invio della callback (store → navigate → dispatch con guardia URL vuota). Esegui con --fixed per vedere il blocco di remediation vincolato all'origine fermare la stessa catena. |
frida_hooks.js | Hook Frida su WebView.evaluateJavascript per osservare l'invio nell'app reale su hardware di tua proprietà. |