अपडेट पर वापस जाएँ
UpdatedAug 8, 2026

cve-2026-43499 — Updated!

PD2229B के लिए 43499(ghostlock) संभाव्यता अध्ययन

साझा करें

GhostLock का PD2229 (SM8475, 5.10.233 GKI) पर शोषण विफलता सारांश

一、भेद्यता और डिवाइस तथ्य

1.1 CVE-2026-43499 (GhostLock) मूल जानकारी

आइटममान
भेद्यता प्रकारrt_mutex / futex PI पथ में स्टैक-आधारित Use-After-Free
परिचय संस्करणLinux 2.6.39-rc1 (मई 2011, commit 8161239a8bcc)
फिक्स संस्करणमुख्यलाइन 7.1 (commit 3bfdc63936dd), स्थिर शाखाएँ: 6.1.175 / 6.6.140 / 6.12.86 / 6.18.27 / 7.0.4
पूर्वापेक्षाCONFIG_FUTEX_PI=y (मुख्यधारा कर्नेल में डिफ़ॉल्ट रूप से सक्षम)
CVSS7.8 High
शोषण स्थिरताNebuSec मूल श्रृंखला 97%, लगभग 5 सेकंड में root
kernelCTF इनाम$92,337 USD

प्रभावित कर्नेल रेंज:

  • 2.6.39 ≤ Linux < 6.1.175 ✅ प्रभावित
  • 6.2 ≤ Linux < 6.6.140 ✅ प्रभावित
  • 6.7 ≤ Linux < 6.12.86 ✅ प्रभावित
  • 6.13 ≤ Linux < 6.18.27 ✅ प्रभावित
  • 6.19 ≤ Linux < 7.0.4 ✅ प्रभावित
  • Android GKI 5.10 किसी भी फिक्स शाखा में नहीं है → PD2229 का 5.10.233 सैद्धांतिक रूप से प्रभावित

1.2 PD2229 डिवाइस वास्तविक परीक्षण

आइटममान
SoCQualcomm SM8475 (Snapdragon 8 Gen 1 Plus)
कर्नेल संस्करण5.10.233-gki-g6e61de9f5b58 #1 SMP PREEMPT (नवंबर 24, 2025)
Android संस्करण15 (OriginOS 5)
संकलन समय2025/11/25
Android पैच2025/11/01
CONFIG_FUTEX_PIy ✅
CONFIG_UNMAP_KERNEL_AT_EL0y (KPTI सक्षम)
kptr_restrictenforced
CONFIG_IO_URINGy ✅ (vmlinux प्रतीक द्वारा पुष्टि, और seccomp io_uring_setup को इंटरसेप्ट नहीं करता)

二、आदर्श शोषण श्रृंखला बनाम PD2229 वास्तविक प्रगति

2.1 NebuSec मूल श्रृंखला (x86_64 / Pixel 10 सफल)

1. KASLR बाईपास        → prefetch timing / PR_SET_MM_MAP auxv
2. UAF ट्रिगर          → तीन-थ्रेड PI निर्भरता डेडलॉक → FUTEX_CMP_REQUEUE_PI -EDEADLK लौटाता है
3. स्टैक पुनर्प्राप्ति    → PR_SET_MM_MAP auxv को waiter स्टैक फ्रेम में कॉपी करता है
4. rb_erase प्रतिबंधित लेखन   → inet6_protos[IPPROTO_UDP] को ओवरराइट करता है
5. CEA + ROP         → नियंत्रण प्रवाह अपहरण
6. core_pattern फ्लिप → root shell (97% सफलता दर)

2.2 PD2229 प्रत्येक चरण की वास्तविक प्रगति

