Skip to content

Commit 7c88c1e

Browse files
l0kodsmfrench
authored andcommitted
ksmbd: Fix user namespace mapping
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 <[email protected]> Cc: Steve French <[email protected]> Cc: [email protected] Signed-off-by: Mickaël Salaün <[email protected]> Link: https://lore.kernel.org/r/[email protected] Acked-by: Christian Brauner (Microsoft) <[email protected]> Acked-by: Namjae Jeon <[email protected]> Signed-off-by: Steve French <[email protected]>
1 parent 5876e99 commit 7c88c1e

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 <[email protected]>
55
*/
66

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

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

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

0 commit comments

Comments
 (0)