
PoC para CVE-2026-78997, un XSS Universal en UC Browser para Android. Incluye un generador de URL manipulado, un oráculo de despacho de callbacks y hooks de Frida para observar el bridge vulnerable.
Material PoC para CVE-2026-78997 — Universal Cross-Site Scripting en
UC Browser para Android (com.UCMobile.intl, versión 13.7.8.1314),
divulgado por Omri Inbar (Novee).
Un XSS reflejado en el dominio incluido en la lista blanca del puente mtmsg.uc.cn otorga
acceso al puente JavaScript privilegiado ucapi. La
API del puente account.openLoginWindow almacena cadenas JavaScript controladas por el atacante
como callbacks de inicio de sesión/descarte en memoria nativa, donde
sobreviven a la navegación de la página. Cuando el usuario descarta el diálogo de inicio de sesión
nativo sobre el sitio de destino, el callback se despacha con una
guarda de URL vacía, y el navegador lo ejecuta con
WebView.evaluateJavascript() en el origen de la página que esté cargada —
eludiendo la Política de Mismo Origen.
Análisis completo: 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
En una compilación vulnerable: abre la URL manipulada, deja que navegue al sitio víctima, luego descarta el diálogo de inicio de sesión nativo (toca una opción de inicio de sesión y presiona X, o ciérralo de cualquier otra forma). El callback almacenado se dispara en el origen del sitio víctima.
El constructor de URL no realiza E/S de red. La reflexión en
mtmsg.uc.cn y el comportamiento del puente están documentados en la divulgación
pública del investigador (referenciada abajo). Prueba solo contra dispositivos y posiciones
de red que poseas o estés explícitamente autorizado a probar. El acceso
no autorizado a sistemas informáticos es ilegal en la mayoría de las jurisdicciones.
| Archivo | Propósito |
|---|
poc_url_builder.py | Ensambla la URL de mtmsg.uc.cn manipulada exactamente como se documenta (parámetro email reflejado, etapa 2 en base64, registro de account.openLoginWindow, navegación). Presets: alert (demo del investigador), demo (inofensivo), exfil (plantilla de colector). Solo ensambla una cadena — no contacta ningún host. |
callback_oracle.py | Miniatura autocontenida del mecanismo vulnerable de despacho de callbacks (almacenar → navegar → despachar con guarda de URL vacía). Ejecutar con --fixed para ver el bloque de remediación vinculado al origen bloquear la misma cadena. |
frida_hooks.js | Hook de Frida en WebView.evaluateJavascript para observar el despacho en la aplicación real en hardware que poseas. |