KernelScan.io

HIGH Introduced in 5.12

smb DACL Overflow

CVE-2026-97555

CVSS 8.8 / 10.0 NVD

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

KernelScan AI8.8HIGH

01

In the Linux kernel, the following vulnerability has been resolved: smb: client: fix heap overflow in DACL owner/group rewrite When id_mode_to_cifs_acl rewrites an existing DACL, it allocates a buffer sized according to the on-disk DACL length reported by dacl_ptr->size. However, replace_sids_and_copy_aces may rewrite each ACE with a new owner/group SID obtained from the cifs.idmap upcall. Those SIDs can have up to SID_MAX_SUB_AUTHORITIES (15) sub-authorities, making each ACE up to 76 bytes (sizeof(struct smb_ace)). If the original DACL contains short SIDs (e.g., 1 sub-authority) while the replacement SIDs are long, the rewritten ACEs overflow the allocation. Fix this by always budgeting for worst-case SID expansion: allocate sizeof(struct smb_acl) plus num_aces * sizeof(struct smb_ace), which covers the smb_acl header and room for every ACE at maximum SID size. This replaces the previous split logic that used dacl_ptr->size for cifsacl mounts but num_aces * sizeof(struct smb_ace) for mode_from_sid mounts: both paths can trigger the same rewrite and need the same headroom. KASAN reports this as: BUG: KASAN: slab-out-of-bounds in build_sec_desc+0x1e8a/0x2680 [cifs] Write of size 4 at addr ffff8881a5e25374 by task chown/5298 ... The buggy address is located 0 bytes to the right of allocated 884-byte region [ffff8881a5e25000, ffff8881a5e25374)

02

Engine v0.6.0

Risk summary

A malicious or compromised SMB server can trigger a heap buffer overflow in the Linux CIFS client kernel module when a local user performs a file ownership change (chown/chgrp) on a CIFS mount configured with ACL mapping (cifsacl or mode_from_sid). The overflow corrupts kernel heap memory, potentially leading to arbitrary code execution, information disclosure, or a kernel panic. Any system mounting CIFS/SMB shares with ACL mapping enabled and allowing users to change file ownership is at risk.

Affectedfs/smb/client/cifsacl.c (cifs client ACL handling)

Vulnerability analysis

When a user changes ownership of a file on a CIFS mount with ACL mapping enabled, the client kernel rewrites the file's DACL by replacing existing security identifiers (SIDs) with new owner/group SIDs obtained from an id mapping upcall. The buffer for the rewritten DACL is sized based on the original on-disk DACL length reported by the server, but the replacement SIDs can be much larger than the originals—up to the maximum number of sub-authorities—causing the rewritten access control entries to overflow the allocated heap buffer. The fix changes the allocation to always reserve enough space for every entry at the maximum possible SID size, regardless of the original DACL length. A malicious SMB server can trigger this by serving DACLs containing short SIDs; any local user who subsequently performs a chown or chgrp on a file from that mount will cause the overflow in the client kernel.

03

BranchIntroducedFixed inPatch commit
6.125.126.12.111fb736ab4fb8c
6.185.126.18.537fa84c9ca690
7.25.127.2.72a9aee9ef562
mainline5.127.3-rc30ee150794c75