Skip to content

Commit 95a520b

Browse files
l0kodgregkh
authored andcommitted
ksmbd: Fix user namespace mapping
commit 7c88c1e upstream. A kernel daemon should not rely on the current thread, which is unknown and might be malicious. Before this security fix, ksmbd_override_fsids() didn't correctly override FS UID/GID which means that arbitrary user space threads could trick the kernel to impersonate arbitrary users or groups for file system access checks, leading to file system access bypass. This was found while investigating truncate support for Landlock: https://lore.kernel.org/r/CAKYAXd8fpMJ7guizOjHgxEyyjoUwPsx3jLOPZP=wPYcbhkVXqA@mail.gmail.com Fixes: e2f3448 ("cifsd: add server-side procedures for SMB3") Cc: Hyunchul Lee <hyc.lee@gmail.com> Cc: Steve French <smfrench@gmail.com> Cc: stable@vger.kernel.org Signed-off-by: Mickaël Salaün <mic@digikod.net> Link: https://lore.kernel.org/r/20220929100447.108468-1-mic@digikod.net Acked-by: Christian Brauner (Microsoft) <brauner@kernel.org> Acked-by: Namjae Jeon <linkinjeon@kernel.org> Signed-off-by: Steve French <stfrench@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent a19f316 commit 95a520b

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

fs/ksmbd/smb_common.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
* Copyright (C) 2018 Namjae Jeon <linkinjeon@kernel.org>
55
*/
66

7+
#include <linux/user_namespace.h>
8+
79
#include "smb_common.h"
810
#include "server.h"
911
#include "misc.h"
@@ -624,8 +626,8 @@ int ksmbd_override_fsids(struct ksmbd_work *work)
624626
if (!cred)
625627
return -ENOMEM;
626628

627-
cred->fsuid = make_kuid(current_user_ns(), uid);
628-
cred->fsgid = make_kgid(current_user_ns(), gid);
629+
cred->fsuid = make_kuid(&init_user_ns, uid);
630+
cred->fsgid = make_kgid(&init_user_ns, gid);
629631

630632
gi = groups_alloc(0);
631633
if (!gi) {

0 commit comments

Comments
 (0)