KawaiiHachimi/CVE-2026-43499-pkb110
GitHub: KawaiiHachimi/CVE-2026-43499-pkb110
针对 CVE-2026-43499(GhostLock)内核 UAF 漏洞的 Android 本地提权利用,适配 OPPO Find X8 并自动部署 KernelSU 与 su daemon。
Stars: 0 | Forks: 0
# CVE-2026-43499-pkb110
CVE-2026-43499(futex PI `rt_mutex_waiter` use-after-free,GhostLock)本地提权,适配 **OPPO Find X8 / PKB110** — MediaTek MT6991(Dimensity 9400),ColorOS 16。
一个文件推送,`LD_PRELOAD` 运行;成功后同时安装 **KernelSU(ksud,late-load / 越狱模式)** 和后备 `su` daemon:
adb push out/preload-pkb110.so /data/local/tmp/preload.so
adb shell chmod 644 /data/local/tmp/preload.so
adb shell LD_PRELOAD=/data/local/tmp/preload.so /system/bin/true
成功之后:
adb shell /data/local/tmp/su -c id # uid=0(root),后备 su daemon
adb shell /data/local/tmp/ksud ... # KernelSU(late-load 已启动)
**实机验证(2026-07-28)**:连续两次裸跑(无任何环境变量覆盖)均 `EXPLOIT OK`,
Write 1 / Write 2 各 1\~5 轮内落地,约 26\~91 秒完成;`su` 与 `ksud late-load` 均正常启动,
KernelSU 管理端识别为越狱模式。
| | |
|---|---|
| Device | OPPO Find X8 / PKB110 |
| SoC | MediaTek MT6991(Dimensity 9400)|
| Kernel | `6.6.118-android15-8-gebdfad32d749-ab15099304-4k`(GKI,4K 页)|
| Build | ColorOS 16 / `16.0.9.400(CN01)` |
| Bug | CVE-2026-43499,**该镜像未修复**(6.6 修复于 6.6.140,本内核 6.6.118)|
## 它做什么
利用链为 ghostlock 6.6 树的两次写原语,**不依赖 pipe 物理读写**(经典 fops→configfs→pipe
路线在本机的 pipe slab 回收阶段系统性失败,这是没有采用 KernelSU 仓库主线路的原因):
- **Write 1** — SELinux 打为 permissive(子节点 PI 写)
- **Write 2** — 把 fork 出的子进程 `cred` 指针换成 `init_cred`(perf task 泄漏 + PI 写)
- root 子进程内依次安装:内嵌 `su` daemon(三处路径)→ 内嵌 `ksud` 并以 `late-load --allow-shell` 启动
其他要点:
- **单文件**:`su_daemon.c` 编成独立 aarch64 PIE、`.incbin` 进 `.rodata`;`ksud`(4.5MB 官方构建)同样 `.incbin` 进库,运行时写出到 `/data/local/tmp/ksud`
- KASLR 不需要泄漏:`data_addr()` 走物理地址线性映射别名,KASLR 只动 image 映射
- 调用进程本身保持非特权——root 通过 daemon 服务获得,和你之后在 shell 里做的一样
- root 不持久,重启后需重新运行
## 关于 SELinux(已知取舍)
Write 1 之后 **SELinux 被故意留在 permissive**(warhol-root / pmg110-root 的原始设计:
su daemon 必须能服务非特权客户端)。KernelSU 的 late-load(越狱)模式没有内核级
sepolicy 补丁能力,因此 **`setenforce 1` 恢复 enforcing 会导致断网等 avc 拒绝**,
`setenforce 0` 即恢复正常。重启手机可恢复 enforcing(同时失去 root)。
日志位置:
- 利用过程:stdout / `/data/local/tmp/.ghostlock.log`
- ksud:`/data/local/tmp/ksud.preload.log`
- su daemon:`/data/local/tmp/su_daemon.log`
## 构建
make # = make preload -> out/preload-pkb110.so
make DEVICE=pkb110 # 使用 targets/pkb110/
make devices # 列出可用 DEVICE
make info # 查看选中的 target 和解析出的工具链
依赖:Linux host(x86_64 或 aarch64 均可)、Android NDK(`ANDROID_NDK_HOME` 指向即可;
aarch64 host 可用 [SnowNF/ndk-aarch64-linux](https://github.com/SnowNF/ndk-aarch64-linux) 的 r29)、`make`。
目标头与 offsets 的生成方式:
python3 tools/extract_device.py boot.img --name pkb110 # 需 vmlinux-to-elf, capstone, lz4
## 目录结构
.
├── Makefile
├── source/
│ ├── Makefile
│ ├── embed/ksud # 被 .incbin 的 KernelSU userspace binary(跟踪进 git)
│ └── src/ # ghostlock 6.6 内核利用树 + ksud 嫁接
│ ├── main.c # 主流程(Write 1 / Write 2 / root 子进程安装)
│ ├── ksud_blob.S # .incbin embed/ksud
│ ├── ksud_install.c # 写出 ksud + late-load 启动(移植自 KernelSU 仓库 preload.c)
│ ├── su_daemon.c / su_blob.S / su_install.c # warhol-root 的 su 路线
│ └── ...
├── targets/
│ └── pkb110/ # Find X8 的 target.h + device_offsets.h
├── tools/ # extract_device.py / BTF / preloader 内存布局等
└── out/
## Credits
- [NebuSec/CyberMeowfia](https://github.com/NebuSec/CyberMeowfia) — GhostLock exploit 原始实现(IonStack 利用链)
- [soralis0912/CVE-2026-43499-pmg110-root](https://github.com/soralis0912/CVE-2026-43499-pmg110-root) — 本仓库的直接蓝本(同 SoC / 同内核族的实机验证移植)
- [x-spy/CVE-2026-43499-popsicle](https://github.com/x-spy/CVE-2026-43499-popsicle) — warhol-root 上游,su 安装路线来源
- [JoinChang/ghostlock-oneplus](https://github.com/JoinChang/ghostlock-oneplus) — ghostlock 6.6 树,利用核心来源
- [woshimaniubi8/CVE-2026-43499-root-KernelSU](https://github.com/woshimaniubi8/CVE-2026-43499-root-KernelSU) — ksud 内嵌与 late-load 集成来源
- 酷安相关讨论帖(来自 @御坂114515号 用户):
- [Kimi K3](https://www.kimi.com/)(AI 助手)— 逆向分析、适配与集成由其实施
## 免责声明
本项目仅供安全研究与学习,仅可在已获得明确授权的自有设备上使用。未经授权利用漏洞
攻击他人计算机信息系统属违法行为。使用者需自行承担一切后果,作者与上游项目不承担
任何责任。Root 不持久、SELinux 保持 permissive 都会降低设备安全水位,测试完毕请重启
设备恢复。
标签:Android, DSL, KernelSU, LD_PRELOAD, Web报告查看器, 内核漏洞利用, 客户端加密, 本地提权, 联发科, 逆向工具