चरणस्थितिविवरण
1. KASLR बाईपासलागूperf_event_open + callchain सैंपलिंग साइड-चैनल (OPPO Find X6 Pro 5.15.149 अनुकूलन विधि के समान)
2. UAF ट्रिगरलागूतीन-थ्रेड PI डेडलॉक सफल, FUTEX_CMP_REQUEUE_PI -EDEADLK लौटाता है
3. स्टैक पुनर्प्राप्ति प्रिमिटिवआर्किटेक्चरल विफलतासभी ज्ञात syscall के स्टैक फ्रेम waiter के साथ ओवरलैप नहीं होते (धारा 3 देखें)
4. rb_erase प्रतिबंधित लेखन❌ अवरुद्धपूर्वापेक्षा पूरी नहीं हुई
5. inet6_protos ओवरराइट❌ शुरू नहींचरण 4 पर निर्भर
6. ROP / नियंत्रण प्रवाह अपहरण❌ शुरू नहींचरण 5 पर निर्भर
7. root shell❌ शुरू नहींचरण 6 पर निर्भर

三、स्टैक पुनर्प्राप्ति प्रिमिटिव संपूर्ण परीक्षण परिणाम (PD2229 वास्तविक परीक्षण)

3.1 स्टैक फ्रेम लेआउट प्रमुख गणना

futex पथ कुल गहराई:
  __arm64_sys_futex    0x90
  + do_futex           0xc0
  + futex_wait_requeue_pi  0x1b0
  = 0x300
waiter स्थिति = SYS_SP - 0x300 + 0x20 = SYS_SP - 0x2e0

pselect पथ:
  core_sys_select स्टैक फ्रेम 0x1c0, stack_fds sp+0x50 पर
  कवरेज रेंज: SYS_SP - 0x1c0 + 0x50 = SYS_SP - 0x170 से शुरू
  waiter (SYS_SP - 0x2e0) से अंतर 0x170 (368 बाइट्स) → कोई ओवरलैप नहीं

3.2 परीक्षण की गई 17 स्टैक लेखन विधियाँ

#विधिसिस्टम कॉलPD2229 परिणाममुख्य विफलता कारण
1stamp_prctlPR_SET_MM_MAP❌ EPERMAndroid हार्ड इंटरसेप्ट
2stamp_pselectpselect6 (NFDS=320)❌ कोई ओवरलैप नहींwaiter fd_set से 120B नीचे
3stamp_pselectpselect6 (NFDS>336)❌ हीप आवंटनkvmalloc पथ
4stamp_socketMCAST_JOIN_SOURCE_GROUP❌ अपर्याप्त कवरेजकेवल lock फ़ील्ड लिखता है
5stamp_sendmsgsendmsg❌ waiter से 80B दूरस्टैक फ्रेम 0x90 गहराई अपर्याप्त
6stamp_sendmmsgsendmmsg❌ waiter से 112B दूरस्टैक फ्रेम अपर्याप्त
7stamp_recvmmsgrecvmmsg❌ task/lock शून्य करता है0x1d0 स्टैक फ्रेम महत्वपूर्ण पॉइंटर्स को नष्ट करता है
8stamp_process_vmprocess_vm_writev❌ कोई ओवरलैप नहींचाइल्ड थ्रेड स्टैक अलग से आवंटित
9stamp_keyctlKEYCTL_INSTANTIATE_IOV❌ EOPNOTSUPPसिस्टम कॉल समर्थित नहीं + स्टैक फ्रेम 0x40
10stamp_tcpTCP_ZEROCOPY_RECEIVE❌ स्टैक फ्रेम अपर्याप्तअनुमानित गहराई पर्याप्त नहीं
11stamp_futexFUTEX_CMP_REQUEUE_PI पुनरावर्ती❌ तार्किक रूप से असंभवUAF विंडो को नष्ट करता है
12binder ioctlBINDER_WRITE_READ❌ EACCESshell के पास /dev/binder अनुमति नहीं
13pollpoll❌ हीप आवंटनpollfd हीप पर
14epoll_waitepoll_wait❌ फ्रेम बहुत उथलास्टैक फ्रेम 0xE0
15sched_setattrsched_setattr❌ गहराई अपर्याप्तस्टैक फ्रेम 0xb0
16timerfd_settimetimerfd_settime❌ कोई स्टैक कॉपी नहींकोई बड़ा स्टैक बफर नहीं
17io_uring_registerIORING_REGISTER_*दोहरी विफलता①स्टैक फ्रेम केवल 0xF0, copy_from_user लक्ष्य निश्चित sp+0x8 (waiter के sp+0x1D0 से 424 बाइट्स का अंतर); ②हालाँकि io_uring_setup seccomp द्वारा इंटरसेप्ट नहीं किया गया (ENOSYS के बजाय EFAULT लौटाता है), स्टैक लेआउट मेल नहीं खाता

