Cyber Resilience

CVE-2026-31774

Memory Safety in Linux Kernel 6.10 – 6.12.81

Published
01 May 2026
Modified
07 May 2026
Patch / advisory
CVSS Score v3.1 7.1
Click a component to see what it means
Raw vectorCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H
EPSS Score 0.0013 2th percentile
Risk Priority 50 floored blend · peak EPSS

CVSS and EPSS are reproduced from their sources (NVD, FIRST EPSS). Risk Priority is our own derived reading, not an NVD score.

Summary

CVE-2026-31774 is a high-severity Out-of-bounds Read (CWE-125) vulnerability in Linux Linux Kernel. Its CVSS base score is 7.1 (High).

Operationally, exploitation aligns with the MITRE ATT&CK technique Exploitation for Privilege Escalation (T1068); ranked at the 2th percentile by exploit likelihood (below the median); it is not currently listed in the CISA KEV catalog.

The strongest mitigations our analysis identified map to SA-11 (Developer Testing and Evaluation) and SA-8 (Security and Privacy Engineering Principles) — see the control section below for these in your framework.

Deeper analysis AI-assisted summary

Synthesised by an AI model from the NVD description and linked references — a reading aid, not an authoritative source.

CVE-2026-31774 is a slab-out-of-bounds read vulnerability in the Linux kernel's io_uring/net subsystem, specifically within the io_bundle_nbufs() function. The issue arises because the sqe->len field, defined as a __u32, is stored into sr->len, which is an int. When userspace provides a sqe->len value exceeding INT_MAX, such as 0xFFFFFFFF, sr->len overflows to a negative value. This negative length propagates through the recv/send path, causing io_recv() to set sel.val to -1 (as ssize_t), io_recv_buf_select() to interpret max_len as 0xFFFFFFFFFFFFFFFF (as size_t), and ultimately leading to an unclamped buf->len in io_ring_buffers_peek(). In io_bundle_nbufs(), this results in min_t(int, 0xFFFFFFFF, ret) yielding -1, which increments nbufs instead of decrementing it, creating an infinite loop that reads past the allocated iovec array from the kmalloc-64 slab.

A local attacker with low privileges can exploit this vulnerability by submitting a malicious io_uring submission queue entry (SQE) with an oversized sqe->len value during bundled recv or send operations. This triggers the integer overflow and infinite loop, resulting in a slab-out-of-bounds read. According to the CVSS v3.1 score of 7.1 (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H), exploitation enables high-impact confidentiality violations through out-of-bounds memory access and high availability disruption via kernel crash or denial of service.

The provided kernel patch references detail the mitigation, which involves rejecting negative sr->len values early in both io_sendmsg_prep() and io_recvmsg_prep() functions. Since sqe->len is a __u32, values greater than INT_MAX are treated as invalid overflows and are blocked upfront, preventing the negative length from propagating through the io_uring net paths. These fixes are available in stable kernel commits at the referenced git.kernel.org URLs.

EU & UK References

Vulnerability Data

In the Linux kernel, the following vulnerability has been resolved: io_uring/net: fix slab-out-of-bounds read in io_bundle_nbufs() sqe->len is __u32 but gets stored into sr->len which is int. When userspace passes sqe->len values exceeding INT_MAX (e.g. 0xFFFFFFFF), sr->len overflows to a…

more

negative value. This negative value propagates through the bundle recv/send path: 1. io_recv(): sel.val = sr->len (ssize_t gets -1) 2. io_recv_buf_select(): arg.max_len = sel->val (size_t gets 0xFFFFFFFFFFFFFFFF) 3. io_ring_buffers_peek(): buf->len is not clamped because max_len is astronomically large 4. iov[].iov_len = 0xFFFFFFFF flows into io_bundle_nbufs() 5. io_bundle_nbufs(): min_t(int, 0xFFFFFFFF, ret) yields -1, causing ret to increase instead of decrease, creating an infinite loop that reads past the allocated iov[] array This results in a slab-out-of-bounds read in io_bundle_nbufs() from the kmalloc-64 slab, as nbufs increments past the allocated iovec entries. BUG: KASAN: slab-out-of-bounds in io_bundle_nbufs+0x128/0x160 Read of size 8 at addr ffff888100ae05c8 by task exp/145 Call Trace: io_bundle_nbufs+0x128/0x160 io_recv_finish+0x117/0xe20 io_recv+0x2db/0x1160 Fix this by rejecting negative sr->len values early in both io_sendmsg_prep() and io_recvmsg_prep(). Since sqe->len is __u32, any value > INT_MAX indicates overflow and is not a valid length.

