CyberRota Analysis
AI-GeneratedThe vulnerability affects the Linux kernel's ksmbd component, specifically in the smb_check_perm_dacl() function, which improperly validates Access Control Entries (ACEs) against the declared size of the Discretionary Access Control List (DACL). This flaw allows a crafted DACL to potentially grant unauthorized access by parsing ACEs beyond the DACL's defined boundary during SMB2_CREATE access checks. Organizations utilizing Linux systems with SMB2 protocol should prioritize addressing this vulnerability to mitigate the risk of unauthorized access to sensitive resources.
Original NVD Description
In the Linux kernel, the following vulnerability has been resolved: ksmbd: bound smb_check_perm_dacl() ACE walks by DACL size smb_check_perm_dacl() validates that the DACL fits inside the NT security descriptor, but then bounds its two ACE walks by the remaining NTSD length (acl_size) rather than the DACL's declared size (pdacl_size). When pdacl->size is smaller than the trailing NTSD buffer, bytes after the declared DACL boundary - still inside the stored security descriptor - are parsed as ACEs during access checks. A crafted DACL can place an access-granting ACE beyond pdacl->size, and the current code accepts it during SMB2_CREATE access validation, while parse_dacl() and smb_inherit_dacl() stop at pdacl_size. Bound both ACE walks by pdacl_size to match the DACL boundary semantics used elsewhere in the server. Validation: - semantic KUnit harness shows the post-boundary ACE is selected before the fix and rejected (EACCES) after it - linux master (7.2-rc6), x86_64