ksmbd: fix memleak in session setup
authorNamjae Jeon <linkinjeon@kernel.org>
Tue, 2 May 2023 23:26:45 +0000 (08:26 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 11 May 2023 14:03:04 +0000 (23:03 +0900)
commit 6d7cb549c2ca20e1f07593f15e936fd54b763028 upstream.

If client send session setup request with unknown NTLMSSP message type,
session that does not included channel can be created. It will cause
session memleak. because ksmbd_sessions_deregister() does not destroy
session if channel is not included. This patch return error response if
client send the request unknown NTLMSSP message type.

Cc: stable@vger.kernel.org
Reported-by: zdi-disclosures@trendmicro.com # ZDI-CAN-20593
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>
fs/ksmbd/smb2pdu.c

index 8da7be8..f568285 100644 (file)
@@ -1799,6 +1799,10 @@ int smb2_sess_setup(struct ksmbd_work *work)
                                }
                                kfree(sess->Preauth_HashValue);
                                sess->Preauth_HashValue = NULL;
+                       } else {
+                               pr_info_ratelimited("Unknown NTLMSSP message type : 0x%x\n",
+                                               le32_to_cpu(negblob->MessageType));
+                               rc = -EINVAL;
                        }
                } else {
                        /* TODO: need one more negotiation */