Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Submit
ToolsExploitsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
cve-2026-43499 — PD2229B的43499(ghostlock)可行性研究 | Kitploit
Tools/GitHubGitHub/catxiaoshi/cve-2026-43499
Android SecurityPrivilege EscalationVulnerability AnalysisExploitationReverse EngineeringMobile SecurityBinary Exploitation
GitHubcatxiaoshi/cve-2026-43499

cve-2026-43499

PD2229B的43499(ghostlock)可行性研究

View Repository
241 month agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

GhostLock Exploitation Failure Summary on PD2229 (SM8475, 5.10.233 GKI)

I. Vulnerability and Device Facts

1.1 CVE-2026-43499 (GhostLock) Basic Information

ItemValue
Vulnerability TypeStack Use-After-Free in the rt_mutex / futex PI path
Introduced VersionLinux 2.6.39-rc1 (May 2011, commit 8161239a8bcc)
Fixed Versionmainline 7.1 (commit 3bfdc63936dd), stable branches: 6.1.175 / 6.6.140 / 6.12.86 / 6.18.27 / 7.0.4
PrerequisiteCONFIG_FUTEX_PI=y (enabled by default in mainstream kernels)
CVSS7.8 High
Exploit StabilityNebuSec original chain 97%, root in ~5 seconds
kernelCTF Bounty$92,337 USD

Affected kernel ranges:

  • 2.6.39 ≤ Linux < 6.1.175 ✅ Affected
  • 6.2 ≤ Linux < 6.6.140 ✅ Affected
  • 6.7 ≤ Linux < 6.12.86 ✅ Affected
  • 6.13 ≤ Linux < 6.18.27 ✅ Affected
  • 6.19 ≤ Linux < 7.0.4 ✅ Affected
  • Android GKI 5.10 is in none of the fix branches → PD2229's 5.10.233 is theoretically affected

1.2 PD2229 Device Measurements

ItemValue
SoCQualcomm SM8475 (Snapdragon 8 Gen 1 Plus)
Kernel Version5.10.233-gki-g6e61de9f5b58 #1 SMP PREEMPT (Nov 24 2025)
Android Version15 (OriginOS 5)
Build Date2025/11/25
Android Security Patch2025/11/01
CONFIG_FUTEX_PIy ✅
CONFIG_UNMAP_KERNEL_AT_EL0y (KPTI enabled)
kptr_restrictenforced
CONFIG_IO_URINGy ✅ (confirmed via vmlinux symbols, and seccomp does not intercept io_uring_setup)

II. Ideal Exploit Chain vs Actual PD2229 Progress

