CVE-2026-97618 in Linuxinfo

Summary

by MITRE • 09/25/2026

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

io_uring/net: don't overconsume buffers when using MSG_TRUNC

When a recv/recvmsg is issued with MSG_TRUNC and the incoming packet is larger than the provided buffer, the net layer returns the full length of the packet rather than the number of bytes actually copied into the buffer. As a result, io_uring advances more of the provided buffer ring than was actually filled. Use the actual filled region size to consume the buffer, but still return the full size to preserve MSG_TRUNC semantics.

Take care with multishot, because that seems to already truncate the consumption based on the available payload size.

This was reported in https://github.com/axboe/liburing/issues/1619.

[axboe: fold in size_t unsigned fix]

Be aware that VulDB is the high quality source for vulnerability data.

Analysis

by VulDB Data Team • 09/25/2026

The Linux kernel's io_uring subsystem, a high-performance asynchronous I/O framework introduced to replace traditional system call overheads with an event-driven model, contains a specific logic error within its network receive path that leads to buffer ring corruption. This vulnerability specifically affects operations where the MSG_TRUNC flag is utilized during recv or recvmsg calls. The core technical flaw lies in how the kernel calculates the amount of data consumed from the io_uring submission queue entry's associated buffer ring when dealing with packets larger than the user-provided buffer size. Under normal circumstances, if a packet exceeds the buffer capacity, only the portion that fits is copied into memory. However, due to this defect, the net layer returns the full length of the incoming packet rather than the actual number of bytes successfully written to the application's buffer. Consequently, io_uring incorrectly advances its internal pointer by the total packet size instead of the truncated copy size. This discrepancy causes the kernel to mark more buffers as consumed and available for reuse than were actually filled with data, effectively creating a state desynchronization between the logical view of the buffer ring and its physical content.

The operational impact of this vulnerability is severe, primarily manifesting as memory corruption or information disclosure depending on subsequent usage patterns. Because io_uring advances past the actual data boundary, it may mark empty or stale portions of the buffer ring as validly consumed. If these buffers are subsequently reused for new operations without proper re-initialization or if the application relies on the assumption that only the copied bytes contain valid data, the system risks reading uninitialized memory or processing garbage data from previous transactions. In multishot receive scenarios, where a single submission entry is used to continuously accept multiple packets until an error occurs, this bug can lead to rapid accumulation of incorrect consumption metrics. Although some mitigation exists in multishot logic which attempts to truncate consumption based on available payload size, the fundamental flaw remains present for standard single-shot operations and edge cases within multi-packet handling. This can result in application crashes, data leakage across process boundaries if shared buffers are involved, or denial of service through resource exhaustion as the buffer ring state becomes increasingly corrupted over time.

From a classification perspective, this vulnerability aligns with CWE-134: Use of Externally-Controlled Format String and more accurately CWE-787: Out-of-bounds Write in terms of internal kernel memory management logic, although it is technically an out-of-bounds logical consumption rather than a direct heap overflow. It also relates to CWE-20: Improper Input Validation because the system fails to correctly validate the relationship between reported packet size and actual buffer utilization. In the context of the MITRE ATT&CK framework for Linux systems, this flaw facilitates potential privilege escalation or lateral movement if exploited in conjunction with other vulnerabilities, as it undermines the integrity guarantees provided by io_uring's isolation model. The attack vector is local, requiring an unprivileged user to submit specific network receive requests with MSG_TRUNC set and packets larger than their buffer size.

Mitigation strategies involve applying the upstream kernel patch that corrects the consumption logic in net/ipv4/tcp.c or relevant networking subsystem code handling io_uring completions. Developers must ensure they use the actual filled region size for advancing the buffer ring pointer while preserving the return value of the full packet length to maintain semantic correctness for applications expecting MSG_TRUNC behavior. For systems unable to patch immediately, restricting the use of MSG_TRUNC with large buffers in io_uring contexts or falling back to traditional recv system calls can reduce exposure. Additionally, enforcing strict limits on socket receive buffer sizes and monitoring for abnormal termination patterns in network-heavy services may help detect exploitation attempts. The fix has been integrated into stable kernel releases, and administrators should prioritize updating their Linux kernels to versions containing this correction to restore the integrity of asynchronous I/O operations.

Responsible

Linux

Reservation

09/24/2026

Disclosure

09/25/2026

Moderation

accepted

CPE

ready

EPSS

0.00000

KEV

no

Activities

very low

Sources

Do you need the next level of professionalism?

Upgrade your account now!