ksmbd: fix slub overflow in ksmbd_decode_ntlmssp_auth_blob()
authorNamjae Jeon <linkinjeon@kernel.org>
Fri, 25 Aug 2023 14:40:31 +0000 (23:40 +0900)
committerSteve French <stfrench@microsoft.com>
Tue, 29 Aug 2023 17:30:20 +0000 (12:30 -0500)
If authblob->SessionKey.Length is bigger than session key
size(CIFS_KEY_SIZE), slub overflow can happen in key exchange codes.
cifs_arc4_crypt copy to session key array from SessionKey from client.

Cc: stable@vger.kernel.org
Reported-by: zdi-disclosures@trendmicro.com # ZDI-CAN-21940
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/server/auth.c

index af7b2cd..229a652 100644 (file)
@@ -355,6 +355,9 @@ int ksmbd_decode_ntlmssp_auth_blob(struct authenticate_message *authblob,
                if (blob_len < (u64)sess_key_off + sess_key_len)
                        return -EINVAL;
 
+               if (sess_key_len > CIFS_KEY_SIZE)
+                       return -EINVAL;
+
                ctx_arc4 = kmalloc(sizeof(*ctx_arc4), GFP_KERNEL);
                if (!ctx_arc4)
                        return -ENOMEM;