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报告查看器, 内核漏洞利用, 客户端加密, 本地提权, 联发科, 逆向工具