CVE-2026-74556: scsi: libiscsi_tcp: Bound SCSI Response data segment to the connection buffer

Greg Kroah-Hartman <[email protected]>
Newsgroups org.kernel.vger.linux-cve-announce
Message-ID <2026081551-CVE-2026-74556-3eb4@gregkh>
From: Greg Kroah-Hartman <[email protected]>

Description
===========

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

scsi: libiscsi_tcp: Bound SCSI Response data segment to the connection buffer

iscsi_tcp_hdr_dissect() receives the data segment of several PDU types
into the fixed-size conn->data buffer, which is allocated for
ISCSI_DEF_MAX_RECV_SEG_LEN (8192) bytes.  For the LOGIN_RSP, TEXT_RSP,
REJECT and ASYNC_EVENT opcodes the dissect path already rejects a PDU
whose DataSegmentLength exceeds that buffer.

The SCSI Command Response (ISCSI_OP_SCSI_CMD_RSP) path also copies its
data segment (sense/response data) into conn->data via
iscsi_tcp_data_recv_prep(), but it does so without the same check.  The
only upstream bound on in.datalen is conn->max_recv_dlength, the
initiator's advertised MaxRecvDataSegmentLength, which is commonly
negotiated well above 8192 (open-iscsi defaults to 262144).  A target
that returns a SCSI Response with a DataSegmentLength between 8193 and
max_recv_dlength therefore overflows the 8192-byte conn->data buffer.

Once the same bound applies, ISCSI_OP_SCSI_CMD_RSP is handled exactly
like those responses: bound the data segment, receive it into conn->data
when present, and otherwise complete the PDU with no data.  Fold the
opcode into that case group rather than duplicating the check.

The Linux kernel CVE team has assigned CVE-2026-74556 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 2.6.29 with commit a081c13e39b5c17052a7b46fafa61019c4c110ff and fixed in 6.6.151 with commit c97b5265cc47775f77fd2a23d6bde0426997b233
	Issue introduced in 2.6.29 with commit a081c13e39b5c17052a7b46fafa61019c4c110ff and fixed in 6.12.103 with commit 084af0253673425ce2ae62e3c7f74f0dd023711b
	Issue introduced in 2.6.29 with commit a081c13e39b5c17052a7b46fafa61019c4c110ff and fixed in 6.18.44 with commit 72815741715bd41556dac5eeb068bf0f8af06ee7
	Issue introduced in 2.6.29 with commit a081c13e39b5c17052a7b46fafa61019c4c110ff and fixed in 7.1.8 with commit b0aa3e8e2ab4ca92adb28a3ef41873b3363b8676
	Issue introduced in 2.6.29 with commit a081c13e39b5c17052a7b46fafa61019c4c110ff and fixed in 7.2-rc6 with commit c1dea15f819cded9b3faf58f8bec72323568b6e6

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2026-74556
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	drivers/scsi/libiscsi_tcp.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/c97b5265cc47775f77fd2a23d6bde0426997b233
	https://git.kernel.org/stable/c/084af0253673425ce2ae62e3c7f74f0dd023711b
	https://git.kernel.org/stable/c/72815741715bd41556dac5eeb068bf0f8af06ee7
	https://git.kernel.org/stable/c/b0aa3e8e2ab4ca92adb28a3ef41873b3363b8676
	https://git.kernel.org/stable/c/c1dea15f819cded9b3faf58f8bec72323568b6e6
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.