From: Namjae Jeon Date: Mon, 18 Dec 2023 15:34:24 +0000 (+0900) Subject: ksmbd: fix slub overflow in ksmbd_decode_ntlmssp_auth_blob() X-Git-Tag: v5.15.145~36 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bd554ed4fdc3d38404a1c43d428432577573e809;p=thirdparty%2Fkernel%2Fstable.git ksmbd: fix slub overflow in ksmbd_decode_ntlmssp_auth_blob() [ Upstream commit 4b081ce0d830b684fdf967abc3696d1261387254 ] 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 Signed-off-by: Steve French Signed-off-by: Greg Kroah-Hartman --- diff --git a/fs/ksmbd/auth.c b/fs/ksmbd/auth.c index ee912d24ad945..9a08e6a90b94d 100644 --- a/fs/ksmbd/auth.c +++ b/fs/ksmbd/auth.c @@ -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;