17/17 सभी विफल।

3.3 विफलता का मूल कारण

PD2229 के SM8475 5.10 GKI कंपाइलर (PGO + LTO + BOLT) द्वारा उत्पन्न स्टैक लेआउट, core_sys_select के stack_fds और futex_wait_requeue_pi के rt_mutex_waiter के बीच आर्किटेक्चरल गैर-ओवरलैप का कारण बनता है। यह कंपाइलर द्वारा निर्धारित एक वस्तुनिष्ठ तथ्य है, न कि शोषण तकनीक की समस्या।

JoinChang रिपॉजिटरी स्पष्ट रूप से बताती है: "The pselect stack overlay only works when the freed rt_mutex_waiter lands within the user-controllable region of the stack_fds buffer" — PD2229 इस शर्त को पूरा नहीं करता।


四、सार्वजनिक संदर्भ रिपॉजिटरी तुलनात्मक विश्लेषण

NebuSec/CyberMeowfia — मूल शोषण फ्रेमवर्क

  • रिपॉजिटरी: https://github.com/NebuSec/CyberMeowfia
  • लक्ष्य: x86_64 Linux / Pixel 10 (6.x GKI)
  • स्टैक पुनर्प्राप्ति: PR_SET_MM_MAP auxv को कर्नेल स्टैक में कॉपी करता है
  • सफलता दर: 97%, लगभग 5 सेकंड [root shell]
  • PD2229 अनुकूलता: ❌ PR_SET_MM_MAP Android पर EPERM द्वारा इंटरसेप्ट किया गया

JoinChang/ghostlock-oneplus — OnePlus बूटलोडर अनलॉक jailbreak

  • रिपॉजिटरी: https://github.com/JoinChang/ghostlock-oneplus
  • सत्यापित डिवाइस:
    • OnePlus Ace 6T (PLR110, SM8845) — 6.12.38 GKI ✅
    • OnePlus 15 (PLK110, SM8845) — 6.12.23 GKI ✅
  • तकनीकी बिंदु:
    • ऑफसेट स्वचालित निष्कर्षण: kallsyms (28) + BTF (57) + व्युत्पन्न (9) + स्थिरांक (12) = 103/103
    • pselect स्टैक ओवरले, SP diff = -64
    • PSELECT_SHIFT = -2
    • शोषण श्रृंखला: futex UAF → नकली waiter → pselect नियंत्रित स्टैक → rb_erase प्रतिबंधित लेखन → selinux_state.enforcing=0 → cred को init_cred से ओवरराइट
  • स्पष्ट रूप से असंभव घोषित: "Not Feasible (stack layout incompatible)" — केवल उन कर्नेलों पर लागू जहां pselect stack_fds और waiter ओवरलैप होते हैं
  • PD2229 अनुकूलता: ❌ कर्नेल पीढ़ी बेमेल (6.12 बनाम 5.10), और स्टैक लेआउट ओवरलैप नहीं होता

p2p3p/GhostLock-for-OnePlus — OnePlus 6.12 पूर्ण शोषण

  • रिपॉजिटरी: https://github.com/p2p3p/GhostLock-for-OnePlus
  • सत्यापित: OnePlus Ace 6T (SM8845, 6.12.38) ✅
  • PD2229 अनुकूलता: ❌ JoinChang के समान, कर्नेल पीढ़ी बेमेल

YuKongA/ghostlock-oplus — OPPO Find N5/X8

