
استغلال نواة أندرويد لـ CVE-2026-43499 (استخدام بعد التحرير في Futex-PI) يحصل على صلاحيات الجذر المؤقتة على Xiaomi XIG04 لتمكين ADB. يتضمن بناء الحمولة الآلي وتفعيل بنقرة واحدة.
تطبيق Android صغير يقوم بتشغيل ADB على au/KDDI Xiaomi "aristotle" (XIG04, Android 12) الذي لا يمكن الوصول إلى خيارات المطور فيه، وذلك باستخدام صلاحية مؤقتة تم الحصول عليها من CVE-2026-43499. إنها أداة مملوكة للجهاز في نفس فئة KingRoot: تقوم بتجذير هاتفك الخاص لتغيير إعداد.
النطاق: جهاز XIG04 الخاص بك الذي يعمل
Xiaomi/XIG04_jp_kdi/XIG04:12/SP1A.210812.016/V14.0.3.0.TMFJPKD.
ليس استغلالًا عامًا أو عن بُعد.
زر واحد، مهمة واحدة:
preload.so) من APK إلى filesDir الخاص بالتطبيق، مع chmod 0700./system/bin/true لفترة قصيرة مع LD_PRELOAD مشيرًا إلى تلك الحمولة. يقوم منشئ ELF الخاص بالحمولة بتشغيل استغلال use-after-free في Futex-PI، ويأخذ صلاحية مؤقتة (tmp-root)، ويقوم بتثبيت عميل su + خادم.su -c id والتحقق من uid=0.settings put global development_settings_enabled 1settings put global adb_enabled 1stop adbd; start adbd (الرجوع إلى setprop ctl.restart adbd إذا لزم الأمر)كل خطوة يتم عرضها في سجل على الشاشة.
CVE-2026-43499 — use-after-free في مسار Futex-PI في نواة لينكس (kernel/locking/rtmutex.c, remove_waiter()). نواة 5.10.136-android12 في aristotle متأثرة (CONFIG_FUTEX_PI=y, CONFIG_RT_MUTEXES=y). يستخدم الاستغلال نهج "جذر مباشر" قائم على البيانات فقط (تبديل cred، وإيقاف فرض SELinux) ويقوم بتجربة علامات MTE لاجتياز تحسينات الجهاز. مصدر الاستغلال وعناوين aristotle المقاسة موجودة في exploit/ git submodule لهذا المستودع.
preload.so غير مضمن في المستودع. يتم إنتاجه من الوحدة الفرعية exploit/ ويتم تضمينه في APK أثناء البناء:
exploit/ — وحدة فرعية git: استغلال CVE-2026-43499 لـ aristotle (يبني preload.so).buildExploitSo (متعلقة بـ preBuild) تقوم بتشغيل make ... API=31 في مجلد الاستغلال، ثم تنسخ preload.so الناتج إلى app/src/main/assets/exploit/preload.so قبل تعبئة APK.وبالتالي، فإن تشغيل ./gradlew assembleDebug بشكل عادي سيبني الحمولة ويشحنها، بشرط تثبيت Android NDK.
# 1. جلب الوحدة الفرعية للاستغلال
git submodule update --init --recursive
# 2. تثبيت Android NDK r29 (يكتشفه Makefile تلقائيًا،
# أو قم بتعيين ANDROID_NDK_ROOT)، بالإضافة إلى JDK 17 و Android SDK platform 34
# 3. بناء — يقوم تلقائيًا ببناء preload.so (API=31) وتضمينه
./gradlew assembleDebug # -> app/build/outputs/apk/debug/app-debug.apk
لا يوجد NDK / تريد فقط هيكل التطبيق؟ تخطي بناء الحمولة (ثم يقوم التطبيق بالإبلاغ عن "لم يتم نشر حمولة الاستغلال" ولا يغير شيئًا أثناء التشغيل):
./gradlew assembleDebug -PskipExploitBuild
جرة الغلاف: gradle-wrapper.jar غير مضمن. قم بإنشائها مرة واحدة باستخدام gradle wrapper --gradle-version 8.2، أو قم بالبناء باستخدام Gradle النظام (يستخدم CI Gradle النظام، لذا لا حاجة لجرة الغلاف هناك).
.github/workflows/build-release.yml (GitHub Actions) يقوم ببناء APK في كل دفعة وينشره كـ إصدار GitHub (علامة build-<run>)، مع إرفاق app-debug.apk. تتحقق سير العمل من الوحدة الفرعية exploit، وتثبت JDK 17 / Android SDK 34 / NDK r29، وتشغل gradle assembleDebug، الذي يبني ويضمن preload.so (API=31).
إعداد لمرة واحدة: ادفع هذا المستودع ومستودع الاستغلال إلى نفس مالك GitHub كمستودعات شقيقة، بحيث يتم حل عنوان url النسبي للوحدة الفرعية. إذا كان مستودع الاستغلال خاصًا، أضف PAT بنطاق repo كسر SUBMODULE_PAT وأزل التعليق عن سطر token: في سير العمل.
.
├── settings.gradle / build.gradle / gradle.properties توصيلات Gradle
├── gradlew(.bat) + gradle/wrapper/ الغلاف
├── exploit/ وحدة فرعية git (تبني preload.so)
└── app/
├── build.gradle minSdk 31 / targetSdk 31 / compileSdk 34, arm64-v8a; مهمة buildExploitSo
└── src/main/
├── AndroidManifest.xml نشاط إطلاق واحد، لا أذونات خطيرة
├── java/.../MainActivity.kt زر + سجل قابل للتمرير
├── java/.../ExploitRunner.kt تجهيز → LD_PRELOAD → su -c "settings ..."
├── res/{layout,values}/ واجهة المستخدم، النصوص، السمة
└── assets/exploit/ يتم تضمين preload.so هنا أثناء البناء
git submodule update --init --recursive، قم بتثبيت NDK، ثم ./gradlew assembleDebug.adb_enabled is now: 1.adb_enabled في الإعدادات العامة، ولا يحتاج adbd إلى الجذر بعد التمكين.LD_PRELOAD اعتمادًا على مجال التطبيق؛ تتعامل استراتيجية الاستغلال نفسها مع هذا، ويتم عرض أي رفض في السجل بدلاً من إخفائه.