Linux kernel io_uring receive retry overwrites buffer data
Key facts
- Attack vector
- Local
- Privileges required
- Low
- User interaction
- None
- Attack complexity
- Low
- Impact type
- —
- Confidentiality · integrity · availability
- High · High · High
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA.
Summary
Linux kernel io_uring is affected from 6.6.103 before 6.7, from 6.12.44 before 6.12.115, from 6.15.11 before 6.16, from 6.16.2 before 6.17 and from 6.17. A retried receive commits only the bytes received so far, so unconsumed buffers stay in the ring and another request can be given memory the retry still writes to. A local user with low privileges can corrupt data this way, with high impact to confidentiality, integrity and availability.
Written with Claude Haiku 5.5 from the sources below · 2026-11-03
Description from the CNA
In the Linux kernel, the following vulnerability has been resolved: io_uring/net: don't retry recv on uncommitted buffers Commit 41b70df5b38b ("io_uring/net: commit partial buffers on retry") commits ring provided buffers when a receive is going to be retried after a partial transfer, so that another request using the same buffer group can't be handed the memory the first one keeps receiving into. It commits the number of bytes received so far. That does the job for a single buffer which is consumed as a whole, but the request hangs on to all it has mapped: - For a buffer ring with IOU_PBUF_RING_INC only these bytes are consumed. The rest of the buffer stays at the head of the ring. - For a bundle only the buffers which hold these bytes are consumed, the others that were peeked stay in the ring. In both cases the next receive with that buffer group gets memory that the retried request is still going to write to, and whoever comes last overwrites the data of the other. What the retry fills isn't committed at all, as the buffer list isn't known any more at that point. So the kernel hands it out again later on, while the CQE tells the application that it was used, and for an incremental buffer that it is done with. The remainder can't be committed in advance: if the request ends up receiving less, there is no way to tell the application that more was consumed than the CQE accounts for. Complete the request with what it has got instead of retrying it. MSG_WAITALL is no longer honoured for receives into incremental buffers or multi buffer bundles, they can return a short count, with the request marked as failed like for other short MSG_WAITALL transfers.
Why it matters now
SSVC decision points
Not available: CISA has not published SSVC decision points for this record.
Affected products
Remediation
Upgrade the Linux kernel to a fixed version: 6.7, 6.12.115, 6.16, 6.17, 6.18.60, 7.2.14 or 7.4-rc1, depending on your branch.
Written with Claude Haiku 5.5 from the sources below · 2026-11-03
- Fix · CNA Linux (Linux) Fixed in 6.12.115, 6.7, 6.16, 6.17
- Fix · CNA Linux (Linux) Fixed in 6.12.115, 6.18.60, 7.2.14, 7.4-rc1
Timeline
- 2026-11-03 Threatist record created from CVE-2026-99264
- 2026-11-03 Alias added: GHSA-q4wp-8vpq-9rg3
- 2026-11-03 CVSS score added · CNA
- 2026-11-03 Fix available: Linux/[email protected], Linux/Linux@8444de681a179e41a4eb92d5bbe770a0677074a6 · CNA
- 2026-11-03 1 new reference · CNA
- 2026-11-03 Priority changed: LOW → MEDIUM
- 2026-11-05 Priority changed: MEDIUM → LOW
References
More Linux vulnerabilities
- TI-2025-26358 tls: fix handling of zero-length records on the rx_list KEVCVSS 3.1CRITICAL 9.8
- TI-2026-38352 netfilter: bridge: make ebt_snat ARP rewrite writable KEVCVSS 3.1HIGH 8.8
- TI-2021-02452 Incorrect authorization in Ubuntu linux kernel KEVCVSS 3.1HIGH 8.8
- TI-2013-05264 The (1) get_user and (2) put_user API functions in the Linux kernel before 3.5.5 on the… KEVCVSS 3.1HIGH 8.8
- TI-2022-00125 Integer overflow in kernel KEVCVSS 3.1HIGH 8.4
- TI-2013-01864 The perf_swevent_init function in kernel/events/core.c in the Linux kernel before 3.8.9… KEVCVSS 3.1HIGH 8.4
Sources
- CVE-2026-99264 · CVE Program
- CVE-2026-99264 · NVD
- FIRST EPSS
- GHSA-q4wp-8vpq-9rg3 · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences