
PoC pour CVE-2026-78997, un XSS universel dans UC Browser pour Android. Comprend un générateur d'URL conçu, un oracle de répartition de rappels et des hooks Frida pour observer le pont vulnérable.
Matériel PoC pour CVE-2026-78997 — Universal Cross-Site Scripting dans
UC Browser pour Android (com.UCMobile.intl, version 13.7.8.1314),
divulgué par Omri Inbar (Novee).
Un XSS réfléchi sur le domaine whitelisté pour le bridge mtmsg.uc.cn donne
accès au bridge JavaScript privilégié ucapi. L'API de bridge
account.openLoginWindow stocke des chaînes JavaScript contrôlées par
l'attaquant en tant que callbacks de connexion/rejet dans la mémoire native,
où elles survivent à la navigation de page. Lorsque l'utilisateur rejette la
boîte de dialogue de connexion native par-dessus le site de destination, le
callback est déclenché avec une garde d'URL vide, et le navigateur
l'exécute avec WebView.evaluateJavascript() dans l'origine de la page
chargée — contournant ainsi la Same-Origin Policy.
Analyse complète : 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
Sur une version vulnérable : ouvrez l'URL forgée, laissez-la naviguer vers le site victime, puis rejetez la boîte de dialogue de connexion native (appuyez sur une option de connexion et appuyez sur X, ou fermez-la d'une autre manière). Le callback stocké se déclenche dans l'origine du site victime.
Le générateur d'URL n'effectue aucune E/S réseau. La réflexion sur
mtmsg.uc.cn et le comportement du bridge sont documentés dans la
divulgation publique du chercheur (référencée ci-dessous). Ne testez que
contre des appareils et des positions réseau que vous possédez ou pour
lesquels vous êtes explicitement autorisé à tester. L'accès non autorisé à
des systèmes informatiques est illégal dans la plupart des juridictions.
| Fichier | Objectif |
|---|
poc_url_builder.py | Assemble l'URL mtmsg.uc.cn forgée exactement comme documenté (paramètre email réfléchi, stage-2 en base64, enregistrement account.openLoginWindow, navigation). Préréglages : alert (démo du chercheur), demo (inoffensif), exfil (modèle de collecteur). Assemble uniquement une chaîne — ne contacte aucun hôte. |
callback_oracle.py | Miniature autonome du mécanisme vulnérable de déclenchement de callback (stockage → navigation → déclenchement avec garde d'URL vide). Exécuter avec --fixed pour voir le correctif lié à l'origine bloquer la même chaîne. |
frida_hooks.js | Hook Frida sur WebView.evaluateJavascript pour observer le déclenchement dans l'application réelle sur du matériel que vous possédez. |