OPPO Find X6 Pro (PGEM10) अनुकूलन — 5.15.149

  • डिवाइस: SM8550, 5.15.149-android13, Android 15
  • प्रगति: ✅ KASLR बाईपास (perf_event_open + callchain सैंपलिंग); बाद के चरणों का पूर्ण शोषण सार्वजनिक नहीं
  • महत्व: साबित करता है कि 5.15 GKI पर KASLR बाईपास संभव है, लेकिन स्टैक पुनर्प्राप्ति चरण सार्वजनिक रूप से सत्यापित नहीं

pubglite55/oppo-ghostlock — OPPO Find N2

  • रिपॉजिटरी: https://github.com/pubglite55/oppo-ghostlock
  • डिवाइस: OPPO Find N2 (CPH2413, SM8475)
  • कर्नेल: 5.10.236-android12-9-o-g74d132f4467a
  • Android: 16 (BP2A.250605.015)
  • लागू:
    • ✅ Firefox CVE-2026-10702 AAW (चरण 1)
    • ✅ KASLR बाईपास (सीधे kaslr_base की गणना)
    • ✅ GhostLock FUTEX ट्रिगर (FUTEX_CMP_REQUEUE_PI ret=0)
    • ✅ KernelSnitch mm_struct लीक
    • ✅ sk_buff हीप स्प्रे (4/4 send सफल)
    • ✅ IDA Pro 70+ ऑफसेट सत्यापन
  • मुख्य अवरोध:

    "pselect waiter संरचना में हेरफेर नहीं कर सकता — NFDS >336 होने पर fd_set हीप पर; configfs/ashmem समर्थित नहीं (ashmem SET_NAME ट्रंकेटेड); अन्य सभी कर्नेल लेखन पथ अवरुद्ध (/proc/self/mem, /dev/mem, binder)"

  • PD2229 संबंध: समान प्लेटफ़ॉर्म समान पीढ़ी (SM8475, 5.10.236 बनाम 5.10.233), केवल 3 मामूली संस्करणों का अंतर, बिल्कुल समान आर्किटेक्चरल सीमाओं का सामना करता है

harry1080/oppo-ghostlock — OPPO Find N2

  • रिपॉजिटरी: https://github.com/harry1080/oppo-ghostlock
  • डिवाइस: OPPO Find N2 (CPH2413, SM8475)
  • कर्नेल: 5.10.236-android12-9-o-g74d132f4467a
  • Android: 16 (BP2A.250605.015)
  • समुदाय सार्वजनिक घोषणा:

    "pixel10 जिस संस्करण का शोषण कर सकता है उसमें pselect stack_fds और rt_waiter कर्नेल स्टैक पर बिल्कुल ओवरलैप होते हैं, यह हिस्सा वास्तव में सबसे परेशानी वाला है, OPPO findN2 के कर्नेल में इन दो कॉलों के स्टैक हिस्से पूरी तरह से ओवरलैप नहीं होते, या ओवरलैप होते भी हैं तो नियंत्रण योग्य नहीं होते, स्टैक को नियंत्रित करने के लिए अन्य नियंत्रणीय कर्नेल स्टैक सिस्टम कॉल खोजने होंगे, केवल ऑफसेट अनुकूलित करना सफल नहीं हो सकता, oppo का rt_waiter पूरी तरह से pselect stack_fds के साथ ओवरलैप नहीं होता"

  • PD2229 संबंध: PD2229 के समान SM8475 5.10 GKI, निष्कर्ष पूरी तरह से लागू

4.3 संदर्भ रिपॉजिटरी तुलना सारांश तालिका

