Severity by source
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Local unprivileged futex syscall so AV:L/PR:N; win-the-race, PREEMPT_RT-only trigger makes AC:H; UAF yields kernel crash (A:H) with slab corruption (I:L), no disclosure (C:N).
Primary rating from Vendor (Linux).
CVSS VectorVendor: Linux
Lifecycle Timeline
7DescriptionCVE.org
In the Linux kernel, the following vulnerability has been resolved:
futex: Prevent rcuwait use-after-free during requeue PI
On PREEMPT_RT, FUTEX_CMP_REQUEUE_PI can trigger a KASAN report (slab-out-of-bounds) in futex_requeue_pi_complete() invocation of rcuwait_wake_up().
The futex_q used by futex_wait_requeue_pi() is allocated on the waiter's stack. An early wakeup can race with a PI requeue as follows:
waiter requeue task ------ ------------ futex_wait_requeue_pi() futex_do_wait() schedule() futex_requeue futex_proxy_trylock_atomic() futex_requeue_pi_prepare() Q_REQUEUE_PI_NONE -> Q_REQUEUE_PI_IN_PROGRESS
- timeout/ signal wakes waiter *
futex_requeue_pi_wakeup_sync() Q_REQUEUE_PI_IN_PROGRESS -> Q_REQUEUE_PI_WAIT requeue_pi_wake_futex futex_requeue_pi_complete() cmpxchg Q_REQUEUE_PI_WAIT -> Q_REQUEUE_PI_LOCKED rcuwait_wait_event() if (atomic_read(&q->requeue_state) != Q_REQUEUE_PI_WAIT) break /* no schedule() */
/* q.pi_state->owner == current */ futex_private_hash_put() /* return from syscall */ rcuwait_wake_up(&q->requeue_wait) /* q is gone */
futex_requeue_pi_complete() publishes Q_REQUEUE_PI_LOCKED before calling rcuwait_wake_up(). The waiter observes this state in rcuwait_wait_event() before invoking schedule() in rcuwait_wait_event(). Here, the waiter is free leave the syscall before requeue task can complete the wake.
To address this race skip rcuwait_wake_up() in the Q_REQUEUE_PI_LOCKED case. This state is only published by requeue_pi_wake_futex(), which saves q->task before futex_requeue_pi_complete() and wakes the waiter via wake_up_state().
This wake is intended to wake the waiter from its futex_do_wait() sleep. If the waiter is still sleeping there, it can not get into the Q_REQUEUE_PI_WAIT state (and require this removed wake). Should the waiter be woken up from futex_do_wait() by other means (as in this example) and sleep in futex_requeue_pi_wakeup_sync() then the wake_up_state() from requeue_pi_wake_futex() will wake it, too. Should the waiter task terminate before wake_up_state() had a chance to wake the task then the task pointer does not become invalid because the futex_hash_bucket::lock is held and the task pointer is RCU protected.
[bigeasy: Updated comment and commit message]
AnalysisAI
A race condition in the Linux kernel futex priority-inheritance requeue path (FUTEX_CMP_REQUEUE_PI) allows a waiter's stack-allocated futex_q to be freed while a concurrent requeue task is still about to call rcuwait_wake_up() on it, producing a slab-out-of-bounds use-after-free that typically surfaces as a KASAN report and kernel crash. Only kernels built with PREEMPT_RT reach the affected code path; on such systems any local, unprivileged process can trigger it, but exploitation requires winning a narrow, non-deterministic timing window in which an early wakeup (futex timeout or delivered signal) races the concurrent PI requeue. …
Unlock full vulnerability intelligence
- Risk assessment & exploitation conditions
- Attack chain visualization
- Remediation with exact patch versions
- Threat intelligence from 22 sources
- Personal watchlist & email alerts
Free forever · No credit card required
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata
Vulnerability AssessmentAI
| Exploitation | Requires a kernel built with PREEMPT_RT (real-time preemption); mainline non-RT kernels do not hit this path as described. … Additional conditions and limiting factors are described in the full assessment. |
| Risk Assessment | This is a classic case of an over-scored Linux kernel race-condition CVE. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in. |
| Exploit Scenario | Full exploit scenario with step-by-step reproduction available after sign-in. |
| Remediation | Vendor-released patches are available: upgrade to Linux 6.1.188, 6.6.157, 6.12.110, 6.18.51 or 7.2.5 (or mainline 7.3-rc2), which correspond to the stable commits https://git.kernel.org/stable/c/220ee9e04ca3b7f014c000264aa6c884f036c86e, https://git.kernel.org/stable/c/81aadbd09bf1dcd3238212f336ba699503557ae8, https://git.kernel.org/stable/c/244f301759fd34b1dd0b4192ce44f8ef224e027d, https://git.kernel.org/stable/c/7d1559126d86be6e4f6a85663dfbfe85caa47e37, https://git.kernel.org/stable/c/e4a4ccfa470f910b747b3ee8d18670ed8ac8a236 and https://git.kernel.org/stable/c/a3b8d46fe401cba3a5c46dea610e6eb3dc15370e. … Detailed patch versions, workarounds, and compensating controls in full report. |
Recommended ActionAI
Within 24 hours, inventory all Linux systems for PREEMPT_RT kernels, check the vendor advisory for the applicable patched kernel version, and apply the vendor patch to the highest-impact real-time systems; if immediate patching is not possible, restrict local access to trusted operators and monitor kernel logs for crashes or KASAN reports. …
Sign in for detailed remediation steps and compensating controls.
Threat intelligence, references, and detailed analysis are available after sign-in.
Same technique Denial Of Service
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-80611
GHSA-m59r-fcc7-pm78