CVE-2026-72084 in Linuxinfo

Summary

by MITRE • 08/15/2026

In the Linux kernel, the following vulnerability has been resolved:

scsi: target: Bound PR-OUT TransportID parsing to the received buffer

core_scsi3_decode_spec_i_port() and core_scsi3_emulate_register_and_move() hand the raw PERSISTENT RESERVE OUT parameter buffer to target_parse_pr_out_transport_id() without telling it how many bytes are valid. For an iSCSI TransportID (FORMAT CODE 01b), iscsi_parse_pr_out_transport_id() locates the ",i,0x" ISID separator with an unbounded strstr() (and on the error path prints the name with a further unbounded "%s"). An initiator can submit a TransportID whose iSCSI name contains neither a ",i,0x" substring nor a NUL terminator, filling the parameter list to its end, so the scan runs off the end of the buffer.

When the parameter list spans more than one page the buffer is a multi-page vmap (transport_kmap_data_sg()), so the over-read walks into the trailing vmalloc guard page and oopses (KASAN: vmalloc-out-of-bounds in strstr). It is reachable by any fabric that delivers a PR OUT to a device exported through an iSCSI TPG, including a guest via vhost-scsi.

Pass the number of received bytes down to the parser and validate the iSCSI TransportID's own self-described length (ADDITIONAL LENGTH + 4) once, up front: reject it if it is below the spc4r17 minimum or larger than the received buffer, then bound the separator search, the ISID walk and the name copy by that length. This is the length check the callers already perform after the parse (core_scsi3_decode_spec_i_port() compares tid_len against tpdl, core_scsi3_emulate_register_and_move() validates it against data_length), moved ahead of the scan. Also drop the unbounded "%s" of the unterminated name.

Add per-format explicit name-length checks before copying into i_str, rather than silently truncating with min_t: for FORMAT CODE 00b reject if the descriptor body (tid_len - 4 bytes) cannot fit in i_str[TRANSPORT_IQN_LEN]; for FORMAT CODE 01b reject if the name portion
(from &buf[4] up to the separator) cannot fit. Both checks make the bounds
intent explicit at each format branch.

While here, also reject a FORMAT CODE 01b TransportID whose ",i,0x" separator sits at the very end of the descriptor: that leaves an empty ISID and points the returned port nexus pointer at buf + tid_len, one past the descriptor, which the registration code (__core_scsi3_locate_pr_reg(), __core_scsi3_alloc_registration()) then dereferences as the ISID string -- the same over-read of the parameter buffer for a malformed descriptor.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Analysis

by VulDB Data Team • 08/15/2026

The vulnerability resides within the Linux kernel's SCSI target implementation, specifically in how persistent reservation out (PR-OUT) commands are processed for iSCSI TransportIDs. The core issue stems from insufficient bounds checking during parsing operations where raw parameter buffers are passed to transport ID parsers without explicit length constraints. This flaw affects functions core_scsi3_decode_spec_i_port() and core_scsi3_emulate_register_and_move() which directly forward unbounded buffers to target_parse_pr_out_transport_id(), creating a potential for buffer over-read conditions.

The technical execution path begins with iSCSI TransportID parsing through iscsi_parse_pr_out_transport_id(), where the code utilizes an unbounded strstr() operation to locate the ",i,0x" ISID separator within the transport ID string. This search mechanism becomes problematic when initiators submit malformed TransportIDs that lack both the required separator substring and NUL termination, effectively causing the parser to traverse beyond the confines of the intended buffer boundaries. The vulnerability is particularly exploitable when parameter lists span multiple memory pages, as the kernel uses vmalloc for such cases through transport_kmap_data_sg(), leading to access violations into guard pages that trigger KASAN reports.

This security gap enables attackers to construct malicious iSCSI TransportIDs that can cause kernel oopses and system instability, making it reachable across various fabric implementations including vhost-scsi where guest operating systems might interact with exported devices. The vulnerability directly aligns with CWE-129, which addresses insufficient bounds checking, and maps to ATT&CK technique T1059.006 for command injection in kernel space contexts.

The recommended fix implements explicit length validation by passing the number of received bytes down to the parser functions, establishing proper bounds before any string scanning operations occur. This approach includes validating the iSCSI TransportID's self-described length using the ADDITIONAL LENGTH field plus four bytes, ensuring it meets minimum requirements and does not exceed the received buffer size. The solution moves existing validation checks that occur post-parsing to an earlier stage, thereby preventing over-read conditions during parameter processing.

Additionally, the mitigation addresses explicit name-length checks for different TransportID formats by rejecting descriptors when the descriptor body cannot fit within allocated buffers for each format type. For FORMAT CODE 00b, the implementation validates that the descriptor body (tid_len - 4 bytes) fits within TRANSPORT_IQN_LEN, while FORMAT CODE 01b receives validation for the name portion from buf[4] up to the separator location. These checks replace silent truncation mechanisms with explicit rejection of malformed inputs, making buffer boundaries clear and intentional across all code paths.

The solution also eliminates dangerous printf formatting operations that use unbounded "%s" specifiers with potentially unterminated strings, which could lead to information disclosure or further exploitation vectors. Furthermore, it addresses edge cases where the ",i,0x" separator sits at the end of descriptors, preventing scenarios where registration code would dereference memory locations one past the valid descriptor boundaries, maintaining consistent buffer integrity throughout the parsing pipeline and ensuring proper validation of all input parameters before any processing occurs.

Responsible

Linux

Reservation

08/09/2026

Disclosure

08/15/2026

Moderation

accepted

CPE

ready

EPSS

0.00000

KEV

no

Activities

very low

Sources

Want to know what is going to be exploited?

We predict KEV entries!