
PoC لـ CVE-2026-78997، وهو Universal XSS في UC Browser لنظام Android. يتضمن أداة بناء URL مصممة، وcallback-dispatch oracle، وخطافات Frida لمراقبة الجسر المصاب.
مواد إثبات المفهوم (PoC) الخاصة بـ CVE-2026-78997 — ثغرة البرمجة النصية عبر المواقع الشاملة (Universal Cross-Site Scripting) في
متصفح UC لأندرويد (com.UCMobile.intl، الإصدار 13.7.8.1314)،
والتي أُفصح عنها بواسطة Omri Inbar (Novee).
تتيح ثغرة XSS المنعكسة على النطاق المُدرج في القائمة البيضاء للجسر mtmsg.uc.cn
الوصول إلى جسر JavaScript المميّز ucapi. تقوم واجهة الجسر
account.openLoginWindow بتخزين سلاسل JavaScript التي يتحكم بها المهاجم كدوال استدعاء (callbacks) لتسجيل الدخول/الإغلاق في الذاكرة الأصلية (native memory)، حيث
تبقى حيّة بعد التنقل بين الصفحات. وعندما يُغلق المستخدم نافذة تسجيل الدخول الأصلية
فوق الموقع الهدف، يتم إرسال دالة الاستدعاء مع
حارس URL فارغ، وينفّذها المتصفح باستخدام
WebView.evaluateJavascript() في أصل (origin) أي صفحة محمّلة —
مما يتجاوز سياسة الأصل نفسه (Same-Origin Policy).
التحليل الكامل: 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
على إصدار مصاب: افتح الرابط المُصمَّم، واتركه يتنقل إلى الموقع الهدف، ثم أغلق نافذة تسجيل الدخول الأصلية (اضغط على خيار تسجيل الدخول ثم اضغط X، أو أغلقه بأي طريقة أخرى). ستُنفَّذ دالة الاستدعاء المخزّنة في أصل الموقع الهدف.
لا يقوم مُنشئ الرابط بأي إدخال/إخراج عبر الشبكة. إن انعكاس
mtmsg.uc.cn وسلوك الجسر موثّقان في الإفصاح العام
للباحث (المُشار إليه أدناه). اختبر فقط ضد الأجهزة ومواقع الشبكة
التي تملكها أو المصرّح لك صراحةً باختبارها. الوصول غير المصرّح به إلى أنظمة الحاسوب غير قانوني في معظم الولايات القضائية.
| الملف | الغرض |
|---|
poc_url_builder.py | يجمّع رابط mtmsg.uc.cn المُصمَّم تمامًا كما هو موثّق (معامل email المنعكس، المرحلة الثانية base64، تسجيل account.openLoginWindow، التنقل). الإعدادات المسبقة: alert (عرض الباحث)، demo (غير ضار)، exfil (قالب تجميع البيانات). يجمّع سلسلة نصية فقط — لا يتصل بأي مضيف. |
callback_oracle.py | نسخة مصغّرة قائمة بذاتها لآلية إرسال دالة الاستدعاء المصابة (تخزين → تنقل → إرسال مع حارس URL فارغ). شغّله مع --fixed لرؤية الإصلاح المرتبط بالأصل يمنع نفس السلسلة. |
frida_hooks.js | خطاف Frida على WebView.evaluateJavascript لمراقبة الإرسال في التطبيق الحقيقي على أجهزة تملكها. |