Skip to main content

Linux Kernel CVE-2026-63886

| EUVDEUVD-2026-45771 CRITICAL
2026-07-19 Linux GHSA-f9cg-2c9v-xhmh
9.8
CVSS 3.1 · Vendor: Linux
Share

Severity by source

Vendor (Linux) PRIMARY
9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
8.1 HIGH

Unauthenticated network reachable via the CHAP login step (PR:N), but requires a non-default iSCSI-target-with-CHAP config plus kernel heap control to weaponize, hence AC:H; kernel OOB write justifies High C/I/A.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
SUSE
CRITICAL
qualitative
Red Hat
7.0 HIGH
qualitative

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

5
Analysis Generated
Jul 20, 2026 - 16:08 vuln.today
CVSS changed
Jul 20, 2026 - 15:22 NVD
9.8 (CRITICAL)
Patch available
Jul 19, 2026 - 17:19 EUVD
CVE Published
Jul 19, 2026 - 14:54 cve.org
CRITICAL 9.8
CVE Published
Jul 19, 2026 - 14:54 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

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

scsi: target: iscsi: Validate CHAP_R length before base64 decode

chap_server_compute_hash() allocates client_digest as kzalloc(chap->digest_size) and then, for BASE64-encoded responses, passes chap_r directly to chap_base64_decode() without checking whether the input length could produce more than digest_size bytes of output.

chap_base64_decode() writes to the destination unconditionally as long as there is input to consume. With MAX_RESPONSE_LENGTH set to 128 and the "0b" prefix stripped by extract_param(), up to 127 base64 characters can reach the decoder. 127 characters decode to 95 bytes. For SHA-256 (digest_size=32) this overflows client_digest by 63 bytes; for MD5 (digest_size=16) the overflow is 79 bytes.

The length check at line 344 fires after the write has already happened.

The HEX branch in the same switch statement already validates the length up front. Apply the same approach to the BASE64 branch: strip trailing base64 padding characters, then reject any input whose data length exceeds DIV_ROUND_UP(digest_size * 4, 3) before calling the decoder.

Stripping trailing '=' before the comparison handles both padded and unpadded encodings. chap_base64_decode() already returns early on '=', so the full original string is still passed to the decoder unchanged.

The mutual CHAP path decodes CHAP_C into initiatorchg_binhex, which is kzalloc(CHAP_CHALLENGE_STR_LEN). extract_param() caps initiatorchg at CHAP_CHALLENGE_STR_LEN characters, so at most CHAP_CHALLENGE_STR_LEN-1 base64 characters reach the decoder. The maximum decoded size, DIV_ROUND_UP((CHAP_CHALLENGE_STR_LEN-1) * 3, 4), is less than CHAP_CHALLENGE_STR_LEN, so no overflow is possible there. A comment is added at the call site to document this.

AnalysisAI

Heap out-of-bounds write in the Linux kernel iSCSI target (LIO) driver lets a remote attacker overflow the heap-allocated client_digest buffer by supplying an over-length BASE64-encoded CHAP_R response during login. chap_server_compute_hash() decodes up to 127 base64 characters (95 bytes) into a buffer sized to the digest (32 bytes for SHA-256, 16 for MD5), overflowing it by 63-79 bytes before the too-late length check at line 344. The input assigns CVSS 9.8; however EPSS is low (0.21%, 11th percentile), it is not in CISA KEV, and no public exploit was identified - indicating a serious memory-corruption bug that is not yet being exploited.

Technical ContextAI

The flaw lives in drivers/target/iscsi (the LIO SCSI target subsystem) in chap_server_compute_hash(), which processes the iSCSI CHAP authentication exchange (RFC 1994 / RFC 7143). The server allocates client_digest with kzalloc(chap->digest_size) and, for BASE64-encoded CHAP_R responses, calls chap_base64_decode() directly. Unlike the sibling HEX branch, the BASE64 branch performed no up-front length validation, so chap_base64_decode() writes decoded bytes unconditionally: with MAX_RESPONSE_LENGTH=128 and the '0b' prefix stripped by extract_param(), 127 base64 chars decode to 95 bytes, overflowing the 32-byte (SHA-256) or 16-byte (MD5) allocation. This is a classic out-of-bounds heap write (CWE-787, matching the 'Buffer Overflow' tag; the feed lists CWE as N/A). The fix strips trailing '=' padding and rejects input whose data length exceeds DIV_ROUND_UP(digest_size*4, 3) before decoding, mirroring the HEX branch; the mutual-CHAP CHAP_C path into initiatorchg_binhex was confirmed safe because extract_param() caps it below CHAP_CHALLENGE_STR_LEN. CPE data identifies the affected product generically as cpe:2.3:a:linux:linux.

RemediationAI

Apply the vendor-released patch by upgrading to a fixed kernel for your branch - 6.1.176, 6.6.143, 6.12.93, 6.18.35, 7.0.12, or 7.1 (or later) - via your distribution's updates; the fix commits are published at git.kernel.org (e.g. https://git.kernel.org/stable/c/82454e6f21e56ea9a0a9de7d0ff7e1dfb83e34d6). Where immediate patching is not possible, reduce exposure with specific compensating controls: disable CHAP authentication on the LIO target if another auth or network-isolation model is acceptable (trade-off: removes CHAP's protection, so pair with strict network ACLs); restrict TCP/3260 (iSCSI) to trusted initiator IPs via firewall so untrusted hosts cannot reach the login handshake (trade-off: breaks connectivity for un-allowlisted initiators); or place the storage network on an isolated VLAN/management segment. If the host does not need to serve iSCSI targets, ensure the target/iscsi LIO modules are not loaded. See https://nvd.nist.gov/vuln/detail/CVE-2026-63886 for reference.

Vendor StatusVendor

SUSE

Severity: Critical
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 16.0 Affected

Share

CVE-2026-63886 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy