Sploitus

Exploit for CVE-2026-43499-armv7

kitploit · 2026-08-25

Exploit Code

MARKDOWN146 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-TC3650-CVE-2026-43499-ARMV7
# CVE-2026-43499 GhostLock — ARM32 Huawei Watch 4 Pro

> 基于 CVE-2026-43499 (GhostLock) 的 Linux 内核提权漏洞利用尝试 — **Huawei Watch 4 Pro (MDS-AL00, armv7l)**

![Kernel: 5.4.161](https://img.shields.io/badge/Kernel-5.4.161--perf-green.svg) ![Device: Huawei Watch 4 Pro](https://img.shields.io/badge/Device-Huawei%20Watch%204%20Pro-orange.svg) ![Arch: ARM32 v7](https://img.shields.io/badge/Arch-ARM32%20v7-blue.svg) ![Status: Blocked](https://img.shields.io/badge/Status-Blocked-red.svg)

## 项目概述

本项目是针对 **Huawei Watch 4 Pro (MDS-AL00, Snapdragon SW5100, HarmonyOS 4.3.0 AOSP 12)** 设备的 GhostLock 内核漏洞利用尝试,在 **ARM 32-bit (armv7l)** 架构上适配。

GhostLock (CVE-2026-43499) 是一个影响 Linux 2.6.39 到 7.x 的内核 futex PI UAF 漏洞。本项目的目标是在华为手表上完成完整的提权链。

**原仓库** : MobiusM/CVE-2026-43499 (arm64 版 PoC)

* * *

## 设备信息

参数| 值  
---|---  
设备| Huawei Watch 4 Pro (MDS-AL00)  
内核| 5.4.161-perf (ARM32 armv7l)  
系统| HarmonyOS 4.3.0 (AOSP 12)  
CPU| Snapdragon SW5100  
SELinux| Enforcing (`CONFIG_SECURITY_SELINUX_DEVELOP=n`)  
KASLR| 关闭  
MMU| `CONFIG_STRICT_KERNEL_RWX=y`  
栈| NX (内核栈不可执行)  
mmap(0)| 华为额外拦截 (-EINVAL,非标准 -EACCES)  
  
* * *

## 当前项目状态

* * *

## 核心阻塞问题

### 1\. 第二次 rb_erase 不触发 (最根本的问题)

在 kernel 5.4.161 ARM32 上,FUTEX_CMP_REQUEUE_PI 触发 EDEADLK 后,PI 链遍历**不执行第二次 rb_erase** 。GhostLock 64 依赖的 UAF → 第二次 rb_erase 写入 UAF 页的链式利用在此内核上完全失效。

所有 8-iov writev 喷溅变种均失败:`sc[0] after = e3a0002a` (壳码页未被写入)。

### 2\. iovstack 与 rt_mutex_waiter 不对齐

ghostlock64 的 8-iov writev 喷溅依赖内核栈上 `iovstack[8]` 数组与 `rt_mutex_waiter` 结构体重叠。在此内核上:

  * 测试了 11 种不同偏移 × 左右孩子 = 22 种布局
  * 无一种能成功改写 `clear_refs_operations.write`
  * 可能原因:此内核的栈布局(帧大小、局部变量位置)与 ghostlock64 假设的不同



### 3\. sched_setattr PI 链遍历操作 owner 的数据

sched_setattr 能成功触发 PI 链遍历(已验证 `success=1600+`),但 `rb_erase` 操作的是 **OWNER 线程** 的 `pi_tree_entry`(位于 kmalloc 堆上的 task_struct 中),而不是 waiter 线程的栈数据(fd_set writev 数据)。

因此 pselect + sched_setattr 路线也无法用于控制写值。

### 4\. 华为内核额外限制

  * `mmap(0, ..., MAP_FIXED, ...)` 返回 -EINVAL,不是标准 Linux 的 -EACCES
  * `CONFIG_SECURITY_SELINUX_DEVELOP=n` → `selinux_state.enforcing` 字段不存在
  * `mremap` → ENOSYS



* * *

## 尝试过的路线

* * *

## 关键地址 (System.map from MDS-AL00)

root@kitploit:~
    
    
    commit_creds:           0xC0140390
    prepare_kernel_cred:    0xC014059C
    proc_clear_refs_ops:    0xC0CAF280  (.write @ +12 = 0xC0CAF28C)
    mmap_min_addr:          0xC12E8568
    dac_mmap_min_addr:      0xC123C734
    selinux_hooks[mmap]:    0xC0F64E1C
    

* * *

## 外部参考 (ARM64,不直接适用)

仓库| 设备| 内核| 架构  
---|---|---|---  
x-spy/CVE-2026-43499-popsicle| Xiaomi 17 Pro Max  
  
两个仓库均使用 `pselect()` \+ `sched_setattr` 触 PI 链 + physmap 直写,依赖 ARM64 的 direct map 机制。ARM32 无 direct map,且此内核的 PI 链行为不同。

* * *

## 仓库文件结构

root@kitploit:~
    
    
    CVE-2026-43499-armv7/
    ├── config/
    │   └── kernel.config       # 设备内核 .config (5.4.161-perf)
    ├── scripts/
    │   ├── ghostlock_all.sh    # 批量测试脚本
    │   └── ghostlock_check.sh  # 检测脚本
    ├── src/
    │   ├── ghostlock64.c       # 原始 8-iov 双 erase PoC (基础框架)
    │   ├── ghostlock5-33.c     # 早期迭代版本 (ghostlock5 ~ ghostlock33)
    │   ├── ghostlock63.c       # ghostlock 6.x 3-iov 变种
    │   ├── g62_*.c             # 3-iov 变种 (不同目标地址)
    │   ├── g62_8e.c            # 8-iov 精确喷溅 (最终版)
    │   ├── g62_scan.c          # 多 iov 偏移扫描
    │   ├── g62_self.c          # waiter 自触发 EDEADLK 测试
    │   ├── g62_pispray.c       # EDEADLK + slab spray + sched_setattr
    │   ├── g62_rand.c          # 写 randomize_va_space 测试
    │   ├── gsu_v19.c           # 8-iov + sched_setattr 触发
    │   ├── gl_pselect*.c       # pselect + sched_setattr 测试
    │   ├── gl_scan.c           # fd_set 偏移扫描
    │   ├── sc64.c              # shellcode payload
    │   ├── trigger*.c          # 原始触发 PoC (验证漏洞存在)
    │   ├── ghostlock_root.c    # 早期 root 尝试
    │   └── test_*.c            # 编译/运行测试
    ├── README.md
    ├── ghostlock64             # 8-iov 双 erase PoC 二进制
    ├── ghostlock63             # ghostlock 6.x 3-iov 二进制
    ├── g62_*                   # 3-iov 变种二进制
    ├── gl_*                    # pselect 测试二进制
    ├── gsu                     # sc-page hijack 变种
    ├── sc64                    # shellcode
    ├── trigger*                # 原始触发 PoC 二进制
    └── test_*                  # 测试二进制
    

## 结论

**此内核版本 (5.4.161 ARM32) 的 PI 链实现不支持 GhostLock 的双 rb_erase 任意写技术。** 所有已知的 CVE-2026-43499 利用路线均在此设备上受阻。需要发现新的写 0 原语或其他漏洞才能继续。

## 作者的话

华为你阴死我了 烧了我deepseek V4 Pro 30RMB token