KernelScan.io

CRITICAL Introduced in 3.6

smb SessionSetup OOB

CVE-2026-99275

CVSS 9.1 / 10.0 KernelScan AI

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H

01

In the Linux kernel, the following vulnerability has been resolved: smb: client: reject short SESSION_SETUP responses smb2_check_message() accepts frames shorter than struct smb2_pdu when the SMB2 status is non-zero, before the minimum-PDU check added by b4694f269e66d. A 64-byte STATUS_MORE_PROCESSING_REQUIRED SESSION_SETUP response is therefore accepted even though it cannot contain the SecurityBufferOffset and SecurityBufferLength fields. The parser then reads those fields from stale bytes left in the reused receive buffer by an earlier frame. With a long stale SecurityBufferLength, decode_ntlmssp_challenge() copies up to about 64 KB from beyond the receive object and sends the data back to the server in the NTLMv2 AUTHENTICATE target info. Reject short MPR SESSION_SETUP responses before the short-error path, and validate SecurityBufferOffset + SecurityBufferLength against the received response length before decoding the challenge. The ordering bypass is not new: the short-error early return predates b4694f269e66d, and the unvalidated SecurityBufferLength read predates the 2016 raw NTLMSSP split in 166cea4dc3a4, so all supported stable trees are affected. Reproduced on 6.6.87.2; the path is unchanged on mainline.

02

Engine v0.10.0

Risk summary

Any system that mounts SMB/CIFS shares is vulnerable to a malicious server stealing up to 64 KB of kernel memory per connection attempt. The flaw is triggered when the client processes a crafted SESSION_SETUP response during authentication, requiring no local privileges or user interaction beyond initiating a connection to an attacker-controlled share.

Affectedfs/smb/client/smb2misc.c, fs/smb/client/smb2pdu.c (smb client)

Vulnerability analysis

The SMB client accepts a malformed SESSION_SETUP response that signals more processing is required but is too short to contain the security buffer fields. The parser then reads those missing fields from stale data left in a reused receive buffer by a previous frame. An attacker controlling the server can first send a large frame to plant a chosen buffer length, then send the short response; the client will copy up to 64 KB of adjacent kernel memory into the authentication blob and send it back to the server. The fix rejects short MORE_PROCESSING_REQUIRED responses before the error-path shortcut and validates that the declared security buffer fits inside the actual received data before decoding it.

03

BranchIntroducedFixed inPatch commit
7.33.67.3.2df63e0193388
mainline3.67.4-rc14d8930afa344

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Affected — no CIP fix yet (latest 6.12.114-cip34)
cip/6.1Affected — no CIP fix yet (latest 6.1.190-cip62)
cip/6.1-rtAffected — no CIP fix yet (latest 6.1.189-cip61-rt32)
cip/5.10Affected — no CIP fix yet (latest 5.10.272-cip79)
cip/5.10-rtAffected — no CIP fix yet (latest 5.10.272-cip79-rt35)
cip/4.19Affected — no CIP fix yet (latest 4.19.325-cip136)
cip/4.19-rtAffected — no CIP fix yet (latest 4.19.325-cip136-rt50)
cip/4.4Affected — no CIP fix yet (latest 4.4.302-cip115)
cip/4.4-rtAffected — no CIP fix yet (latest 4.4.302-cip115-rt63)