Skip to main content

Linux Kernel CVE-2026-99231

| EUVDEUVD-2026-115273 HIGH
2026-11-02 Linux GHSA-r5jr-3m3c-4rp2
7.8
CVSS 3.1 · Vendor: Linux
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Gain local unprivileged shell
  2. Delivery
    Submit concurrent io_uring waitid requests
  3. Exploit
    Win race clearing ->head early
  4. Execution
    Reuse freed request via grooming
  5. Impact
    Corrupt kernel memory for escalation

Vulnerability Assessment

Exploitation Conditions

Requires local access as an unprivileged user able to issue io_uring syscalls, and the io_uring subsystem must be enabled/reachable on the host (PR:L, AV:L). The specific trigger stated in the source is a race: io_waitid_wait() clears ->head before taking ownership via ->refs, so an attacker must win a narrow timing window where another path (io_waitid concurrent completion or __io_waitid_cancel) claims and frees the request, after which the freed slot is reused (the report shows reuse by a receive waiting for data). Limiting factors: exploitation is timing-sensitive and non-deterministic (the reporter held the window open with an artificial delay), it needs local presence rather than remote access, and it depends on io_uring being available to the attacking user - hosts that disable io_uring (e.g. via io_uring_disabled sysctl or seccomp) are not exposed.

Impact

Signals are mixed and point to a genuine but not emergency-grade local kernel issue. The provided CVSS vector (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H, 7.8) describes a locally exploitable, low-privilege flaw with full confidentiality, integrity and availability impact - consistent with a use-after-free in the io_uring waitid path that the description confirms leads to a KASAN slab-use-after-free and a reused/freed request. There is NO network exposure (AV:L), so this is a local privilege-escalation / memory-corruption class issue, not a remotely reachable one. No CISA KEV listing is present in the input, no EPSS score was supplied, and no proof-of-concept or exploit reference is included (the three references are kernel.org stable git commits, i.e. the fix itself). The vuln.today decision label is 'this_week', indicating elevated-but-not-critical urgency rather than act_now/emergency. One data conflict to flag explicitly: the Tags list 'Information Disclosure', but the CVSS vector and description indicate full C:H/I:H/A:H memory corruption via use-after-free - the impact is broader than information disclosure, so do not treat this as a read-only leak. EPSS is absent, so exploitation probability cannot be quantified. Overall this is a real priority for multi-tenant or untrusted-local-user Linux hosts, but the local-only vector and timing-dependent race meaningfully reduce real-world mass-exploitation likelihood.

Exploit ScenarioDerived

A local unprivileged user on a Linux host with io_uring enabled submits concurrent io_uring waitid operations and races the completion/cancel path so that ->head is cleared before the handler owns the request, causing a freed request to be reused while the wake-up handler still touches it. Winning this narrow timing window yields a kernel use-after-free that can be groomed (as the report shows, the freed slot was reused by a receive operation) toward memory corruption and potential privilege escalation. No public exploit or PoC is identified in the available data; the only references are the upstream fix commits.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Nov 02, 2026

Use-after-free in the Linux kernel's io_uring waitid handling can allow a local user who can issue io_uring syscalls to corrupt kernel memory and potentially escalate privileges, because a race between request completion and the waitid wake handler can free and reuse the request while a wakeup callback still touches it. The flaw is timing-sensitive and requires local access (AV:L, PR:L, AC:H in the independent assessment); it is not remotely exploitable, and hosts that disable io_uring are not exposed. No public exploit code or active exploitation has been identified at time of analysis.

RemediationAI

Apply the upstream stable fixes referenced at https://git.kernel.org/stable/c/bf01da1a9cca4a54e5c30b8344e52c26afb87be7, https://git.kernel.org/stable/c/8381a912c65b8de16e8a848225c7c5a56b6ea834 and https://git.kernel.org/stable/c/c10ad2813e15186fb51b37a4d17fafddc99e89a5 and update to a kernel build that contains those commits; exact released version numbers are not provided in the input, so the commit hashes are the authoritative fixed marker, and no separate workaround is stated in the sources. If an immediate kernel update is not possible, the exposure can be removed by disabling io_uring for unprivileged users through the io_uring_disabled sysctl or by blocking io_uring_setup with a seccomp filter, with the trade-off that applications relying on io_uring will fail or lose functionality.

Affected VersionsENISA

