
aristotle (au/KDDI Xiaomi XIG04)au/KDDI Xiaomi "aristotle" (XIG04) के लिए Android 12 पर CVE-2026-43499 के माध्यम से स्थानीय विशेषाधिकार वृद्धि (tmp-root)। यह एक device-owner रूटिंग प्रिमिटिव है: यह आपके अपने फ़ोन को रूट करता है (जैसे कि जब डेवलपर विकल्प अगम्य हों तो ADB को फिर से सक्षम करने के लिए)।
यह अपस्ट्रीम इम्प्लीमेंटेशन का aristotle पोर्ट है:
https://github.com/x-spy/CVE-2026-43499-popsicle — जो Xiaomi 17 / Pro / Ultra (popsicle, Snapdragon, Android 16, kernel 6.12.23) को लक्षित करता है। एक्सप्लॉइट तकनीक का सारा श्रेय अपस्ट्रीम को जाता है; यह फ़ोर्क केवल इसे एक अलग डिवाइस और कर्नेल पीढ़ी के लिए पुनर्लक्षित करता है।
दायरा: आपका अपना XIG04 जो
Xiaomi/XIG04_jp_kdi/XIG04:12/SP1A.210812.016/V14.0.3.0.TMFJPKDचला रहा है। यह कोई सामान्य-उद्देश्यीय या रिमोट एक्सप्लॉइट नहीं है।
device : aristotle (au/KDDI XIG04), MediaTek, Android 12
kernel : 5.10.136-android12-9-00020-gc9f59ef34367-ab9585114 (VA=39, 4K pages, KASLR)
CVE-2026-43499 Linux कर्नेल Futex-PI पथ में एक use-after-free है:
futex_requeue() से proxy-lock रोलबैक के दौरान kernel/locking/rtmutex.c में remove_waiter() waiter::task के बजाय current पर कार्य करता है, जिससे एक डैंगलिंग pi_blocked_on रह जाता है। यह एक पुराना, लंबे समय से मौजूद बग है (प्रभावित Linux 2.6.39 – 6.18.x), इसलिए यहाँ मौजूद 5.10.136 कर्नेल दायरे में है (CONFIG_FUTEX_PI=y, CONFIG_RT_MUTEXES=y)। एक्सप्लॉइट एक डेटा-ओनली "direct-root" उपयोग करता है (cred → init_cred स्वैप करें, SELinux enforcing टॉगल करें) और डिवाइस की हार्डनिंग से बचने के लिए MTE टैग्स को ब्रूट-फोर्स करता है (KASAN_HW_TAGS, MTE, , )।
अपस्ट्रीम Snapdragon / Android 16 / kernel 6.12 को लक्षित करता है; aristotle MediaTek / Android 12 / kernel 5.10 है, इसलिए पोर्ट सब कुछ डिवाइस-विशिष्ट रूप से पुनः प्राप्त करता है:
rt_mutex_waiter पुराना फ्लैट 5.10 लेआउट है (कोई नेस्टेड rt_waiter_node नहीं, कोई wake_state/ww_ctx नहीं)। source/src/{slide,fops}.c और source/src/util.c में फेक-वेटर टेबल्स को 13 शब्दों से 10 में पुनर्निर्मित किया गया है।xbl_config नहीं। KASLR को गतिशील रूप से समाप्त किया जाता है (slide.c में कर्नेल info-leak); अपस्ट्रीम ने Qualcomm XBL से लिए गए दो भौतिक स्थिरांकों को एक स्थिर DRAM आधार (0x40000000, डिवाइस ट्री से) और रनटाइम memstart_addr / kimage_voffset द्वारा प्रतिस्थापित किया गया है।ARISTOTLE_CVE43499_PORT.md देखें।XIG04 के लिए एक मापा गया source/src/target.h पहले से ही कमिट किया गया है, इसलिए आप सीधे बिल्ड कर सकते हैं। बूट इमेज से इसे पुनः जनरेट करने के लिए, aristotle जनरेटर का उपयोग करें (कोई --xbl-config नहीं; यह गतिशील उपयोग के लिए memstart_addr/kimage_voffset RVA उत्सर्जित करता है):
python3 gen_aristotle_target.py \
--boot boot.img \
--pselect-shift 0 \
--loggers 0xffffffc012771380 \
--boot-id-data 0xffffffc012886cf8 \
--kernel-phys-load 0x40080000 \
-o source/src/target.h
(तीनों एंकर और kernel-phys-load वे मान हैं जो कमिट किए गए हेडर में भरे गए हैं; वे कैसे प्राप्त हुए, इसके लिए ARISTOTLE_CVE43499_PORT.md देखें।)
इसके लिए Python 3 और Android NDK (r29) चाहिए। API=31 आवश्यक है ताकि पेलोड Android 12 पर लोड हो:
make -C source clean preload API=31
यदि NDK स्वतः पता नहीं चलता है:
NDK_ROOT=/path/to/android-ndk make -C source clean preload API=31
अंतिम आर्टिफैक्ट:
source/build/bin/preload.so
adb push source/build/bin/preload.so /data/local/tmp/preload.so
adb shell 'chmod 0644 /data/local/tmp/preload.so'
adb shell 'LD_PRELOAD=/data/local/tmp/preload.so /system/bin/true'
adb shell '/data/local/tmp/su -c id'
सफलता पर:
uid=0(root) gid=0(root) groups=0(root) context=u:r:kernel:s0
direct-root-summary root=1 id=1 su=1/... selinux=1->0 uid=0 euid=0 gid=0 egid=0
preload.so लोड होने पर अपना स्वयं का su क्लाइंट + डेमन एम्बेड और सेल्फ-इंस्टॉल करता है, इसलिए किसी अलग su बाइनरी की आवश्यकता नहीं होती।
स्थिति: यह पोर्ट स्थैतिक विश्लेषण से कोड-पूर्ण है, लेकिन अभी हार्डवेयर पर मान्य नहीं किया गया है। पहले क्रैश ट्रिगर को मान्य करें, फिर अपने डिवाइस पर रूट करें। कर्नेल-विशिष्ट ट्यूनिंग आइटम (
MM_ORDER,P0_KERNEL_PHYS_LOAD, फ्लैट-वेटर व्यवहार)ARISTOTLE_CVE43499_PORT.mdमें सूचीबद्ध हैं।
CFISCS