KernelScan.io

CRITICAL

smb SymlinkData Overflow

CVE-2026-89634

CVSS 9.1 / 10.0 NVD

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

KernelScan AI8.1HIGH

01

In the Linux kernel, the following vulnerability has been resolved: smb: client: fix ALIGN() overflow in symlink_data() error context loop The check added by commit 7d9a7f1f96cd ("smb/client: fix possible infinite loop and oob read in symlink_data()") compared the post-ALIGN length against the remaining buffer, but ALIGN() itself can overflow: for ErrorDataLength near UINT32_MAX (e.g. 0xFFFFFFF9), ALIGN(x, 8) wraps to 0, so the subsequent bounds check passes, and the loop advances by zero bytes leaving 'p' pointing into stale data. Fix by checking the raw ErrorDataLength against the remaining space before applying ALIGN(), then checking again after. Since raw_len is bounded by the buffer, raw_len + 7 cannot overflow, so the second check is an exact post-alignment bounds guard.

02

Engine v0.6.0

Risk summary

A malicious or man-in-the-middle SMB server can send a crafted symlink error response with an error data length near UINT32_MAX, causing an integer overflow in the client's alignment macro. This bypasses bounds checks and results in an infinite loop or stale-data read in the client kernel. Any system that mounts SMB shares from untrusted or compromised servers is at risk.

Affectedfs/smb/client/smb2file.c (smb client)

Vulnerability analysis

When the SMB client processes a symlink error response from a server, it rounds up a data-length value supplied by the server before checking whether that length still fits inside the remaining message buffer. If the server provides a value near the maximum for a 32-bit integer, the rounding arithmetic wraps around to zero, so the bounds check succeeds and the parser gets stuck: it either stops moving forward and loops forever on the same data, or steps forward by only a fixed header size and later reads past the end of the buffer. The fix validates the original length against the remaining space before the rounding step, then checks the rounded length afterward, so a wrapped value can no longer pass both guards. Any client that has mounted a malicious or man-in-the-middle SMB share can be affected; the attacker does not need an account or privileges on the victim system.

03

BranchIntroducedFixed inPatch commit
6.06.0.166.12b4a25baa0b9
6.1—6.1.188b89d678f9eaf
6.12—6.12.1091f824f61d1df
6.18—6.18.5062a3025983c8
6.6—6.6.157657372ba6ea5
7.2—7.2.462656b024efc
mainline—7.3—
cip/6.1—6.1.189-cip612b4a25baa0b9
cip/6.1-rt—6.1.189-cip61-rt322b4a25baa0b9
cip/6.12—6.12.111-cip32657372ba6ea5

04

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

CIP treeState
cip/6.12Fixed in 6.12.111-cip32
cip/6.1Fixed in 6.1.189-cip61
cip/6.1-rtFixed in 6.1.189-cip61-rt32