CVE-2026-97555

smb: client: fix heap overflow in DACL owner/group rewrite

State
Published
Severity
8.8 High
Published
Sep 25, 2026
Updated
Oct 30, 2026
Reserved
Sep 24, 2026

Read the record on cve.org

Description

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)

Scores

CVSSScoreVectorSource
3.18.8 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • bc3e9dd9d104ca1b75644eab87b38ce8a924aef4 to before 4e78b5ff13214353750b87283ff79f62510f5844Affected
  • bc3e9dd9d104ca1b75644eab87b38ce8a924aef4 to before 63c2fbde15ffc9a0c21adf670c38d028e20fa65cAffected
  • bc3e9dd9d104ca1b75644eab87b38ce8a924aef4 to before d5cea6766ae1868a51c7d17d77d065b4f55c587fAffected
  • bc3e9dd9d104ca1b75644eab87b38ce8a924aef4 to before fb736ab4fb8c4fdb8b2f9ccd3a62e03d11549ca1Affected
  • bc3e9dd9d104ca1b75644eab87b38ce8a924aef4 to before 7fa84c9ca690643f429ae2709584a47e74b572c9Affected
  • bc3e9dd9d104ca1b75644eab87b38ce8a924aef4 to before 2a9aee9ef5622d58d8aafaa3263b3ffe70e2d9ddAffected
  • bc3e9dd9d104ca1b75644eab87b38ce8a924aef4 to before 0ee150794c75bcd0be0e24ff3394f433cbae18ccAffected
LinuxLinux
  • 5.12Affected
  • before 5.12Not affected
  • 5.15.224 through 5.15.*Not affected
  • 6.1.191 through 6.1.*Not affected
  • 6.6.158 through 6.6.*Not affected
  • 6.12.111 through 6.12.*Not affected
  • 6.18.53 through 6.18.*Not affected
  • 7.2.7 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.