Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

CVE-2026-64269

Gravedad CVSS v3.1:
CRÍTICA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
25/07/2026
Última modificación:
30/07/2026

Descripción

*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> RDMA/rtrs-srv: Bound RDMA-Write length to chunk size in rdma_write_sg<br /> <br /> When the server answers an RTRS READ, rdma_write_sg() builds the source<br /> scatter/gather entry for the IB_WR_RDMA_WRITE that returns data to the<br /> peer. Its length is taken directly from the wire descriptor:<br /> <br /> plist-&gt;length = le32_to_cpu(id-&gt;rd_msg-&gt;desc[0].len);<br /> <br /> rd_msg points into the chunk buffer that the remote peer filled via<br /> RDMA-WRITE-WITH-IMM (rtrs_srv_rdma_done() -&gt; process_io_req() -&gt;<br /> process_read()), so desc[0].len is attacker-controlled and, before this<br /> change, was only rejected when zero. The source address is the fixed<br /> chunk start (dma_addr[msg_id]) and the source lkey is the PD-wide<br /> local_dma_lkey, which is not tied to the chunk&amp;#39;s MR mapping, so the verbs<br /> layer does not constrain the transfer length to max_chunk_size. msg_id<br /> and off are bounded against queue_depth and max_chunk_size in<br /> rtrs_srv_rdma_done(), but desc[0].len is a separate field that was not<br /> checked against the chunk size.<br /> <br /> A peer that advertises desc[0].len larger than max_chunk_size can make<br /> the posted RDMA write read past the chunk&amp;#39;s mapped region. The resulting<br /> behaviour depends on the IOMMU configuration: with no IOMMU or in<br /> passthrough mode the read may extend into memory adjacent to the chunk<br /> and be returned to the peer, which can disclose host memory; with a<br /> translating IOMMU the out-of-range access is expected to fault and abort<br /> the connection. In either case the transfer exceeds what the protocol<br /> permits and is driven by a remote peer.<br /> <br /> Reject a descriptor length above max_chunk_size, mirroring the existing<br /> off &gt;= max_chunk_size bound in rtrs_srv_rdma_done(). Legitimate clients<br /> do not exceed it: the client sets desc[0].len to its MR length, which is<br /> capped at the negotiated max_io_size (max_chunk_size - MAX_HDR_SIZE).