In the Linux kernel, the following vulnerability has been resolved: nvmet-tcp: propagate nvmet_tcp_build_pdu_iovec() errors to its callers Currently, when nvmet_tcp_build_pdu_iovec() detects an out-of-bounds PDU length or offset, it triggers nvmet_tcp_fatal_error(cmd->queue) and returns early. However, because the function returns void, the callers are entirely unaware that a fatal error has occurred and that the cmd->recv_msg.msg_iter was left uninitialized. Callers such as nvmet_tcp_handle_h2c_data_pdu() proceed to blindly overwrite the queue state with queue->rcv_state = NVMET_TCP_RECV_DATA Consequently, the socket receiving loop may attempt to read incoming network data into the uninitialized iterator. Fix this by shifting the error handling responsibility to the callers.
The function nvmet_tcp_build_pdu_iovec() detects invalid PDU length or offset and calls nvmet_tcp_fatal_error(), however it returns void — it does not inform callers about the error occurrence. Calling functions, such as nvmet_tcp_handle_h2c_data_pdu(), continue execution and overwrite the queue state (queue->rcv_state = NVMET_TCP_RECV_DATA), even though the message iterator cmd->recv_msg.msg_iter remained uninitialized. Consequently, the socket data reception loop may attempt to write incoming network data to an uninitialized memory area.
A remote attacker, without authentication, can cause kernel memory corruption, potentially achieving a breach of confidentiality, integrity, and system availability (RCE or kernel crash).
Apply patches available in the manufacturer's references (commits: 046fa5c72d15, 3df42a854686, c2a11441538b, d7c8f95f599b, ea8e356acb16 in Linux kernel stable repositories). It is recommended to update to a kernel version containing the fix according to your distribution's guidance.
Linux kernel with the nvmet-tcp subsystem enabled; specific versions indicated in the manufacturer's references (commits in stable kernel branches).
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H