MobiusM/CVE-2026-43499
GitHub: MobiusM/CVE-2026-43499
Linux 内核 Futex PI Use-After-Free 漏洞(CVE-2026-43499)的概念验证代码,演示 rtmutex 代理锁回滚路径中因误用 current 导致的悬空指针问题。
Stars: 0 | Forks: 0
# CVE-2026-43499 — Linux Kernel Futex PI Use-After-Free
## 漏洞
`kernel/locking/rtmutex.c` 中的 `remove_waiter()` 用于慢速锁路径,但也用于在 `futex_requeue()` 调用 `rt_mutex_start_proxy_lock()` 时的代理锁回滚。
在代理锁的情况下,`waiter::task` 不是 `current`,但 `remove_waiter()` 错误地操作了 `current`。这导致了三个问题:
1. rbtree 出队操作在没有持有 `waiter::task::pi_lock` 的情况下发生。
2. waiter 任务的 `pi_blocked_on` 没有被清除,留下了一个随时可能触发 use-after-free 的悬空指针。
3. `rt_mutex_adjust_prio_chain()` 操作了错误的任务。
**CWE-416** (Use After Free)。CVSS 3.1:**7.8 HIGH**(本地,低复杂度,低权限要求)。
受影响版本:Linux 2.6.39 至 6.18.x;已在 6.1.175、6.6.140、6.12.86、6.18.27、7.0.4 中修复。
## 用法
**前提条件:** Android NDK 27、CMake ≥ 3.22、`adb`。
```
cmake -B build -G Ninja
cmake --build build
adb push build/trigger /data/local/tmp/trigger
adb shell chmod +x /data/local/tmp/trigger
adb shell /data/local/tmp/trigger
```
在易受攻击的设备上的预期输出以 kernel panic 结束:
```
Unable to handle kernel write to read-only memory
```
## 致谢
**报告者:**
- Yuan Tan
- Yifan Wu
- Juefei Pu
- Xin Liu
**修复作者:** Keenan Dong
**提交者:** Thomas Gleixner
**Commit:** [`3bfdc63`](https://github.com/torvalds/linux/commit/3bfdc63936dd4773109b7b8c280c0f3b5ae7d349) — rtmutex: Use waiter::task instead of current in remove_waiter()
标签:Android, Bash脚本, DSL, Linux内核, PoC, UAF漏洞, Web报告查看器, 安全渗透, 客户端加密, 提权, 暴力破解