
Android कर्नल एक्सप्लॉइट CVE-2026-43499 (Futex-PI use-after-free) के लिए जो Xiaomi XIG04 पर अस्थायी रूट प्राप्त करके ADB सक्षम करता है। इसमें स्वचालित पेलोड निर्माण और वन-टैप सक्रियण शामिल है।
एक न्यूनतम Android ऐप जो au/KDDI Xiaomi "aristotle" (XIG04, Android 12) पर ADB चालू करता है — इस डिवाइस के डेवलपर विकल्पों तक नहीं पहुँचा जा सकता — CVE-2026-43499 से प्राप्त अस्थायी रूट का उपयोग करके। यह KingRoot की ही श्रेणी का एक device-owner टूल है: यह एक सेटिंग बदलने के लिए आपके अपने फ़ोन को रूट करता है।
दायरा: आपका अपना XIG04 जिस पर
Xiaomi/XIG04_jp_kdi/XIG04:12/SP1A.210812.016/V14.0.3.0.TMFJPKDचल रहा है। यह कोई सामान्य-उद्देश्य या रिमोट exploit नहीं है।
एक बटन, एक काम:
preload.so) को APK से निकालकर ऐप के निजी filesDir में स्टेज करें, chmod 0700 करें।LD_PRELOAD के साथ एक अल्पकालिक /system/bin/true लॉन्च करके कर्नेल बग को ट्रिगर करें। पेलोड का ELF कंस्ट्रक्टर Futex-PI use-after-free को ट्रिगर करता है, 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 — Linux कर्नेल के Futex-PI पथ (kernel/locking/rtmutex.c, remove_waiter()) में एक use-after-free। aristotle का 5.10.136-android12 कर्नेल प्रभावित है (CONFIG_FUTEX_PI=y, CONFIG_RT_MUTEXES=y)। यह exploit एक केवल-डेटा "direct-root" (cred स्वैप करें, SELinux enforcing फ़्लिप करें) का उपयोग करता है और डिवाइस की हार्डनिंग से बचने के लिए MTE टैग्स को brute-force करता है। exploit का स्रोत और मापे गए aristotle ऑफसेट इस रिपॉजिटरी के exploit/ git सबमॉड्यूल में मौजूद हैं।
preload.so कमिट नहीं है। इसे exploit/ सबमॉड्यूल से तैयार किया जाता है और बिल्ड समय पर APK में एम्बेड किया जाता है:
exploit/ — git सबमॉड्यूल: CVE-2026-43499 aristotle exploit (preload.so बनाता है)।buildExploitSo (preBuild से जुड़ा हुआ) exploit का make ... API=31 चलाता है, फिर APK पैकेज होने से पहले परिणामी preload.so को app/src/main/assets/exploit/preload.so में कॉपी करता है।इसलिए एक सामान्य ./gradlew assembleDebug पेलोड बनाकर शिप कर देता है, बशर्ते Android NDK इंस्टॉल हो।
# 1. fetch the exploit submodule
git submodule update --init --recursive
# 2. install the Android NDK r29 (the exploit Makefile auto-detects it,
# or export ANDROID_NDK_ROOT), plus JDK 17 and Android SDK platform 34
# 3. build — auto-builds preload.so (API=31) and embeds it
./gradlew assembleDebug # -> app/build/outputs/apk/debug/app-debug.apk
NDK नहीं है / सिर्फ़ ऐप शेल चाहिए? पेलोड बिल्ड छोड़ दें (तब ऐप "exploit payload NOT deployed" रिपोर्ट करता है और रनटाइम पर कुछ भी नहीं बदलता):
./gradlew assembleDebug -PskipExploitBuild
Wrapper jar: gradle-wrapper.jar कमिट नहीं है। इसे gradle wrapper --gradle-version 8.2 से एक बार जनरेट करें, या सिस्टम Gradle से बिल्ड करें (CI सिस्टम Gradle का उपयोग करता है, इसलिए वहाँ wrapper jar की आवश्यकता नहीं है)।
.github/workflows/build-release.yml (GitHub Actions) हर push पर APK बनाता है और उसे app-debug.apk संलग्न करते हुए GitHub Release (टैग build-<run>) के रूप में प्रकाशित करता है। वर्कफ़्लो exploit सबमॉड्यूल को चेकआउट करता है, JDK 17 / Android SDK 34 / NDK r29 इंस्टॉल करता है, और gradle assembleDebug चलाता है, जो preload.so (API=31) बनाकर एम्बेड करता है।
एकमुश्त सेटअप: इस रिपॉजिटरी और exploit रिपॉजिटरी को सिबलिंग रिपॉजिटरी के रूप में एक ही GitHub owner को push करें, ताकि सबमॉड्यूल का सापेक्ष (relative) url हल हो सके। यदि exploit रिपॉजिटरी निजी है, तो repo-स्कोप वाला PAT सीक्रेट SUBMODULE_PAT के रूप में जोड़ें और वर्कफ़्लो में token: पंक्ति को अनकमेंट करें।
.
├── settings.gradle / build.gradle / gradle.properties Gradle wiring
├── gradlew(.bat) + gradle/wrapper/ wrapper
├── exploit/ git submodule (builds preload.so)
└── app/
├── build.gradle minSdk 31 / targetSdk 31 / compileSdk 34, arm64-v8a; buildExploitSo task
└── src/main/
├── AndroidManifest.xml single launcher Activity, no dangerous perms
├── java/.../MainActivity.kt button + scrolling log
├── java/.../ExploitRunner.kt stage → LD_PRELOAD → su -c "settings ..."
├── res/{layout,values}/ UI, strings, theme
└── assets/exploit/ preload.so is embedded here at build time
git submodule update --init --recursive चलाएँ, NDK इंस्टॉल करें, फिर ./gradlew assembleDebug चलाएँ।adb_enabled is now: 1 के साथ समाप्त होता है।adb_enabled आमतौर पर बना रहता है, और सक्षम होने के बाद adbd को रूट की आवश्यकता नहीं होती।LD_PRELOAD के माध्यम से ऐप-निजी फ़ाइल को निष्पादित करने से मना किया जा सकता है; exploit की अपनी रणनीति इसे संभालती है, और किसी भी अस्वीकृति को छिपाने के बजाय लॉग में दिखाया जाता है।