
CVE-2026-43499: Linux kernel futex PI use-after-free research package
remove_waiter() 位于 kernel/locking/rtmutex.c 中,被慢锁路径使用,同时也在从 futex_requeue() 调用 rt_mutex_start_proxy_lock() 时用于代理锁回滚。
在代理锁场景下,waiter::task 不是 current,但 remove_waiter() 错误地对 current 进行操作。这会导致三个问题:
waiter::task::pi_lock。pi_blocked_on 未被清除,留下一个悬空指针,为释放后利用创造条件。rt_mutex_adjust_prio_chain() 操作了错误的 task。CWE-416(释放后使用)。CVSS 3.1:7.8 高危(本地,低复杂度,所需权限低)。
影响范围:Linux 2.6.39 至 6.18.x;已在 6.1.175、6.6.140、6.12.86、6.18.27、7.0.4 中修复。
仅供授权测试设备使用的非提权验证工具。
可复现包:test_package/(构建、哈希、ADB 步骤、披露说明)。
前置要求: Android NDK r27+、adb。在 Windows 上:.\build.ps1。
.\build.ps1
adb push build/ghostlock_validate /data/local/tmp/ghostlock_validate
adb shell chmod 755 /data/local/tmp/ghostlock_validate
# Safe default (recommended)
adb shell /data/local/tmp/ghostlock_validate --dry-run --retries 3
# Optional crash probe (may panic) — not for privilege escalation
# adb shell /data/local/tmp/ghostlock_validate --probe --retries 1
--dry-run 成功:EDEADLK=1 + DRY_RUN_STOP_BEFORE_CORRUPTION=1。
证据包(本手机上已演示 / 未演示的内容):evidence/PROOF.md
厂商包(dry-run 记录 + 披露资料包):evidence/vendor_package_20260726/
厂商披露:test_package/docs/VENDOR_DISCLOSURE.md。
其他设备的公开代码仓库(仅作参考,不适用于 amber):evidence/OTHER_DEVICE_REPOS.md
未实现任何凭据 / SELinux / CFI / root 阶段。
报告者:
修复作者: Keenan Dong
修复提交人: Thomas Gleixner
提交:3bfdc63 — rtmutex: 在 remove_waiter() 中使用 waiter::task 代替 current