CWE(s)

Related Threats

MITRE ATT&CK Enterprise Techniques

T1068 Exploitation for Privilege Escalation Privilege Escalation
Adversaries may exploit software vulnerabilities in an attempt to elevate privileges.
T1190 Exploit Public-Facing Application Initial Access
Adversaries may attempt to exploit a weakness in an Internet-facing host or system to initially access a network.
T1203 Exploitation for Client Execution Execution
Adversaries may exploit software vulnerabilities in client applications to execute code.
T1210 Exploitation of Remote Services Lateral Movement
Adversaries may exploit remote services to gain unauthorized access to internal systems once inside of a network.
T1211 Exploitation for Stealth Stealth
Adversaries may exploit vulnerabilities to evade detection by hiding activity, suppressing logging, or operating within trusted or unmonitored components.
T1212 Exploitation for Credential Access Credential Access
Adversaries may exploit software vulnerabilities in an attempt to collect credentials.
Derived from this CVE’s CWE(s) via the direct CWE→ATT&CK cross-walk.

CVEs Like This One

CVE-2024-38572Same product: Linux Linux Kernel
CVE-2024-50278Same product: Linux Linux Kernel
CVE-2025-71112Same product: Linux Linux Kernel
CVE-2026-46078Same product: Linux Linux Kernel
CVE-2023-53357Same product: Linux Linux Kernel
CVE-2023-52731Same product: Linux Linux Kernel
CVE-2024-22705Same product: Linux Linux Kernel
CVE-2026-53303Same product: Linux Linux Kernel
CVE-2024-34777Same product: Linux Linux Kernel
CVE-2025-21794Same product: Linux Linux Kernel

Affected Assets

linux
linux kernel
7.0 · 6.10 — 6.12.81 · 6.13 — 6.18.22 · 6.19 — 6.19.12

Mitigating Controls

Mitigating Controls (NIST 800-53 r5) AI

Developer testing and evaluation directly finds out-of-bounds read flaws through static analysis, fuzzing, and dynamic bounds checks.

Secure engineering principles require bounds checking and memory-safe constructs that stop out-of-bounds reads from being introduced.

Process isolation confines the effects of an out-of-bounds read to the compromised process.

Input validation rejects malformed indices or lengths that would otherwise cause reads outside buffer bounds.

Mitigating Controls (NIST CSF 2.0) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→CSF cross-walk (authority under review) — links open the control.

PR.PS-06 mostly match
prevents

Secure-development practices such as bounds checking and memory-safe languages directly prevent out-of-bounds reads.

ID.RA-01 partial match
prevents

Vulnerability scanning and recording can discover instances of out-of-bounds reads after code is deployed.

PR.PS-02 partial match
prevents

Routine patching replaces vulnerable code containing out-of-bounds read flaws.

Mitigating Controls (ISO/IEC 27001:2022 Annex A) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→ISO cross-walk (authority under review) — links open the control.

finds

Security testing in development and acceptance includes fuzzing and static analysis that detect out-of-bounds read defects before release.

A.8.15 Logging partial match
finds

Logging can record evidence of an out-of-bounds read but does not prevent the weakness itself.

prevents

Secure development life cycle mandates input validation and bounds checking that directly prevent out-of-bounds reads.

prevents

Application security requirements include explicit bounds and memory-safety specifications that mitigate buffer over-reads.

prevents

Secure system architecture and engineering principles require memory-safe design patterns and runtime protections against out-of-bounds access.

prevents

Secure coding standards explicitly forbid unsafe pointer arithmetic and mandate bounds-checked reads, eliminating CWE-125.

References