Huawei P10 VTR-L29C432B151 CVE-2017-8890 漏洞利用研究与 Bootloader 解锁之旅
本仓库记录了一项经设备所有者授权的研究项目,该项目将 CVE-2017-8890 移植到一款华为 P10 固件上,将内核 use-after-free 转化为任意内核读写与临时 root 权限,重建了华为的 NVE 日志,通过合法的 NVE 驱动程序安装了一个替代的引导加载程序凭据,并验证了 fastboot 接受了所选定的明文代码。
测试目标为:
4.1.18-gbed9f04这并不是一个通用的 P10 解锁工具。随附的内核配置文件包含针对该确切构建版本的绝对地址。在其他内核上使用它会导致手机内核崩溃,并可能损坏持久化存储。即使市场型号保持不变,固件升级也可能会改变该配置文件。
完整且可公开的叙述以 PDF 报告 的形式提供。
成功链路如下:
CVE-2017-8890 multicast UAF
-> controlled overlap with ip_mc_socklist
-> forced RCU grace period in the exploit's address space
-> AArch64 JOP arbitrary store
-> ptmx_fops.check_flags temporarily redirected
-> address limit widened to KERNEL_DS
-> pipe-based arbitrary kernel read/write
-> check_flags restored
-> current task credentials and SELinux SID patched
-> protected NVME partition acquired
-> replacement SHA-256 verifier written with /dev/nve0
-> complete 128 KiB generation read back and compared
-> controlled reboot
-> fastboot unlock accepted the chosen plaintext
该引导加载程序凭据在后来一次官方的 Android 8 / EMUI 8 升级后依然存在,尽管引导加载程序被重新锁定,而同一个选定的明文代码再次将其解锁。这表明该凭据存储在设备的持久化 NVE 数据中,而不是存储在 Android 系统或引导镜像中。
exploit/CVE-2017-8890/1003/ modified exploit implementation
utils/ GPLv3 androotzf support code
jni/ Android NDK build files
tools/p10_nve_journal.py read-only inspector and offline candidate builder
docs/exploit-development.md technical exploit journey
docs/nve-format.md Huawei NVE journal and credential semantics
docs/reproduction.md staged reproduction procedure
report/ redacted long-form PDF
本仓库不包含任何已编译的利用代码、固件镜像、分区转储、引导镜像、专有商业工具、解锁码、设备标识符或设备派生的凭据摘要。
该利用代码最初基于 GPLv3 许可的 idhyt/androotzf 实现,提交版本为 63dfe5556e1a8cdbf6a2d3dd0ee929b07bfb48b7。本仓库保留了上游版权声明和 GPLv3 许可证。针对 P10 B151 的可靠性改进、诊断、内核读写、临时 root、分区转储以及受保护的 NVE 事务等改动,均被标识为 2026 年 7 月本项研究期间所做的修改。
署名与修改详情请参阅 NOTICE.md。
请仅将本成果用于你拥有或明确获准测试的硬件。引导加载程序解锁会擦除用户数据(userdata 分区)。该利用代码会故意破坏内核对象,并且除非进入受控的重启路径,否则通常会在之后引发清理阶段的内核崩溃。本成果不提供任何担保,也不保证能够恢复。