Vulnerability Details CVE-2026-53390
In the Linux kernel, the following vulnerability has been resolved:
ksmbd: fix out-of-bounds read in smb_check_perm_dacl()
The permission-check ACE walk in smb_check_perm_dacl() validates the ACE
header size and caps sid.num_subauth at SID_MAX_SUB_AUTHORITIES, but it
never checks that ace->size is actually large enough to contain
num_subauth sub-authorities before compare_sids() dereferences them.
CIFS_SID_BASE_SIZE covers the SID header up to but excluding the
sub_auth[] array, and offsetof(struct smb_ace, sid) is the ACE header,
so the existing guards only guarantee the 8-byte SID base, i.e. zero
sub-authorities. compare_sids() then reads ace->sid.sub_auth[i] for
i < min(local_sid->num_subauth, ace->sid.num_subauth). The local
comparison SIDs (sid_everyone, sid_unix_NFS_mode, and the id_to_sid()
result) always have at least one sub-authority, and an attacker controls
the ACE revision and authority bytes (which lie within the in-bounds SID
base), so they can match one of those SIDs and force the sub_auth read.
A crafted ACE with size == 16 and num_subauth >= 1 placed at the tail of
the security descriptor therefore causes a heap out-of-bounds read of up
to SID_MAX_SUB_AUTHORITIES * sizeof(__le32) bytes past the pntsd
allocation. The security descriptor is loaded by ksmbd_vfs_get_sd_xattr()
into a buffer sized exactly to the on-disk data (kzalloc(sd_size) in
ndr_decode_v4_ntacl()), so the read lands past the allocation. The
malformed descriptor can be stored verbatim via SMB2_SET_INFO (the DACL
is not normalised before being written to the security.NTACL xattr) and
the read fires on a subsequent SMB2_CREATE access check, making this
reachable by an authenticated client on a share that uses ACL xattrs.
Add the missing num_subauth-versus-ace_size check, mirroring the
identical guards already present in the sibling parsers parse_dacl() and
smb_inherit_dacl().
Exploit prediction scoring system (EPSS) score
EPSS Score 0.005
EPSS Ranking 38.1%
CVSS Severity
CVSS v3 Score 8.1
Products affected by CVE-2026-53390
-
cpe:2.3:o:linux:linux_kernel:5.15.210
-
cpe:2.3:o:linux:linux_kernel:5.15.211
-
cpe:2.3:o:linux:linux_kernel:6.1.176
-
cpe:2.3:o:linux:linux_kernel:6.12.84
-
cpe:2.3:o:linux:linux_kernel:6.12.85
-
cpe:2.3:o:linux:linux_kernel:6.12.86
-
cpe:2.3:o:linux:linux_kernel:6.12.87
-
cpe:2.3:o:linux:linux_kernel:6.12.88
-
cpe:2.3:o:linux:linux_kernel:6.12.89
-
cpe:2.3:o:linux:linux_kernel:6.12.90
-
cpe:2.3:o:linux:linux_kernel:6.12.91
-
cpe:2.3:o:linux:linux_kernel:6.12.92
-
cpe:2.3:o:linux:linux_kernel:6.12.93
-
cpe:2.3:o:linux:linux_kernel:6.12.94
-
cpe:2.3:o:linux:linux_kernel:6.18.25
-
cpe:2.3:o:linux:linux_kernel:6.18.26
-
cpe:2.3:o:linux:linux_kernel:6.18.27
-
cpe:2.3:o:linux:linux_kernel:6.18.28
-
cpe:2.3:o:linux:linux_kernel:6.18.29
-
cpe:2.3:o:linux:linux_kernel:6.18.30
-
cpe:2.3:o:linux:linux_kernel:6.18.31
-
cpe:2.3:o:linux:linux_kernel:6.18.32
-
cpe:2.3:o:linux:linux_kernel:6.18.33
-
cpe:2.3:o:linux:linux_kernel:6.18.34
-
cpe:2.3:o:linux:linux_kernel:6.18.35
-
cpe:2.3:o:linux:linux_kernel:6.18.36
-
cpe:2.3:o:linux:linux_kernel:6.18.37
-
cpe:2.3:o:linux:linux_kernel:6.6.140
-
cpe:2.3:o:linux:linux_kernel:6.6.141
-
cpe:2.3:o:linux:linux_kernel:6.6.142
-
cpe:2.3:o:linux:linux_kernel:6.6.143
-
cpe:2.3:o:linux:linux_kernel:7.0.10
-
cpe:2.3:o:linux:linux_kernel:7.0.11
-
cpe:2.3:o:linux:linux_kernel:7.0.12
-
cpe:2.3:o:linux:linux_kernel:7.0.13
-
cpe:2.3:o:linux:linux_kernel:7.0.14
-
cpe:2.3:o:linux:linux_kernel:7.0.2
-
cpe:2.3:o:linux:linux_kernel:7.0.3
-
cpe:2.3:o:linux:linux_kernel:7.0.4
-
cpe:2.3:o:linux:linux_kernel:7.0.5
-
cpe:2.3:o:linux:linux_kernel:7.0.6
-
cpe:2.3:o:linux:linux_kernel:7.0.7
-
cpe:2.3:o:linux:linux_kernel:7.0.8
-
cpe:2.3:o:linux:linux_kernel:7.0.9
-
cpe:2.3:o:linux:linux_kernel:7.1
-
cpe:2.3:o:linux:linux_kernel:7.1.1
-
cpe:2.3:o:linux:linux_kernel:7.1.2