
Use CVE-2026-43499 to disable SELinux on Android
Write-1-केवल निष्कर्षण JoinChang/ghostlock-oneplus का CVE-2026-43499 के लिए। यह समर्थित, कमजोर OnePlus कर्नेल पर लॉक किए गए बूटलोडर के साथ SELinux enforcing को अक्षम करता है, और कुछ और नहीं करता: कोई cred overwrite नहीं, कोई root shell नहीं, कोई KernelSU नहीं, कोई bootstrap नहीं, और कोई KASLR leak नहीं।
CVE-2026-43499 Linux कर्नेल का एक rtmutex use-after-free है, जो futex PI रीक्यू पथ में है। प्रॉक्सी-लॉक रोलबैक के दौरान, remove_waiter() वेटर के टास्क के बजाय current पर काम करता है, जिससे वेटर का pi_blocked_on पॉइंटर हैंग हो जाता है। इसे Linux 6.12.86 और नए 6.12 रिलीज़ में अपस्ट्रीम ठीक कर दिया गया है।
एक एकल child-node PI राइट:
fake_right = base + 0x100 -> byte0 = 0 (enforcing), byte1 = 1
यह पूर्ण एक्सप्लॉइट के हीप स्प्रे + pselect PI रूट का पुन: उपयोग करता है, लेकिन KASLR को बायपास करता है (kaslr_slide = 0)। यह अधिकतम 20 बार पुन: प्रयास करता है (प्रयासों के बीच स्लैब ड्रेनिंग के साथ) और एक बार /sys/fs/selinux/enforce 0 पढ़ने पर बाहर निकलता है।
साझा प्रिमिटिव (util.c heap spray, fops.c pselect route, kernelsnitch, और ऑफसेट तालिकाएँ) बनाए रखा गया है।
src/devices/offsets.h देखें, uname -r द्वारा कुंजीबद्ध:
6.12.38-android16-5-...-ab14275539-4k6.12.38-android16-5-...-ab14552068-4k6.12.23-android16-5-...-ab14541642-4k (केवल ऑफसेट, असत्यापित)make # uses /opt/android-ndk (or $ANDROID_NDK_HOME)
selinux_disabler उत्पन्न करता है, जो Android API 35 के लिए एक aarch64 PIE है।
adb push selinux_disabler /data/local/tmp/a/e && chmod 755 /data/local/tmp/a/e
adb shell /data/local/tmp/a/e
सत्यापित करें:
adb shell cat /sys/fs/selinux/enforce # -> 0
केवल boot.img की आवश्यकता है। अपस्ट्रीम परियोजना के टूल्स निर्देशिका में निष्कर्षण उपयोगिताओं का उपयोग करें, फिर src/devices/<device>/offsets.h के अंतर्गत एक प्रविष्टि जोड़ें और इसे src/devices/offsets.h से #include करें।
केवल अधिकृत सुरक्षा अनुसंधान और शैक्षिक उद्देश्यों के लिए।
| Removed | Reason |
|---|
slide.c | KASLR SLIDE लीक — आवश्यक नहीं (slide = 0) |
pipe.c | पाइप-आधारित भौतिक R/W — केवल CFI/root चरण द्वारा उपयोग किया गया |
root.c | cred पैचिंग / install_android_root — केवल Write 2 |
miniadb.c | बूटस्ट्रैप मिनी ADB क्लाइंट — उपयोग नहीं किया गया |
try_cfi_stage, install_child_root, repair/refresh/leak/restore हेल्पर्स (fops.c) | CFI / KASLR-leak / pipe-physrw चरण — कस्टम-राइट पथ पर कभी नहीं पहुंचा |
perf_find_task, spawn_child, write_root_script, run_exploit, run_bootstrap (main.c) | Write 2 (cred → init_cred), रूट शेल, KSU, बूटस्ट्रैप |