
OPPO PCKM00 (SM6150) / Linux 4.14.180 के लिए CVE-2026-43499 GhostLock futex UAF LPE PoC
CVE-2026-43499 (GhostLock) — Linux कर्नेल futex प्रायोरिटी-इनहेरिटेंस
यूज़-आफ्टर-फ्री लोकल प्रिविलेज एस्केलेशन PoC, OPPO PCKM00
(OP4A57, SM6150, Android 11, कर्नेल 4.14.180-perf+) के लिए पोर्ट किया गया।
अस्वीकरण यह परियोजना केवल अधिकृत सुरक्षा अनुसंधान और शैक्षिक उद्देश्यों के लिए है। इसका उपयोग किसी ऐसे डिवाइस पर न करें जो आपका नहीं है या जिसके परीक्षण के लिए आप स्पष्ट रूप से अधिकृत नहीं हैं। एक्सप्लॉइट चलाने से कर्नेल क्रैश हो सकता है। लेखक किसी भी दुरुपयोग या क्षति के लिए कोई जिम्मेदारी नहीं लेता है।
यह परियोजना केवल अधिकृत सुरक्षा अनुसंधान और शैक्षिक उद्देश्यों के लिए है। कृपया ऐसे डिवाइस पर उपयोग न करें जो आपके स्वामित्व में नहीं है या जिसके लिए आप स्पष्ट रूप से अधिकृत नहीं हैं। एक्सप्लॉइट चलाने से कर्नेल क्रैश हो सकता है; लेखक किसी भी दुरुपयोग या हानि के लिए उत्तरदायी नहीं है।
CVE-2026-43499 (GhostLock) Linux कर्नेल futex प्रायोरिटी-इनहेरिटेंस कोड में एक
यूज़-आफ्टर-फ्री भेद्यता है। यह बग rt_mutex_start_proxy_lock() के प्रॉक्सी-लॉक
रोलबैक पथ में remove_waiter() के दुरुपयोग में निहित है। मुक्त किया गया
rt_mutex_waiter (कर्नेल स्टैक पर आवंटित) pselect() द्वारा कॉपी किए गए
हमलावर-नियंत्रित fd_set के रूप में पुनः व्याख्यायित किया जाता है, जो एक
आर्बिट्ररी-राइट प्रिमिटिव उत्पन्न करता है।
प्रभावित रेंज: Linux 4.x–6.x (2011 में पेश किया गया)। 4.14 श्रृंखला पूरी
तरह प्रभावित है। पूर्ण विश्लेषण और सत्यापित सिंबल ऑफसेट के लिए report.md
देखें।
futex requeue-pi UAF
└─> pselect fd_set stack copy (fake rt_mutex_waiter / fake task)
└─> arbitrary write (rt_mutex tree ops / sched_setattr)
└─> overwrite ashmem_fops -> configfs bin read/write
└─> pipe_buffer page rewrite (physical RW primitive)
└─> patch current task cred -> root
PoC पूरी तरह से LD_PRELOAD के माध्यम से यूज़रस्पेस में चलता है — डिवाइस
रीबूट की आवश्यकता नहीं है (जब तक कि कर्नेल पैनिक न करे)।
अन्य 4.14 डिवाइसों पर पोर्ट करना:
exploit/targets/oppo-pckm00/target.hकॉपी करें और अपनी कर्नेल इमेज से सिंबल ऑफसेट पुनः उत्पन्न करें (analysis/देखें)।
.
├── report.md # Full vulnerability analysis & verified offsets
├── exploit/
│ ├── Makefile # Build preload.so (Windows NDK / WSL)
│ ├── src/
│ │ ├── preload.c # LD_PRELOAD entry + forced disk logging + su
│ │ ├── main.c # Orchestration (waiter/owner/consumer threads)
│ │ ├── slide.c # KASLR leak (boot_id / nfulnl loggers)
│ │ ├── fops.c # ashmem_fops overwrite + configfs primitive
│ │ ├── pipe.c # pipe_buffer physrw primitive
│ │ ├── root.c # task walk + cred patch + seccomp/selinux
│ │ ├── util.c # kernelsnitch, skb page prep, kernel RW
│ │ ├── su_daemon.c # embedded su server (drop-in)
│ │ ├── su_blob.S # .incbin of su_daemon
│ │ └── wallpaper_blob.S # .incbin of wallpaper payload
│ ├── targets/oppo-pckm00/target.h # 4.14.180 symbol/struct offsets
│ └── assets/wallpaper.webp # embedded wallpaper payload
├── analysis/ # kernel image / kallsyms extraction scripts
└── LICENSE # Apache-2.0 (same as upstream GhostLock)
Android NDK r29 (aarch64-linux-android30-clang) की आवश्यकता है।
set NDK=C:\path\to\android-ndk-r29
make NDK=%NDK%
# put NDK at /opt/ndk/android-ndk-r29 (linux-x86_64 toolchain)
cd exploit
make wsl
# or directly:
bash ../analysis/build_preload.sh
आउटपुट: exploit/preload.so (64-बिट aarch64 ELF शेयर्ड ऑब्जेक्ट)।
बिल्ड su_daemon.c को एक PIE बाइनरी में भी संकलित करता है और इसे (वॉलपेपर
सहित) .S ब्लॉब्स के माध्यम से .so में एम्बेड करता है।
adb push exploit/preload.so /data/local/tmp/preload.so
adb shell LD_PRELOAD=/data/local/tmp/preload.so id
सफलता पर शेल uid=0(root) रिपोर्ट करता है। एक su डेमॉन
/apex/com.android.virt/bin/su पर इंस्टॉल होता है (फॉलबैक के रूप में
/data/local/tmp/su) और एक एम्बेडेड वॉलपेपर पर्सिस्टेंस/सत्यापन आर्टिफैक्ट के
रूप में लागू किया जाता है।
सभी pr_* डायग्नोस्टिक्स भी /sdcard/Download/log_<timestamp>.txt पर लिखे
जाते हैं (फॉलबैक के रूप में /data/local/tmp/log_<timestamp>.txt), हर लाइन पर
O_SYNC + fsync() के साथ, ताकि लॉग कर्नेल पैनिक / रीबूट के बाद भी बचे रहें —
इन्हें इस प्रकार खींचें:
adb pull /sdcard/Download/log_*.txt
boot_id/nfulnl लॉगर पथ (slide.c) के साथ-साथ एक ashmem_fops
सत्यापन पास (fops.c) के माध्यम से स्लाइड को लीक करता है।.read/.write का उपयोग करता है (read_iter/write_iter नहीं),ashmem_fops में show_fdinfo नहीं है,generic_file_splice_read, copy_splice_read की जगह लेता है,selinux_enforcing struct selinux_state के अंदर रहता है,IonStack/CVE-2026-43499), Apache-2.0।
https://github.com/NebuSec/CyberMeowfiaApache-2.0 — LICENSE देखें।
| फ़ील्ड | मान |
|---|
| डिवाइस | OPPO PCKM00 / OP4A57 |
| SoC | Qualcomm SM6150 |
| Android | 11 (RKQ1.200903.002) |
| सुरक्षा पैच | 2022-09-05 |
| कर्नेल | 4.14.180-perf+ (arm64, clang 10.0.7) |
| बिल्ड | OPPO/PCKM00/PCKM00:11/RKQ1.200903.002/1635513065:user/release-keys |
rt_mutex_waiterpipe_inode_infocredtask_struct.seccomp) बेस्ट-एफर्ट हैं; seccomp को
पैच करने में विफलता cred-ओवरराइट रूट को नहीं रोकती।