रिपॉजिटरीडिवाइसSoCकर्नेलस्टैक पुनर्प्राप्ति विधिस्थितिPD2229 पुन: उपयोग क्षमता
NebuSec/CyberMeowfiaPixel 10-6.xPR_SET_MM_MAP✅ 97%❌ Android इंटरसेप्ट
JoinChang/ghostlock-oneplusOnePlus Ace 6TSM88456.12.38pselect (SP diff=-64)✅ सत्यापित❌ कर्नेल पीढ़ी बेमेल
p2p3p/GhostLock-for-OnePlusOnePlus Ace 6TSM88456.12.38pselect✅ सत्यापित❌ कर्नेल पीढ़ी बेमेल
YuKongA/ghostlock-oplusFind N5/X8-6.6.118pselect❌ कर्नेल पीढ़ी बेमेल
OPPO Find X6 Pro अनुकूलनFind X6 ProSM85505.15.149perf KASLR + ?🟡 KASLR ✅, बाद में सार्वजनिक नहीं❌ प्लेटफ़ॉर्म अलग
pubglite55/oppo-ghostlockFind N2SM84755.10.236संपूर्ण परीक्षण विफल❌ मुख्य अवरोध⚠️ समान प्लेटफ़ॉर्म समान पीढ़ी, समान भाग्य
harry1080/oppo-ghostlockFind N2SM84755.10.236संपूर्ण परीक्षण विफल❌ आर्किटेक्चरल रूप से असंभव⚠️ समान प्लेटफ़ॉर्म समान पीढ़ी, समान भाग्य
PD2229 (यह रिपोर्ट)PD2229SM84755.10.23317 उम्मीदवार सभी विफलआर्किटेक्चरल रूप से असंभव

五、मुख्य कर्नेल प्रतीक और ऑफसेट (PD2229 vmlinux वास्तविक परीक्षण)

स्थिर आधार पता 0xffffffc008000000, रनटाइम पर KASLR slide जोड़ना आवश्यक।

प्रतीकपताउपयोग
rt_mutex_start_proxy_lock0xffffffc00822baa8भेद्यता ट्रिगर प्रवेश बिंदु
futex_wait_requeue_pi0xffffffc0082d7df4waiter आवंटन, स्टैक फ्रेम 0x1b0
__arm64_sys_futex0xffffffc0082dfe9cस्टैक फ्रेम 0x90
do_futex0xffffffc0082d0768स्टैक फ्रेम 0xc0
core_sys_select0xffffffc008634cf0pselect स्टैक फ्रेम 0x1c0
____sys_sendmsg0xffffffc0093eda88स्टैक फ्रेम 0x90
do_recvmmsg0xffffffc0093ef49cस्टैक फ्रेम 0x1d0
__arm64_sys_io_uring_register0xffffffc008aae328स्टैक फ्रेम 0x10+0x70
__io_uring_register0xffffffc008aae5f8स्टैक फ्रेम 0x80
inet6_protos0xffffffc00ab0a278चरण 4 लेखन लक्ष्य
selinux_state0xffffffc00aee8c70SELinux अक्षम करने का लक्ष्य
init_task0xffffffc00ab0c240cred पढ़ने का स्रोत

rt_mutex_waiter संरचना (vivo 5.10.233 कस्टम)

struct rt_mutex_waiter {
    uint64_t private;           // +0x00  (vivo निजी फ़ील्ड)
    struct rb_node {
        uint64_t rb_parent_color; // +0x08
        uint64_t rb_right;        // +0x10  (vivo क्रम बदलता है)
        uint64_t rb_left;         // +0x18
    } tree;
    struct task_struct *task;   // +0x20
    struct rt_mutex *lock;      // +0x28
};
// कुल आकार 0x30 (48 बाइट्स)

六、लागू बनाम लागू करने योग्य

✅ लागू बुनियादी ढांचा

  1. KASLR बाईपासperf_event_open + callchain सैंपलिंग (OPPO Find X6 Pro 5.15.149 विधि के समान)
  2. UAF ट्रिगर — तीन-थ्रेड PI डेडलॉक, FUTEX_CMP_REQUEUE_PI -EDEADLK लौटाता है
  3. पूर्ण प्रतीक तालिका — 103+ प्रतीक IDA द्वारा सत्यापित (JoinChang की 103/103 निष्कर्षण पद्धति के संदर्भ में)
  4. rt_mutex_waiter संरचना लेआउट — vivo कस्टम ऑफसेट की पुष्टि हुई
  5. स्टैक फ्रेम लेआउट सटीक विश्लेषण — futex और pselect/io_uring पथ गहराई गणना पूर्ण
  6. 17 स्टैक पुनर्प्राप्ति उम्मीदवारों का संपूर्ण बहिष्करण — पूर्ण "असंभव" मैट्रिक्स स्थापित