Linux patch: 7.2.14
Linux 09951a4d37e33b0197afc7fb77e39f09a3213ee6 <bf01da1a9cca4a54e5c30b8344e52c26afb87be7
Linux 934ffdd1cdef232eb125e63c2ebafb7f2deff6af <8381a912c65b8de16e8a848225c7c5a56b6ea834
Linux patch: 6.12.115
Linux ab673c1bcaf20ac70352eeb6bf5b828462676693 <c10ad2813e15186fb51b37a4d17fafddc99e89a5
Linux 6.18.52 <6.18.60
Linux 6.19
Linux patch: 6.18.60
Linux 6.12.113 <6.12.115
Linux patch: 0

Affected Packages

euvd linux fix: 6.12.115, 6.18.60

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

io_uring is the Linux kernel's asynchronous I/O submission and completion framework, and its waitid opcode implements child-process waiting as an io_uring request. The request tracks wait-queue linkage through ->head and ownership through ->refs. In the vulnerable code, io_waitid_wait() removed the wait entry and cleared ->head before incrementing ->refs to claim the request; if a concurrent completion path or __io_waitid_cancel() claimed the request in that window, the request could be completed and freed, after which the handler incremented a ->refs field now belonging to whatever request reused the same slot. The reported KASAN splat shows a slab-use-after-free reached through __wake_up_common during socket wakeups after reuse by an async poll/receive, matching a race condition leading to use-after-free; CWE is not supplied. The fix moves clearing ->head until after ownership is acquired by bumping ->refs, so an owner that finds ->head set must wait on the lock held by the caller of the handler. The supplied CPE strings are the generic linux:linux entry with no version granularity, and the upstream stable fixes are commits bf01da1a9cca4a54e5c30b8344e52c26afb87be7, 8381a912c65b8de16e8a848225c7c5a56b6ea834 and c10ad2813e15186fb51b37a4d17fafddc99e89a5. The input CVSS vector uses AC:L, while the independent assessment sets AC:H to reflect the narrow, non-deterministic race window.

Know when the next one hits your stack

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (Linux) PRIMARY 7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 7.0 HIGH

Local io_uring access gives AV:L/PR:L; the source explicitly describes a timing race requiring a held-open window, justifying AC:H; use-after-free memory corruption supports C/I/A:H.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Nov 02, 2026 - 17:18 EUVD
CVE Published
Nov 02, 2026 - 16:06 cve.org
HIGH 7.8

DescriptionCVE.org

In the Linux kernel, the following vulnerability has been resolved:

io_uring/waitid: own the request before clearing ->head

io_waitid_remove_wq() only takes the wait queue lock if ->head is set. io_waitid_wait() clears ->head first thing, before it tries to become the owner of the request by bumping ->refs. If somebody else owns the request at that point, nothing keeps it from completing the request while the wake up handler is still going to touch it:

CPU0 (io_waitid_wait) CPU1 (io_waitid, holds a ref) list_del_init(&wait->entry) smp_store_release(&iw->head, NULL) __do_wait() finds another child io_waitid_remove_wq() // ->head == NULL, no locking io_waitid_finish(), IOU_COMPLETE // request freed and reused atomic_fetch_inc(&iw->refs)

The same goes for __io_waitid_cancel() if it claims the request in that window. ->refs is part of the per opcode data of the request, so this increments whatever the next user of the request keeps there. If that happens to be zero, the handler concludes that it owns the request, and queues io_waitid_cb() for it. With the window held open by a delay, and the request reused for a receive that is waiting for data:

BUG: KASAN: slab-use-after-free in __wake_up_common+0x1ca/0x1f0 __wake_up_sync_key+0x36/0x50 sock_def_readable+0xf1/0x420 unix_stream_sendmsg+0x60b/0x1110 Allocated by task 87: io_arm_apoll+0x1ed/0x940 Freed by task 87: __io_submit_flush_completions+0x118d/0x1a10 tctx_task_work_run+0x327/0x950

Only clear ->head once the handler owns the request. If it doesn't, the owner finds ->head set and has to wait for the lock, which is held by the caller of the handler. Deleting the already deleted entry again is harmless.

Executive ViewAI

Why It Matters

A high-severity vulnerability in the Linux kernel's io_uring subsystem could allow a local attacker to corrupt kernel memory and escalate privileges. Leadership should prioritize patching this flaw because compromised local accounts or malicious insiders could gain full control of affected systems, though exploitation requires specific timing and local access, reducing immediate risk.

Business Impact: High
Compensating Controls

Disable io_uring via kernel boot parameter (io_uring_disabled=2) or seccomp filtering; restrict local access to trusted users; monitor for privilege escalation attempts.

Threat Intelligence Overview

Prevalence
Ubiquitous
Linux kernel io_uring subsystem; present across virtually all modern Linux deployments
Data Quality
2 sources
Confidence: Low

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact
High

Priority Score

39
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +39
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy