RDMA/siw: bound Read Response placement to the RREAD length (Linux Linux)

CVE-2026-64268
CRITICAL 9.8

At a glance

Source
NVD
EPSS
EPSS 0.71 % · percentile 54 ()
State
PUBLISHED
Published
Updated
Assigner
Linux
NVD status
Modified

Description

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/siw_qp_rx.c, siw_proc_rresp() 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. siw_check_sge() resolves and validates the sink memory only on the first fragment (the if (!*mem) branch), and siw_rresp_check_ntoh() compares the cumulative length against wqe->bytes only on the final segment (the !frx->more_ddp_segs 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 siw_rx_data() 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 siw_proc_send() and siw_proc_write() 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.

Weaknesses (CWE)

  • CWE-787 — Out-of-bounds Write

References

Scores

VersionScoreVectorScored by
CVSS 3.1CRITICAL 9.8CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLinux
CVSS 3.1CRITICAL 9.8CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HNVD · 416baaa9-dc9f-4396-8d5f-8c081fb06d67 (Secondary)

European references

CERT-FR advisories

Affected configurations (NVD CPE)

Affected products

ProductVersions
Linux · Linuxaffected 8b6a361b8c482f22ac99c3273285ff16b23fba91 < a31b6d18ded3cc32d9ee85a6ff0726d4274887b2 ; affected 8b6a361b8c482f22ac99c3273285ff16b23fba91 < 595e6537ad1a210da32cbb9a7f91aa73090915ba ; affected 8b6a361b8c482f22ac99c3273285ff16b23fba91 < 3ef7e052cbd05a8b13a51a07b185a39ec93ee1cf ; affected 8b6a361b8c482f22ac99c3273285ff16b23fba91 < b2e26c955f8dd7e8d3f16c858db05245ea4fa817 ; affected 8b6a361b8c482f22ac99c3273285ff16b23fba91 < 6bc89f34a4597f9f6d41f7a60c67a3153bfe8851 ; affected 8b6a361b8c482f22ac99c3273285ff16b23fba91 < 423a78ff7928c2601013f73ec6d896f5597d0df5
Linux · Linuxaffected 5.3 ; unaffected 0 < 5.3 ; unaffected 5.10.261 ≤ 5.10.* ; unaffected 5.15.212 ≤ 5.15.* ; unaffected 6.1.178 ≤ 6.1.* ; unaffected 6.6.145 ≤ 6.6.*

Sources

SourceLicence
CVE List (CVEProject cvelistV5)CVE Program Terms of Use
EPSS (FIRST.org)FIRST — attribution requested
ENISA EUVDENISA — reproduction authorised, source acknowledged
CERT-FR (ANSSI)Licence Ouverte / Etalab 2.0
NVD (NIST) via fkie-cad/nvd-json-data-feedsPublic domain — this product uses data from the NVD API but is not endorsed or certified by the NVD