❌ लागू नहीं (मुख्य अवरोध)

  1. स्टैक पुनर्प्राप्ति प्रिमिटिव — SM8475 5.10 GKI कंपाइलर स्टैक लेआउट आर्किटेक्चरल रूप से अनुपयोगी
  2. प्रतिबंधित लेखन प्रिमिटिव — स्टैक पुनर्प्राप्ति विफलता के कारण rb_erase ट्रिगर नहीं हो सकता
  3. बाद के सभी चरण — कैस्केड अवरोध

七、अंतिम निष्कर्ष

⚠️ GhostLock (CVE-2026-43499) PD2229 (vivo X Fold+, SM8475, 5.10.233 GKI, Android 15 OriginOS 5) पर शोषण योग्य नहीं है।

मूल कारण यह है कि SM8475 5.10 GKI कंपाइलर (PGO+LTO+BOLT) द्वारा उत्पन्न स्टैक लेआउट, सभी ज्ञात syscall के स्टैक फ्रेम और rt_mutex_waiter के बीच आर्किटेक्चरल गैर-ओवरलैप का कारण बनता है। यह कंपाइलर द्वारा निर्धारित एक वस्तुनिष्ठ तथ्य है, न कि शोषण तकनीक की समस्या।

सफल शोषण के सभी मामले 6.6/6.12 GKI पर हैं, क्योंकि इन नए कर्नेलों के कंपाइलर आउटपुट pselect fd_set और waiter के बीच पूर्ण ओवरलैप बनाते हैं (SP diff=-64)। 5.10 GKI में यह शर्त मौजूद नहीं है।


स्थापित बुनियादी ढांचा

  • ✅ KASLR बाईपास प्रिमिटिव (perf_event_open साइड-चैनल)
  • ✅ 103+ कर्नेल प्रतीक और ऑफसेट
  • ✅ rt_mutex_waiter संरचना लेआउट
  • ✅ UAF ट्रिगर क्षमता
  • ✅ 17 स्टैक पुनर्प्राप्ति उम्मीदवारों का बहिष्करण मैट्रिक्स

九、संदर्भ रिपॉजिटरी सूचकांक

रिपॉजिटरीURLमुख्य मूल्य
NebuSec/CyberMeowfiahttps://github.com/NebuSec/CyberMeowfiaमूल शोषण फ्रेमवर्क, 97% सफलता दर
JoinChang/ghostlock-oneplushttps://github.com/JoinChang/ghostlock-oneplus6.12 GKI सफल अनुकूलन, 103 ऑफसेट निष्कर्षण पद्धति
p2p3p/GhostLock-for-OnePlushttps://github.com/p2p3p/GhostLock-for-OnePlus6.12 GKI पूर्ण शोषण श्रृंखला
YuKongA/ghostlock-oplushttps://github.com/YuKongA/ghostlock-oplus6.6 GKI OPPO अनुकूलन
pubglite55/oppo-ghostlockhttps://github.com/pubglite55/oppo-ghostlockSM8475 5.10.236 समान प्लेटफ़ॉर्म विफलता संदर्भ
harry1080/oppo-ghostlockhttps://github.com/harry1080/oppo-ghostlockSM8475 5.10.236 समान प्लेटफ़ॉर्म विफलता संदर्भ
NebuSec तकनीकी विश्लेषणhttps://nebusec.ai/research/ionstack-part-2/GhostLock मूल श्रृंखला तकनीकी विवरण
अपस्ट्रीम फिक्सcommit 3bfdc63936ddफिक्स कोड

श्रेणियाँ