diff options
author | Namjae Jeon <linkinjeon@kernel.org> | 2023-08-25 17:40:31 +0300 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2023-08-29 20:30:20 +0300 |
commit | 4b081ce0d830b684fdf967abc3696d1261387254 (patch) | |
tree | b913be8fb314c5713d29bfb98bdf75ebc6a6d4a4 /fs/smb | |
parent | 17d5b135bb720832364e8f55f6a887a3c7ec8fdb (diff) | |
download | linux-4b081ce0d830b684fdf967abc3696d1261387254.tar.xz |
ksmbd: fix slub overflow in ksmbd_decode_ntlmssp_auth_blob()
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>
Diffstat (limited to 'fs/smb')
-rw-r--r-- | fs/smb/server/auth.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/smb/server/auth.c b/fs/smb/server/auth.c index af7b2cdba126..229a6527870d 100644 --- a/fs/smb/server/auth.c +++ b/fs/smb/server/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; |