CVE-2026-72382: ksmbd: reject undersized DACLs before parsing ACEs
In the Linux kernel, the following vulnerability has been resolved:
ksmbd: reject undersized DACLs before parsing ACEs
parsedacl() limits the attacker-controlled ACE count by comparing it with the number of minimal ACEs that fit in the DACL size. The DACL size field is 16 bits, but the expression subtracts sizeof(struct smbacl). Because sizeof() is unsigned, a DACL size smaller than the ACL header underflows to a large sizet.
A malicious client can reach this with:
SMB2SETINFO (InfoType=SMB2OINFOSECURITY) -> smb2setinfosec() -> setinfosec() -> parsesecdesc() -> parsedacl() -> initaclstate(..., 0xffff) -> initaclstate(..., 0xffff) -> kmallocobjs(..., 0xffff)
Thus a malformed security descriptor can make numaces pass the guard and drive large temporary ACL state and pointer-array allocations.
Reject DACLs smaller than struct smbacl before doing the subtraction, so the ACE count check cannot be bypassed by the underflow.