{"id":24656,"date":"2026-09-16T20:32:36","date_gmt":"2026-09-16T12:32:36","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89969"},"modified":"2026-09-16T20:32:36","modified_gmt":"2026-09-16T12:32:36","slug":"cve-2026-89969","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89969","title":{"rendered":"CVE-2026-89969 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nnvmet-tcp: fix out-of"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nvmet-tcp: fix out-of-bounds write when receiving an over-long PDU<\/p>\n<p>nvmet_tcp_try_recv_pdu() reads a PDU header into the fixed 128-byte<br \/>\nqueue-&gt;pdu union, then computes the remaining payload length as<\/p>\n<p>\tqueue-&gt;left = hdr-&gt;hlen &#8211; queue-&gt;offset + hdgst;<\/p>\n<p>and reads that many more bytes into &amp;queue-&gt;pdu + queue-&gt;offset, without<br \/>\never bounding the result against sizeof(queue-&gt;pdu).<\/p>\n<p>A struct nvme_tcp_icreq_pdu is itself 128 bytes, exactly the size of the<br \/>\nunion. Once a header digest has been negotiated (hdgst = 4), a second<br \/>\nICReq passes the hlen == nvmet_tcp_pdu_size() check but yields<br \/>\nqueue-&gt;left = 128 &#8211; 8 + 4 = 124, so bytes 8..132 are written into the<br \/>\n128-byte buffer &#8212; 4 bytes past its end, over queue-&gt;hdr_digest and<br \/>\nqueue-&gt;data_digest. Those bytes are attacker-controlled (an ICReq<br \/>\ncarries no digest), and the duplicate ICReq is only rejected later,<br \/>\nafter the overflow. A remote unauthenticated host can thus corrupt<br \/>\nkernel memory adjacent to the receive buffer.<\/p>\n<p>Reject any PDU whose declared length would read past the end of<br \/>\nqueue-&gt;pdu before the second recv.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nvmet-tcp: fix out-of-bounds write when receiving an over-long PDU<\/p>\n<p>nvmet_tcp_try_recv_pdu() reads a PDU header into the fixed 128-<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-24656","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/24656","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=24656"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=24656"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=24656"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}