
Android용 UC Browser의 Universal XSS 취약점인 CVE-2026-78997에 대한 PoC입니다. 조작된 URL 빌더, 콜백 디스패치 오라클, 취약한 브리지를 관찰하기 위한 Frida 훅을 포함합니다.
CVE-2026-78997에 대한 PoC 자료 — UC 브라우저 for Android
(com.UCMobile.intl, 버전 13.7.8.1314)의 범용 크로스 사이트 스크립팅(Universal Cross-Site Scripting),
**Omri Inbar (Novee)**에 의해 공개됨.
브리지 화이트리스트에 등록된 도메인 mtmsg.uc.cn에서의 반사형 XSS는
권한이 있는 ucapi JavaScript 브리지에 대한 접근을 허용한다.
account.openLoginWindow 브리지 API는 공격자가 제어하는
JavaScript 문자열을 로그인/해제 콜백으로 네이티브 메모리에 저장하며,
이들은 페이지 탐색 후에도 유지된다. 사용자가 목적지 사이트 위에서
네이티브 로그인 대화상자를 해제하면, 콜백이 빈 URL 가드와 함께
디스패치되고, 브라우저는 로드된 페이지의 오리진에서
WebView.evaluateJavascript()로 이를 실행한다 —
동일 출처 정책(Same-Origin Policy)을 우회한다.
| 파일 | 용도 |
|---|---|
poc_url_builder.py | 문서화된 대로 조작된 mtmsg.uc.cn URL을 조립한다 (반사된 email 파라미터, base64 2단계, account.openLoginWindow 등록, 탐색). 프리셋: alert (연구자의 데모), demo (무해), exfil (수집기 템플릿). 문자열만 조립한다 — 어떤 호스트에도 접속하지 않는다. |
callback_oracle.py | 취약한 콜백 디스패치 메커니즘의 자체 포함된 축소판 (저장 → 탐색 → 빈 URL 가드로 디스패치). --fixed로 실행하면 오리진 바인딩된 수정 사항이 동일한 체인을 차단하는 것을 볼 수 있다. |
frida_hooks.js | 소유한 하드웨어에서 실제 앱의 디스패치를 관찰하기 위한 WebView.evaluateJavascript에 대한 Frida 훅. |
# 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
취약한 빌드에서: 조작된 URL을 열고, 피해자 사이트로 탐색하게 한 다음, 네이티브 로그인 대화상자를 해제한다 (로그인 옵션을 탭하고 X를 누르거나, 다른 방법으로 닫는다). 저장된 콜백이 피해자 사이트의 오리진에서 발동한다.
URL 빌더는 네트워크 I/O를 수행하지 않는다. mtmsg.uc.cn 반사와
브리지 동작은 연구자의 공개 공개 자료에 문서화되어 있다 (아래 참조).
소유하거나 명시적으로 테스트 권한을 부여받은 기기와 네트워크 위치에
대해서만 테스트하라. 컴퓨터 시스템에 대한 무단 접근은 대부분의
관할권에서 불법이다.