CVE-2026-90011

scsi: target: iscsi: Reserve a terminator byte for the login payload

State
Published
Severity
9.1 Critical
Published
Sep 16, 2026
Updated
Oct 19, 2026
Reserved
Sep 11, 2026

Read the record on cve.org

Description

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

scsi: target: iscsi: Reserve a terminator byte for the login payload

iscsi_target_check_login_request() rejects a login PDU whose DataSegmentLength exceeds MAX_KEY_VALUE_PAIRS, but the test is '>' and login->req_buf is allocated with exactly MAX_KEY_VALUE_PAIRS bytes. Since iscsit_get_login_rx() receives payload_length + padding bytes, where

padding = ((-payload_length) & 3);

any payload_length from 8189 to 8192 fills the whole 8192 byte buffer. The write stays in bounds, but no byte is left for a NUL terminator.

The buffer is subsequently consumed as a C string. In the CHAP path chap_check_algorithm() calls kstrdup(a_str), and extract_param() calls strstr(in_buf, pattern) followed by strlen_semi(), none of which take a length. convert_null_to_semi() additionally rewrites every embedded NUL to ';', so even a payload made of well formed NUL separated key=value records is left without a terminator. These walk past the end of the object into adjacent slab memory. It is reachable by an unauthenticated initiator against a portal configured for CHAP; when authentication is not required iscsi_login_zero_tsih_s2() rewrites AuthMethod to None and the CHAP path is never entered.

Allocate one extra byte. kzalloc() zeroes it and nothing ever writes to it, as every writer copies to offset 0 for at most MAX_KEY_VALUE_PAIRS bytes, so the buffer is always terminated.

Scores

CVSSScoreVectorSource
3.19.1 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • e48354ce078c079996f89d715dfa44814b4eba01 to before 5fac79f248c37774d1dd761406f83d25ca6ff8e4Affected
  • e48354ce078c079996f89d715dfa44814b4eba01 to before 6ddddcad436d8e6e619204d3c848147ff2f5bf1eAffected
  • e48354ce078c079996f89d715dfa44814b4eba01 to before b19dc17ed963ac36c0db4b52a1803fb11169f91fAffected
  • e48354ce078c079996f89d715dfa44814b4eba01 to before 6b589ef9d5f6cdc70d2b4f269ca6cf26b5ebb076Affected
  • e48354ce078c079996f89d715dfa44814b4eba01 to before eb9dadf4d552ebe10644871c5189286552aa48f5Affected
  • e48354ce078c079996f89d715dfa44814b4eba01 to before 1624bff4c5118ad494d50ad94d44f22064667a7fAffected
  • e48354ce078c079996f89d715dfa44814b4eba01 to before 3ddf3ea291a0ef2ea93b82e158960ac2cc42302bAffected
  • e48354ce078c079996f89d715dfa44814b4eba01 to before f4825922d2fb371e2b969697d792077f1b62b62cAffected
LinuxLinux
  • 3.1Affected
  • before 3.1Not affected
  • 5.10.270 through 5.10.*Not affected
  • 5.15.221 through 5.15.*Not affected
  • 6.1.188 through 6.1.*Not affected
  • 6.6.157 through 6.6.*Not affected
  • 6.12.110 through 6.12.*Not affected
  • 6.18.51 through 6.18.*Not affected
  • 7.2.5 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.