Skip to main content

Linux Kernel EUVDEUVD-2026-59070

| CVE-2026-72112 HIGH
2026-08-15 416baaa9-dc9f-4396-8d5f-8c081fb06d67 GHSA-wgmw-xwr6-63ww
7.8
CVSS 3.1 · Vendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Share

Severity by source

Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67) PRIMARY
7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
7.8 HIGH

Local exploitation via CAP_BPF + CAP_PERFMON justifies AV:L and PR:L; kernel UAF yields full C/I/A with no scope change.

3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
SUSE
6.7 MEDIUM
AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
Red Hat
5.5 MEDIUM
qualitative

Primary rating from Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67).

CVSS VectorVendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

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

Lifecycle Timeline

5
Analysis Generated
Aug 17, 2026 - 06:56 vuln.today
CVSS changed
Aug 17, 2026 - 06:22 NVD
7.8 (HIGH)
Patch available
Aug 15, 2026 - 07:20 EUVD
CVE Published
Aug 15, 2026 - 06:21 cve.org
HIGH 7.8
CVE Published
Aug 15, 2026 - 06:21 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

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

io_uring/bpf-ops: reject re-registration of an already-bound ops

io_install_bpf() only rejects a second registration on the ctx side (ctx->bpf_ops) and sets the per-map back-pointer ops->priv unconditionally. The struct_ops link path never advances a map past BPF_STRUCT_OPS_STATE_READY, so the same io_uring_bpf_ops map can be registered more than once, and bpf_io_reg() re-resolves the target ring via fget(ops->ring_fd) on every call. A caller can therefore point the same ring_fd at a different io_ring_ctx between two BPF_LINK_CREATE calls.

The second registration passes the ctx->bpf_ops check (the new ctx has none) and overwrites ops->priv, orphaning the first ctx. Teardown (io_eject_bpf()/bpf_io_unreg()) only reaches a ctx through ops->priv, so the orphaned ctx is never torn down: its ctx->loop_step keeps pointing into the struct_ops trampoline, which is freed once the map is gone. A later io_uring_enter() on the orphaned ring then calls the dangling ctx->loop_step from io_run_loop() -- a use-after-free of freed executable memory, reachable by a task with CAP_BPF + CAP_PERFMON.

Reject registration when ops->priv is already set, as hid_bpf_reg() does for its struct_ops.

AnalysisAI

Use-after-free of freed executable memory in the Linux kernel's io_uring/bpf-ops subsystem allows a local attacker with CAP_BPF and CAP_PERFMON capabilities to achieve arbitrary kernel code execution by registering the same io_uring_bpf_ops struct_ops map against multiple io_ring_ctx instances in sequence. The missing re-registration guard on ops->priv causes the first io_ring_ctx to be orphaned with a dangling ctx->loop_step function pointer into a freed BPF trampoline, which is invoked when io_uring_enter() is later called on that ring. No public exploit has been identified at time of analysis, and EPSS at 0.20% reflects low near-term mass-exploitation probability, though the primitive - controlled call into freed executable memory - is a classic kernel privilege escalation building block.

Technical ContextAI

The vulnerability resides in the Linux kernel's io_uring subsystem, specifically the BPF struct_ops integration implemented in io_uring/bpf-ops. The io_install_bpf() function manages binding of BPF struct_ops maps to io_ring_ctx instances. The root cause is an asymmetric registration guard: the function checks ctx->bpf_ops on the context side but unconditionally overwrites the map-side back-pointer ops->priv on every call. Because the BPF struct_ops link path never advances a map past BPF_STRUCT_OPS_STATE_READY, the same io_uring_bpf_ops map object remains eligible for re-registration. A second BPF_LINK_CREATE call against a fresh io_ring_ctx passes the ctx->bpf_ops check (the new context has none), overwrites ops->priv, and orphans the first ctx. Teardown paths io_eject_bpf() and bpf_io_unreg() only reach a context through ops->priv, so the orphaned ctx is never cleaned up. Its ctx->loop_step remains pointing into the struct_ops trampoline, which is freed when the map is released. A subsequent io_uring_enter() on the orphaned ring dispatches through io_run_loop() into that dangling pointer - a use-after-free of freed executable memory. The CWE is listed as N/A in NVD input but is unambiguously CWE-416 (Use After Free) based on the technical description. Affected kernel versions span Linux 7.1 through pre-fix 7.1.x and 7.2-rc4, as documented by EUVD-2026-59070.

RemediationAI

The primary fix is to upgrade to Linux kernel 7.1.5 or apply the 7.2-rc4 build containing fix commits 0639ea767fe04c288a8d6cb826100fe3d95d4936 and 3afc64c61ce906a04f073ca350b46de10e8302f9, available at https://git.kernel.org/stable/c/0639ea767fe04c288a8d6cb826100fe3d95d4936 and https://git.kernel.org/stable/c/3afc64c61ce906a04f073ca350b46de10e8302f9 respectively. The fix adds a re-registration guard on ops->priv before overwriting it, mirroring the existing pattern in hid_bpf_reg(). For systems where an immediate kernel update is not feasible, setting kernel.unprivileged_bpf_disabled=1 via sysctl prevents non-root processes from acquiring BPF capabilities through the unprivileged path, though this may break legitimate eBPF-based observability tooling such as Cilium or Falco and should be evaluated against operational dependencies. Disabling io_uring entirely via kernel.io_uring_disabled=1 is a more disruptive but complete mitigation, eliminating the attack surface at the cost of io_uring-dependent application performance. Auditing container security contexts and system-wide capability grants (getcap, /proc/*/status CapEff) to identify processes holding CAP_BPF combined with CAP_PERFMON is recommended as an immediate detective control.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 16.0 Not-Affected

Share

EUVD-2026-59070 vulnerability details – vuln.today

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