ksmbd: not allow guest user on multichannel
commit 3353ab2df5f68dab7da8d5ebb427a2d265a1f2b2 upstream. This patch return STATUS_NOT_SUPPORTED if binding session is guest. Cc: stable@vger.kernel.org Reported-by: zdi-disclosures@trendmicro.com # ZDI-CAN-20480 Signed-off-by: Namjae Jeon <linkinjeon@kernel.org> Signed-off-by: Steve French <stfrench@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
c3a3259675
commit
1f04905865
@ -1456,7 +1456,7 @@ static int ntlm_authenticate(struct ksmbd_work *work)
|
||||
* Reuse session if anonymous try to connect
|
||||
* on reauthetication.
|
||||
*/
|
||||
if (ksmbd_anonymous_user(user)) {
|
||||
if (conn->binding == false && ksmbd_anonymous_user(user)) {
|
||||
ksmbd_free_user(user);
|
||||
return 0;
|
||||
}
|
||||
@ -1470,7 +1470,7 @@ static int ntlm_authenticate(struct ksmbd_work *work)
|
||||
sess->user = user;
|
||||
}
|
||||
|
||||
if (user_guest(sess->user)) {
|
||||
if (conn->binding == false && user_guest(sess->user)) {
|
||||
rsp->SessionFlags = SMB2_SESSION_FLAG_IS_GUEST_LE;
|
||||
} else {
|
||||
struct authenticate_message *authblob;
|
||||
@ -1713,6 +1713,11 @@ int smb2_sess_setup(struct ksmbd_work *work)
|
||||
goto out_err;
|
||||
}
|
||||
|
||||
if (user_guest(sess->user)) {
|
||||
rc = -EOPNOTSUPP;
|
||||
goto out_err;
|
||||
}
|
||||
|
||||
conn->binding = true;
|
||||
} else if ((conn->dialect < SMB30_PROT_ID ||
|
||||
server_conf.flags & KSMBD_GLOBAL_FLAG_SMB3_MULTICHANNEL) &&
|
||||
@ -1825,6 +1830,8 @@ int smb2_sess_setup(struct ksmbd_work *work)
|
||||
rsp->hdr.Status = STATUS_NETWORK_SESSION_EXPIRED;
|
||||
else if (rc == -ENOMEM)
|
||||
rsp->hdr.Status = STATUS_INSUFFICIENT_RESOURCES;
|
||||
else if (rc == -EOPNOTSUPP)
|
||||
rsp->hdr.Status = STATUS_NOT_SUPPORTED;
|
||||
else if (rc)
|
||||
rsp->hdr.Status = STATUS_LOGON_FAILURE;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user