{"id":24655,"date":"2026-09-16T20:32:36","date_gmt":"2026-09-16T12:32:36","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89968"},"modified":"2026-09-16T20:32:36","modified_gmt":"2026-09-16T12:32:36","slug":"cve-2026-89968","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89968","title":{"rendered":"CVE-2026-89968 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nnvmet-tcp: reject uns"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nvmet-tcp: reject unsolicited H2CData PDUs<\/p>\n<p>nvmet_tcp_handle_h2c_data_pdu() accepts an H2CData PDU after only checking<br \/>\nthat its TTAG is a valid in-range command index and that the command&#8217;s<br \/>\ndata buffers are mapped. It never checks that the target has actually<br \/>\nsolicited that data by sending an R2T for the command.<\/p>\n<p>A remote host can abuse this. It submits a write command that takes the<br \/>\nR2T path and, before the target transmits the R2T, sends an H2CData PDU<br \/>\nfor that command&#8217;s tag. The data completes the command early, and when<br \/>\nthe command then fails synchronously (e.g. a length mismatch caught by<br \/>\nnvmet_check_transfer_len()), it is completed a second time. Each<br \/>\ncompletion calls nvmet_tcp_queue_response(), so the same command is added<br \/>\nto queue-&gt;resp_list twice while it is still linked; the second llist_add()<br \/>\nmakes the node point to itself (lentry-&gt;next == lentry).<\/p>\n<p>nvmet_tcp_process_resp_list() then walks that self-referential node and<br \/>\nadds the command to resp_send_list twice. With CONFIG_DEBUG_LIST this<br \/>\ntrips the &#8220;list_add double add&#8221; check (kernel BUG); without it the loop<br \/>\nnever terminates and the nvmet_tcp workqueue wedges (soft-lockup). It is<br \/>\nremotely triggerable and needs no authentication on an allow_any_host<br \/>\nsubsystem.<\/p>\n<p>Track whether an R2T has been transmitted for a command and reject an<br \/>\nH2CData PDU that arrives before it. The flag is cleared on command reuse<br \/>\n(nvmet_tcp_get_cmd() zeroes cmd-&gt;flags) and stays set across the multiple<br \/>\nH2CData PDUs of a single solicited transfer.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nvmet-tcp: reject unsolicited H2CData PDUs<\/p>\n<p>nvmet_tcp_handle_h2c_data_pdu() accepts an H2CData PDU after only checking<br \/>\nthat its TTA<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-24655","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/24655","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=24655"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=24655"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=24655"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}