ZeroHour

CVE-2026-89633

mass

Out-of-Bounds Read/Write in Linux Kernel SMB Client via Unvalidated DataOffset

CVSS 3.1
9.8 critical
EPSS
Published
()
Modified
AI analysis

The Linux kernel's SMB/CIFS client contains a critical (CVSS 9.8) out-of-bounds read and write flaw in coalesce_t2(), which merges multi-part TRANS2 responses. The function computes source and destination data pointers directly from server-supplied DataOffset fields without checking them against buffer bounds, so a malicious SMB server can craft a response whose DataOffset points below the data area (overwriting SMB header fields) or past the end of the heap buffer (out-of-bounds reads from the source or writes to the target). An attacker controlling or spoofing an SMB server gains kernel memory corruption on any client that mounts from it, plausibly enabling a kernel crash (denial of service) or privilege escalation to ring 0 on the mounting machine. Any Linux system with the CIFS client code — present since the function was introduced in 2005 — is affected whenever it mounts an SMB share from an untrusted or compromised server. No public PoC exists, the flaw is not in CISA's KEV, and no exploitation has been observed.

What to do: Apply kernel updates containing the coalesce_t2() bounds-check fix as soon as your distribution ships it, prioritizing systems that regularly mount SMB/CIFS shares. As mitigation, only mount shares from trusted servers over authenticated, encrypted connections (avoid guest/unauthenticated mounts and untrusted networks where spoofing is possible), and consider disabling the legacy SMB1 dialect on client mounts since the vulnerable path handles SMB1 TRANS2 responses. Check whether hosts in your environment auto-mount or browse SMB shares (e.g., file managers, automount maps, NAS clients) and treat any that mount from untrusted sources as potentially compromised.

Affected
Linux kernel (CIFS/SMB client, fs/smb/client coalesce_t2)
Estimated exposure
massplausibly tens of millions of systems (Linux kernel runs on well over 1 billion devices; the exposed subset is those that mount SMB shares) — Estimated from the ubiquity of the Linux kernel across servers, desktops, NAS appliances, and embedded devices, discounted to the subset that actively uses the CIFS/SMB client to mount shares from network servers.

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

In the Linux kernel, the following vulnerability has been resolved: smb: client: fix OOB read/write from unvalidated DataOffset in coalesce_t2() coalesce_t2() computes data pointers directly from server-supplied DataOffset fields with no validation against buffer bounds: data_area_of_tgt = (char *)&pSMBt->hdr.Protocol + get_unaligned_le16(&pSMBt->t2_rsp.DataOffset); data_area_of_src = (char *)&pSMBs->hdr.Protocol + get_unaligned_le16(&pSMBs->t2_rsp.DataOffset); data_area_of_tgt += total_in_tgt; ... memcpy(data_area_of_tgt, data_area_of_src, total_in_src); A small DataOffset can push a pointer below the actual byte area, overwriting header fields; a large one can push it past the buffer end, causing out-of-bounds heap reads (source) or writes (target). The BCC overflow guard does not prevent this: BCC reflects how much data is present, while DataOffset controls where in the buffer it starts. The "validate target area" comment present since the function was first written in 2005 was a placeholder that was never implemented. Add lower- and upper-bound checks for both data pointers before the memcpy, and before any target header fields are modified.

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

In the news

No ingested article mentions this CVE yet.