CVE-2026-89633
massOut-of-Bounds Read/Write in Linux Kernel SMB Client via Unvalidated DataOffset
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.
| Linux kernel (CIFS/SMB client, fs/smb/client coalesce_t2) | — |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
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 news0 stories
No ingested article mentions this CVE yet.