
PoC para CVE-2026-78997, um XSS Universal no UC Browser para Android. Inclui um construtor de URL elaborado, um oráculo de despacho de callback e hooks do Frida para observar a bridge vulnerável.
Material de PoC para CVE-2026-78997 — Universal Cross-Site Scripting no
UC Browser para Android (com.UCMobile.intl, versão 13.7.8.1314),
divulgado por Omri Inbar (Novee).
Um XSS refletido no domínio mtmsg.uc.cn, que está na lista de permissões da bridge, concede
acesso à bridge JavaScript privilegiada ucapi. A
API da bridge account.openLoginWindow armazena strings JavaScript controladas pelo atacante como callbacks de login/dismiss em memória nativa, onde
elas sobrevivem à navegação da página. Quando o usuário dispensa o diálogo de login
nativo sobre o site de destino, o callback é despachado com uma
verificação de URL vazia, e o navegador o executa com
WebView.evaluateJavascript() na origem de qualquer página carregada —
contornando a Same-Origin Policy.
Análise 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
Em uma build vulnerável: abra a URL elaborada, deixe-a navegar até o site vítima, então dispense o diálogo de login nativo (toque em uma opção de login e pressione X, ou feche-o de qualquer outra forma). O callback armazenado dispara na origem do site vítima.
O construtor de URL não realiza nenhuma E/S de rede. A reflexão em mtmsg.uc.cn
e o comportamento da bridge estão documentados na divulgação pública do pesquisador (referenciada abaixo). Teste apenas contra dispositivos e posições de rede
que você possui ou está explicitamente autorizado a testar. Acesso não autorizado
a sistemas de computador é ilegal na maioria das jurisdições.
| Arquivo | Propósito |
|---|
poc_url_builder.py | Monta a URL mtmsg.uc.cn elaborada exatamente como documentado (parâmetro email refletido, stage-2 em base64, registro de account.openLoginWindow, navegação). Presets: alert (demonstração do pesquisador), demo (inofensivo), exfil (template de coletor). Apenas monta uma string — não contata nenhum host. |
callback_oracle.py | Miniatura autocontida do mecanismo vulnerável de despacho de callback (armazenar → navegar → despachar com verificação de URL vazia). Execute com --fixed para ver o bloco de remediação vinculado à origem bloquear a mesma cadeia. |
frida_hooks.js | Hook do Frida em WebView.evaluateJavascript para observar o despacho no aplicativo real em hardware que você possui. |