{"id":6763,"date":"2026-09-04T18:49:16","date_gmt":"2026-09-04T10:49:16","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72084"},"modified":"2026-09-04T18:49:16","modified_gmt":"2026-09-04T10:49:16","slug":"cve-2026-72084","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72084","title":{"rendered":"CVE-2026-72084 [CRITICAL] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: target: Bound P"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>scsi: target: Bound PR-OUT TransportID parsing to the received buffer<\/p>\n<p>core_scsi3_decode_spec_i_port() and core_scsi3_emulate_register_and_move()<br \/>\nhand the raw PERSISTENT RESERVE OUT parameter buffer to<br \/>\ntarget_parse_pr_out_transport_id() without telling it how many bytes are<br \/>\nvalid.  For an iSCSI TransportID (FORMAT CODE 01b),<br \/>\niscsi_parse_pr_out_transport_id() locates the &#8220;,i,0x&#8221; ISID separator with<br \/>\nan unbounded strstr() (and on the error path prints the name with a further<br \/>\nunbounded &#8220;%s&#8221;).  An initiator can submit a TransportID whose iSCSI name<br \/>\ncontains neither a &#8220;,i,0x&#8221; substring nor a NUL terminator, filling the<br \/>\nparameter list to its end, so the scan runs off the end of the buffer.<\/p>\n<p>When the parameter list spans more than one page the buffer is a multi-page<br \/>\nvmap (transport_kmap_data_sg()), so the over-read walks into the trailing<br \/>\nvmalloc guard page and oopses (KASAN: vmalloc-out-of-bounds in strstr).  It<br \/>\nis reachable by any fabric that delivers a PR OUT to a device exported<br \/>\nthrough an iSCSI TPG, including a guest via vhost-scsi.<\/p>\n<p>Pass the number of received bytes down to the parser and validate the iSCSI<br \/>\nTransportID&#8217;s own self-described length (ADDITIONAL LENGTH + 4) once, up<br \/>\nfront: reject it if it is below the spc4r17 minimum or larger than the<br \/>\nreceived buffer, then bound the separator search, the ISID walk and the<br \/>\nname copy by that length.  This is the length check the callers already<br \/>\nperform after the parse (core_scsi3_decode_spec_i_port() compares tid_len<br \/>\nagainst tpdl, core_scsi3_emulate_register_and_move() validates it against<br \/>\ndata_length), moved ahead of the scan.  Also drop the unbounded &#8220;%s&#8221; of the<br \/>\nunterminated name.<\/p>\n<p>Add per-format explicit name-length checks before copying into i_str,<br \/>\nrather than silently truncating with min_t: for FORMAT CODE 00b reject if<br \/>\nthe descriptor body (tid_len &#8211; 4 bytes) cannot fit in<br \/>\ni_str[TRANSPORT_IQN_LEN]; for FORMAT CODE 01b reject if the name portion<br \/>\n(from &amp;buf[4] up to the separator) cannot fit.  Both checks make the bounds<br \/>\nintent explicit at each format branch.<\/p>\n<p>While here, also reject a FORMAT CODE 01b TransportID whose &#8220;,i,0x&#8221;<br \/>\nseparator sits at the very end of the descriptor: that leaves an empty ISID<br \/>\nand points the returned port nexus pointer at buf + tid_len, one past the<br \/>\ndescriptor, which the registration code (__core_scsi3_locate_pr_reg(),<br \/>\n__core_scsi3_alloc_registration()) then dereferences as the ISID string &#8212;<br \/>\nthe same over-read of the parameter buffer for a malformed descriptor.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>scsi: target: Bound PR-OUT TransportID parsing to the received buffer<\/p>\n<p>core_scsi3_decode_spec_i_port() and core_scsi3_emulate_regis<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-6763","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/6763","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=6763"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6763"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6763"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}