]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
smb: client: validate dacloffset before building DACL pointers
authorMichael Bommarito <michael.bommarito@gmail.com>
Mon, 20 Apr 2026 14:47:47 +0000 (10:47 -0400)
committerSteve French <stfrench@microsoft.com>
Thu, 7 May 2026 19:09:36 +0000 (14:09 -0500)
commitf98b48151cc502ada59d9778f0112d21f2586ca3
tree0008181319aa30c98bbe66095384e015e6affdc3
parent8d09328dfda089675e4c049f3f256064a1d1996b
smb: client: validate dacloffset before building DACL pointers

parse_sec_desc(), build_sec_desc(), and the chown path in
id_mode_to_cifs_acl() all add the server-supplied dacloffset to pntsd
before proving a DACL header fits inside the returned security
descriptor.

On 32-bit builds a malicious server can return dacloffset near
U32_MAX, wrap the derived DACL pointer below end_of_acl, and then slip
past the later pointer-based bounds checks. build_sec_desc() and
id_mode_to_cifs_acl() can then dereference DACL fields from the wrapped
pointer in the chmod/chown rewrite paths.

Validate dacloffset numerically before building any DACL pointer and
reuse the same helper at the three DACL entry points.

Fixes: bc3e9dd9d104 ("cifs: Change SIDs in ACEs while transferring file ownership.")
Cc: stable@vger.kernel.org
Assisted-by: Claude:claude-opus-4-6
Signed-off-by: Michael Bommarito <michael.bommarito@gmail.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/client/cifsacl.c