CVE-2026-99169
NoneCVSS
—
EPSS
0.2%
Published
Oct 28, 2026
CISA due date
—
Cloudanix analysis
A Linux kernel synchronization bug could cause multi-threaded programs to receive the wrong signals between threads, leading to unexpected hangs or coordination failures.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Race Condition
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
FUT_OFF_MMSHARED futex waiters keyed only by MM address can receive wakeups intended for a different MM after address reuse, because a FUT_OFF_INODE waiter can be requeued onto a FUT_OFF_MMSHARED futex by another process.
Why it matters to the business
Multi-threaded applications that rely on futex-based synchronization may experience missed or spurious wakeups, leading to hangs, incorrect thread coordination, or unpredictable behavior in containerized or high-density Linux environments.
How an attack unfolds
An attacker with local access creates processes that requeue futex waiters from inode-based to MM-shared keys, then triggers MM reuse so that a waiter on a freed MM consumes a wakeup meant for a newly allocated MM at the same address; the unique 64-bit per-MM ID fix prevents this cross-MM wakeup misdelivery.
How to fix it
Apply the upstream kernel commit that keys FUT_OFF_MMSHARED futexes with a unique 64-bit per-MM identifier; rebuild and deploy the patched kernel, leaving private futex paths unchanged for performance.
How to confirm the fix worked
Confirm the patch is present by inspecting the futex keying logic for FUT_OFF_MMSHARED; run targeted futex requeue and MM reuse stress tests to verify no cross-MM wakeup leakage occurs.
Typical attack path
- Obtain local unprivileged access on a Linux system
- Create multiple processes and use futex requeue operations to move waiters onto FUT_OFF_MMSHARED keys
- Force MM release and rapid reallocation to reuse the same virtual address
- Deliver wakeups to the new MM while the old waiter is still blocked
- Observe incorrect wakeup consumption or synchronization failure
How to detect it
Examine kernel logs and audit trails for unusual futex-related warnings or scheduler anomalies around process exit and MM reuse; no public exploit artifacts are known.
What your security team should do
- Prioritize kernel updates on multi-tenant and container hosts within the next patch cycle
- Monitor upstream stable branches for backports of the per-MM ID change
- Review any custom futex-using workloads for exposure to MM reuse patterns
The record
In the Linux kernel, the following vulnerability has been resolved: futex: Fix mm reuse handling for FUT_OFF_MMSHARED A FUT_OFF_MMSHARED futex is a shared futex that refers to an MM. It is possible for a process to wait on a shared futex with a different MM because a FUT_OFF_INODE waiter can be requeued onto a FUT_OFF_MMSHARED futex by another process. This can cause FUT_OFF_MMSHARED waiters on a freed MM to consume wakeups intended for a newly allocated MM at the same address. Fix it by keying FUT_OFF_MMSHARED using a unique 64-bit per-MM ID. Leave private futexes as before to avoid influencing the performance of the hotpath. (Multi-threaded processes typically implicitly use FUT_OFF_MMSHARED by setting clear_child_tid such that it points into anonymous memory, which causes mm_release() in a multi-threaded mm to perform FUTEX_WAKE.)
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|