
Honor 80 GT (MagicOS 8.0.0.128, kernel 5.10.168) privilege escalation PoC: GhostLock (CVE-2026-43499) + custom KernelSU module loading
English | 中文
适用于荣耀80 GT(AGT-AN00)的本地提权exploit(CVE-2026-43499,内核rtmutex remove_waiter路径的UAF),以及配套的KernelSU内核模块加载方案。
原理上,本项目的漏洞和利用手法对9.0.0.220及之前的所有MagicOS版本都成立。已适配的版本:
| MagicOS | 内核 | 状态 |
|---|---|---|
| 8.0.0.128 | 5.10.168 | 已验证 |
| 8.0.0.160 | 5.10.209 | 已验证 |
| 9.0.0.157 | 5.10.209 | 已验证 |
| 9.0.0.200SP1 | 5.10.236 | 已验证 |
| 9.0.0.220SP2 / SP4 | 5.10.236 | 已验证(SP4与SP2的boot镜像相同) |
9.0系其他版本理论上重新生成偏移表(src/targets/)并确认载体槽位后即可支持。
⚠️ 警告
- 仅供在自己的设备上做安全研究。
- 使用风险自负。本软件不提供任何担保(见LICENSE)。单纯运行本项目理论上不会变砖或丢失数据,但仍建议先做好备份;无论后果来自运行本代码还是root之后的任何操作,都与本项目无关。
- exploit借助UAF漏洞改写内核内存,失败时设备会自动重启,重启后复原。成功率不是100%,失败了重跑即可。
- 获取root权限之后请自己把握好分寸。本项目只负责帮你拿到root;刷镜像、写分区、关防护、乱装模块把机器搞砖,本项目概不负责。
exploit/ exploit源码(Android arm64)与构建系统
src/ exploit核心:漏洞触发、KASLR、boot_id劫持、任意读写、
cred/SELinux/sig_enforce修改、KSU加载
src/targets/ 按固件划分的偏移表(target.h)
ksu/ 自编译kernelsu.ko与PC侧adb加载脚本
tools/ 设备端加载辅助(源码、策略规则、加载脚本模板)
需要:Docker、Android Platform Tools。
预构建包按固件版本发布:在Releases里下载对应MagicOS版本的包,在电脑上解压后运行
./setup.sh # 电脑上运行(需adb):校验内核版本、推送全部
# 文件、启动整条链,偶发失败会自动重试
没有电脑的话,把包解压到手机上,用Shizuku的shell(rish)跑同一个脚本即可——脚本会自动识别运行环境:
sh /sdcard/ghostlock-<版本>/setup.sh
要自己编译的话:
# 1. 编译exploit
cd exploit && ./docker-build.sh bin # 生成exploit_static(8.0.0.128)
# 8.0.0.160: ./docker-build.sh PROJECT=annap-AGT-AN00_8.0.0.160 bin
# (./docker-build.sh ondevice生成免环境变量的静态版;
# 首次运行会下载NDK,约1.2GB)
# 2. 准备KSU相关文件到ksu/tools/
# 见ksu/tools/README.md(kernelsu_h80gt.ko的编译方法见ksu/README.md,
# 需用与固件内核子版本匹配的开源树编译;
# ksud已随仓库提供;magiskpolicy已随仓库提供;
# load_ko/kmsg_dumper由./docker-build.sh tools编译)
# 3. 手机打开ADB调试,
bash ../ksu/ksu_load_ko.sh
# 8.0.0.160: PROJECT=annap-AGT-AN00_8.0.0.160 bash ../ksu/ksu_load_ko.sh
脚本会自动完成:exploit提权并翻转sig_enforce→注入SELinux策略→bind-mount伪造的kallsyms→加载.ko→ksud初始化→最后恢复SELinux enforcing。/proc/modules里出现kernelsu后,打开KernelSU管理器(显示“工作中<LKM>[越狱模式]”)就能用了。
CONFIG_MODULE_SIG_FORCE=y运行时sig_enforce标志会阻止未签名模块加载,exploit过程会将其临时翻转为0(模块加载完成后由加载脚本恢复为1)。commit_creds等符号从/proc/kallsyms里删掉了,内核加载模块时解析不到。解决办法是bind-mount一份伪造的kallsyms,把缺的符号按真实运行时地址(链接地址+KASLR slide)补在最前面。android12-5.10_kernelsu.ko无法直接使用。所以ksu/用与固件内核子版本匹配的MagicOS内核源码和设备自己的内核配置重编了KernelSU v3.2.5,细节见ksu/README.md。上表所有版本均在真机上跑通完整链条(UAF→KASLR→任意读写→cred→SELinux宽容→sig_enforce→KernelSU加载、恢复enforcing、还原boot_id)。单次运行有约四分之一的概率中途失败并重启手机,setup.sh会自动重试,手动重跑一次也可以。
exploit/与文档:Apache License 2.0(见LICENSE),与上游PoC一致。ksu/:GPL-2.0(见ksu/LICENSE),init-h80gt.patch与ksu_rules.annotated衍生自KernelSU的kernel/目录。