HIGH
rtmutex Waiter UAF
CVE-2026-43499
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI7.8HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: rtmutex: Use waiter::task instead of current in remove_waiter() remove_waiter() is used by the slowlock paths, but it is also used for proxy-lock rollback in rt_mutex_start_proxy_lock() when invoked from futex_requeue(). In the latter case waiter::task is not current, but remove_waiter() operates on current for the dequeue operation. That results in several problems: 1) the rbtree dequeue happens without waiter::task::pi_lock being held 2) the waiter task's pi_blocked_on state is not cleared, which leaves a dangling pointer primed for UAF around. 3) rt_mutex_adjust_prio_chain() operates on the wrong top priority waiter task Use waiter::task instead of current in all related operations in remove_waiter() to cure those problems. [ tglx: Fixup rt_mutex_adjust_prio_chain(), add a comment and amend the changelog ]
02KernelScan AI Analysis
Risk summary
Local attackers with low privileges can exploit a use-after-free vulnerability in the rtmutex subsystem to achieve arbitrary kernel memory corruption. The bug occurs when futex_requeue() triggers proxy-lock rollback, leaving dangling pointers that can be exploited for privilege escalation or system compromise.
Vulnerability analysis
The vulnerability stems from remove_waiter() incorrectly using 'current' instead of 'waiter->task' when called from futex_requeue() proxy-lock rollback paths. This causes three critical issues: rbtree dequeue without proper locking, failure to clear pi_blocked_on state leaving dangling pointers primed for UAF, and priority chain operations on the wrong task. The fix ensures waiter->task is used consistently, preventing the use-after-free condition by properly managing task state and locking. Attack surface is local-only, requiring access to futex syscalls which are available to unprivileged users.
03Fix Versions
| Branch | Fixed in | Patch commit |
|---|---|---|
| 6.1 | 6.1.175 | d8cce4773c2b |
| 6.12 | 6.12.86 | 6d52dfcb2a5d |
| 6.18 | 6.18.27 | 3fb7394a8377 |
| 6.6 | 6.6.140 | 8a1fc8d698ac |
| 7.0 | 7.0.4 | 88614876370a |
| mainline | 7.1-rc1 | 3bfdc63936dd |