HIGH Introduced in 3.7
smb ReadResponse OOB
CVE-2026-99272
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:H
01Description
In the Linux kernel, the following vulnerability has been resolved: smb: client: validate the data area in SMB2_read() SMB2_read() copies le32_to_cpu(rsp->DataLength) bytes from (char *)rsp + rsp->DataOffset without checking that the range lies within the response actually received. A READ response with DataOffset == 0 makes smb2_get_data_area_len() zero the data length, so smb2_check_message() accepts a frame as short as the fixed response, while SMB2_read() still uses the server-supplied DataLength, capped only by CIFS_MAX_MSGSIZE and the caller's length. A malicious server can answer the synchronous read used by the mfsymlinks (or SFU) symlink parser with an 81-byte READ response carrying DataOffset 0 and DataLength 1067, making the client copy 1067 bytes from a 448-byte receive object (KASAN slab-out-of-bounds; up to 16 KiB in the general case). Clamp a zero (or header-overlapping) DataOffset to read_rsp_size, as handle_read_data() does for the asynchronous path, and reject the response unless DataOffset + DataLength fits within rsp_iov.iov_len. The SMB1 helper was fixed the same way in 5be5bdda5863.
02KernelScan AI Analysis
Risk summary
Systems that mount SMB2 shares or access SMB2 symlinks are vulnerable to a malicious server sending a crafted READ response with an invalid DataOffset/DataLength, causing the kernel to read up to 16 KiB beyond the received network buffer. This leaks kernel heap memory and can crash the system. Exploitation requires the victim to connect to an attacker-controlled SMB server.
Vulnerability analysis
The SMB2 client's synchronous read handler copies data from a server response using the server-supplied DataOffset and DataLength fields without verifying that the described data area lies within the actual received packet. A malicious server can send a short response (e.g., 81 bytes) with DataOffset set to 0 and DataLength set to a large value (e.g., 1067), causing the client to read far past the end of the receive buffer. The fix clamps DataOffset to the minimum valid header size (matching the existing asynchronous path) and rejects any response where DataOffset plus DataLength exceeds the received buffer length, returning an I/O error instead of performing the out-of-bounds copy. Any system that mounts an SMB2 share or follows an SMB2 symlink (mfsymlinks/SFU) can be exploited by a malicious server; the attack requires the victim to initiate a connection to the attacker's server.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 7.3 | 3.7 | 7.3.2 | 1ba1937de005 |
| mainline | 3.7 | 7.4-rc1 | 2ec9cdf469dd |
04CIP Kernels
State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.
| CIP tree | State |
|---|---|
| cip/6.12 | Affected — no CIP fix yet (latest 6.12.114-cip34) |
| cip/6.1 | Affected — no CIP fix yet (latest 6.1.190-cip62) |
| cip/6.1-rt | Affected — no CIP fix yet (latest 6.1.189-cip61-rt32) |
| cip/5.10 | Affected — no CIP fix yet (latest 5.10.272-cip79) |
| cip/5.10-rt | Affected — no CIP fix yet (latest 5.10.272-cip79-rt35) |
| cip/4.19 | Affected — no CIP fix yet (latest 4.19.325-cip136) |
| cip/4.19-rt | Affected — no CIP fix yet (latest 4.19.325-cip136-rt50) |
| cip/4.4 | Affected — no CIP fix yet (latest 4.4.302-cip115) |
| cip/4.4-rt | Affected — no CIP fix yet (latest 4.4.302-cip115-rt63) |