2.1 NebuSec Original Chain (successful on 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 Actual PD2229 Progress by Stage

StageStatusDescription
1. KASLR Bypass✅ Implementedperf_event_open + callchain sampling side channel (same method as the OPPO Find X6 Pro 5.15.149 adaptation)
2. UAF Trigger✅ ImplementedThree-thread PI deadlock succeeds, FUTEX_CMP_REQUEUE_PI returns -EDEADLK
3. Stack Reclaim Primitive❌ Architectural failureStack frames of all known syscalls do not overlap the waiter (see Section III)
4. rb_erase Constrained Write❌ BlockedPrerequisite not met
5. inet6_protos Overwrite❌ Not startedDepends on stage 4
6. ROP / Control Flow Hijack❌ Not startedDepends on stage 5
7. Root Shell❌ Not startedDepends on stage 6

III. Stack Reclaim Primitive Exhaustive Search Results (PD2229 Measured)

3.1 Key Stack Frame Layout Calculations

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 Stack Write Methods Attempted

#MethodSyscallPD2229 ResultCore Failure Reason
1stamp_prctlPR_SET_MM_MAP❌ EPERMAndroid hard block
2stamp_pselectpselect6 (NFDS=320)❌ No overlapwaiter is 120B below fd_set
3stamp_pselectpselect6 (NFDS>336)❌ Heap allocationkvmalloc path
4stamp_socketMCAST_JOIN_SOURCE_GROUP❌ Insufficient overwriteOnly writes the lock field
5stamp_sendmsgsendmsg❌ 80B from waiterStack frame 0x90 too shallow
6stamp_sendmmsgsendmmsg❌ 112B from waiterInsufficient stack frame
7stamp_recvmmsgrecvmmsg❌ Zeroes task/lock0x1d0 stack frame corrupts key pointers
8stamp_process_vmprocess_vm_writev❌ No overlapChild thread stack allocated separately
9stamp_keyctlKEYCTL_INSTANTIATE_IOV❌ EOPNOTSUPPSyscall unsupported + stack frame 0x40
10stamp_tcpTCP_ZEROCOPY_RECEIVE❌ Insufficient stack frameEstimated depth not enough
11stamp_futexFUTEX_CMP_REQUEUE_PI recursion❌ Logically infeasibleCorrupts the UAF window
12binder ioctlBINDER_WRITE_READ❌ EACCESshell lacks /dev/binder permission
13pollpoll❌ Heap allocationpollfd is on the heap
14epoll_waitepoll_wait❌ Frame too shallowStack frame 0xE0
15sched_setattrsched_setattr❌ Insufficient depthStack frame 0xb0
16timerfd_settimetimerfd_settime❌ No stack copyNo large stack buffer
17io_uring_registerIORING_REGISTER_*❌ Double failure①Stack frame is only 0xF0, and the copy_from_user target is fixed at sp+0x8 (424 bytes away from the waiter's sp+0x1D0); ②although io_uring_setup is not intercepted by seccomp (returns EFAULT instead of ENOSYS), the stack layout does not match

17/17 all failed.

3.3 Root Cause of Failure

The stack layout produced by PD2229's SM8475 5.10 GKI compiler (PGO + LTO + BOLT) causes core_sys_select's stack_fds and futex_wait_requeue_pi's rt_mutex_waiter to be architecturally non-overlapping. This is an objective fact determined by the compiler, not an exploit technique issue.

The JoinChang repository explicitly states: "The pselect stack overlay only works when the freed rt_mutex_waiter lands within the user-controllable region of the stack_fds buffer" — PD2229 does not satisfy this condition.


IV. Public Reference Repository Comparative Analysis

NebuSec/CyberMeowfia — Original Exploit Framework

  • Repository: https://github.com/NebuSec/CyberMeowfia
  • Target: x86_64 Linux / Pixel 10 (6.x GKI)
  • Stack Reclaim: PR_SET_MM_MAP copies auxv to the kernel stack
  • Success Rate: 97%, root [shell] in ~5 seconds
  • PD2229 Applicability: ❌ PR_SET_MM_MAP is blocked by EPERM on Android

JoinChang/ghostlock-oneplus — OnePlus locked-BL jailbreak

  • Repository: https://github.com/JoinChang/ghostlock-oneplus
  • Verified Devices:
    • OnePlus Ace 6T (PLR110, SM8845) — 6.12.38 GKI ✅
    • OnePlus 15 (PLK110, SM8845) — 6.12.23 GKI ✅
  • Technical Highlights:
    • Offset auto-extraction: kallsyms (28) + BTF (57) + derived (9) + constants (12) = 103/103
    • pselect stack overwrite, SP diff = -64
    • PSELECT_SHIFT = -2
    • Exploit chain: futex UAF → forge waiter → pselect controls the stack → rb_erase constrained write → selinux_state.enforcing=0 → overwrite cred with init_cred
  • Explicitly declared infeasible: "Not Feasible (stack layout incompatible)" — only applies to kernels where pselect stack_fds overlaps the waiter
  • PD2229 Applicability: ❌ Kernel generation mismatch (6.12 vs 5.10), and stack layouts do not overlap

p2p3p/GhostLock-for-OnePlus — Complete OnePlus 6.12 Exploit

  • Repository: https://github.com/p2p3p/GhostLock-for-OnePlus
  • Verified: OnePlus Ace 6T (SM8845, 6.12.38) ✅
  • PD2229 Applicability: ❌ Same as JoinChang, kernel generation mismatch

YuKongA/ghostlock-oplus — OPPO Find N5/X8

  • Repository: https://github.com/YuKongA/ghostlock-oplus
  • Kernel: 6.6.118 GKI
  • PD2229 Applicability: ❌ Kernel generation mismatch

OPPO Find X6 Pro (PGEM10) Adaptation — 5.15.149

  • Device: SM8550, 5.15.149-android13, Android 15
  • Progress: ✅ KASLR bypass (perf_event_open + callchain sampling); later stages not publicly disclosed as a complete exploit
  • Significance: Proves KASLR bypass is feasible on 5.15 GKI, but the stack reclaim stage has not been publicly verified
Download Tool