CVE-2026-68100CWE-125

CVE-2026-68100

High · published August 10, 2026

CVSS v3.1
8.1
EPSS
0%
Percentile
36.8
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

ksmbd: validate num_subauth when copying ACE in set_ntacl_dacl

set_ntacl_dacl() copies each ACE from the attacker-controlled stored

security descriptor verbatim into the response DACL without checking

sid.num_subauth. The ACE bytes (including an unchecked num_subauth)

originate from an authenticated SMB2_SET_INFO(SecInfo=DACL) that is

stored raw via ksmbd_vfs_set_sd_xattr(); parse_dacl() rejects a bad ACE

with `break` rather than an error, so parse_sec_desc() still returns

success and the malformed SD reaches the xattr intact.

On a subsequent SMB2_QUERY_INFO(SecInfo=DACL) for an inode carrying a

POSIX access ACL, build_sec_desc() -> set_ntacl_dacl() ->

set_posix_acl_entries_dacl() walks the copied ACEs and reads

ntace->sid.sub_auth[ntace->sid.num_subauth - 1]

with num_subauth taken straight from the stored SD. Since sub_auth[]

is fixed at SID_MAX_SUB_AUTHORITIES (15), a crafted num_subauth (e.g.

255) drives an out-of-bounds heap read of ~1 KB with an offset fully

controlled by an authenticated client.

The sibling functions already gate this field:

parse_dacl() -- num_subauth == 0 || > SID_MAX_SUB_AUTHORITIES

parse_sid() -- num_subauth > SID_MAX_SUB_AUTHORITIES

smb_copy_sid() -- min_t(u8, num_subauth, SID_MAX_SUB_AUTHORITIES)

set_ntacl_dacl() is the lone inconsistent path that omits the check.

Add the same num_subauth validation in set_ntacl_dacl() before copying

the ACE, matching the gate already enforced by parse_dacl().

The record
Technical detail
CVSS v3.1
8.1 · HIGH
Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00435 · 36.8th percentile
Weakness
CWE-125 · Out-of-bounds Read
Published
2026-08-10T17:19Z
References (6)
EPSS history
Timeline
  • 10 AUG 11:58Z
    ksmbd: validate num_subauth when copying ACE in set_ntacl_dacl
    cvelistv5