CVE-2026-64268: RDMA/siw: bound Read Response placement to the RREAD length
In the Linux kernel, the following vulnerability has been resolved:
RDMA/siw: bound Read Response placement to the RREAD length
In drivers/infiniband/sw/siw/siwqprx.c, siwprocrresp() places each inbound Read Response DDP segment at sge->laddr + wqe->processed and then accumulates wqe->processed, but it never checks the running total against the sink buffer length on continuation segments. siwchecksge() resolves and validates the sink memory only on the first fragment (the if (!mem) branch), and siwrrespcheckntoh() compares the cumulative length against wqe->bytes only on the final segment (the !frx->moreddpsegs guard).
A connected siw peer that answers an outstanding RREAD with Read Response segments that keep the DDP Last flag clear, carrying more total payload than the RREAD requested, drives wqe->processed past the validated sink buffer; the next siwrxdata() call writes out of bounds at sge->laddr + wqe->processed. siw runs iWARP over ordinary routable TCP, so the peer is the remote end of an established RDMA connection and needs no local privilege.
Bound every segment before placement, exactly as siwprocsend() and siwprocwrite() already do for their tagged and untagged paths, and terminate the connection with a base-or-bounds DDP error when the Read Response would overrun the sink buffer.
This is the second receive-path length fix for this file. A separate change rejects an MPA FPDU length that underflows the per-fragment remainder in the header decode; that guard does not cover this case, because here each individual segment length is self-consistent and only the accumulated placement offset overruns the buffer.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 6.6.145.2-1 - Configuration
In drivers/infiniband/sw/siw/siw_qp_rx.c (siw_proc_rresp()), ensure the placement/offset used for Read Response is validated against the outstanding RREAD length so the cumulative placement does not overrun the sink buffer. This addresses Read Response placement overrun when individual segments are self-consistent but the accumulated length overruns.
Linux kernel (drivers/infiniband/sw/siw/siw_qp_rx.c) Read Response (rresp) placement bounds = Bound Read Response placement to the RREAD length
Event History
Frequently Asked Questions
What is the severity of CVE-2026-64268?
CVE-2026-64268 has a critical severity rating of 9.8 on the CVSS scale.
What is the risk level associated with CVE-2026-64268?
CVE-2026-64268 carries a risk level of 86.
How do I fix CVE-2026-64268?
To fix CVE-2026-64268, update your Linux kernel to the latest version where the vulnerability has been resolved.
What impact does CVE-2026-64268 have on systems?
CVE-2026-64268 can lead to potential denial of service or memory corruption due to improper Read Response handling.
Which software is affected by CVE-2026-64268?
CVE-2026-64268 affects the Linux kernel specifically in RDMA/siw components.