]> git.hungrycats.org Git - linux/commitdiff
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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 6 Sep 2023 20:25:28 +0000 (21:25 +0100)
commit 4b081ce0d830b684fdf967abc3696d1261387254 upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/smb/server/auth.c

index 5e5e120edcc22d88028a9ff48c6c0724b09b4b99..15e5684e328c195a686889f5c78ef28a54d1b153 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;