CVE-2024-50047

Severity CVSS v4.0:
Pending analysis
Type:
CWE-416 Use After Free
Publication date:
21/10/2024
Last modified:
03/11/2025

Description

In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> smb: client: fix UAF in async decryption<br /> <br /> Doing an async decryption (large read) crashes with a<br /> slab-use-after-free way down in the crypto API.<br /> <br /> Reproducer:<br /> # mount.cifs -o ...,seal,esize=1 //srv/share /mnt<br /> # dd if=/mnt/largefile of=/dev/null<br /> ...<br /> [ 194.196391] ==================================================================<br /> [ 194.196844] BUG: KASAN: slab-use-after-free in gf128mul_4k_lle+0xc1/0x110<br /> [ 194.197269] Read of size 8 at addr ffff888112bd0448 by task kworker/u77:2/899<br /> [ 194.197707]<br /> [ 194.197818] CPU: 12 UID: 0 PID: 899 Comm: kworker/u77:2 Not tainted 6.11.0-lku-00028-gfca3ca14a17a-dirty #43<br /> [ 194.198400] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.2-3-gd478f380-prebuilt.qemu.org 04/01/2014<br /> [ 194.199046] Workqueue: smb3decryptd smb2_decrypt_offload [cifs]<br /> [ 194.200032] Call Trace:<br /> [ 194.200191] <br /> [ 194.200327] dump_stack_lvl+0x4e/0x70<br /> [ 194.200558] ? gf128mul_4k_lle+0xc1/0x110<br /> [ 194.200809] print_report+0x174/0x505<br /> [ 194.201040] ? __pfx__raw_spin_lock_irqsave+0x10/0x10<br /> [ 194.201352] ? srso_return_thunk+0x5/0x5f<br /> [ 194.201604] ? __virt_addr_valid+0xdf/0x1c0<br /> [ 194.201868] ? gf128mul_4k_lle+0xc1/0x110<br /> [ 194.202128] kasan_report+0xc8/0x150<br /> [ 194.202361] ? gf128mul_4k_lle+0xc1/0x110<br /> [ 194.202616] gf128mul_4k_lle+0xc1/0x110<br /> [ 194.202863] ghash_update+0x184/0x210<br /> [ 194.203103] shash_ahash_update+0x184/0x2a0<br /> [ 194.203377] ? __pfx_shash_ahash_update+0x10/0x10<br /> [ 194.203651] ? srso_return_thunk+0x5/0x5f<br /> [ 194.203877] ? crypto_gcm_init_common+0x1ba/0x340<br /> [ 194.204142] gcm_hash_assoc_remain_continue+0x10a/0x140<br /> [ 194.204434] crypt_message+0xec1/0x10a0 [cifs]<br /> [ 194.206489] ? __pfx_crypt_message+0x10/0x10 [cifs]<br /> [ 194.208507] ? srso_return_thunk+0x5/0x5f<br /> [ 194.209205] ? srso_return_thunk+0x5/0x5f<br /> [ 194.209925] ? srso_return_thunk+0x5/0x5f<br /> [ 194.210443] ? srso_return_thunk+0x5/0x5f<br /> [ 194.211037] decrypt_raw_data+0x15f/0x250 [cifs]<br /> [ 194.212906] ? __pfx_decrypt_raw_data+0x10/0x10 [cifs]<br /> [ 194.214670] ? srso_return_thunk+0x5/0x5f<br /> [ 194.215193] smb2_decrypt_offload+0x12a/0x6c0 [cifs]<br /> <br /> This is because TFM is being used in parallel.<br /> <br /> Fix this by allocating a new AEAD TFM for async decryption, but keep<br /> the existing one for synchronous READ cases (similar to what is done<br /> in smb3_calc_signature()).<br /> <br /> Also remove the calls to aead_request_set_callback() and<br /> crypto_wait_req() since it&amp;#39;s always going to be a synchronous operation.

Vulnerable products and versions

CPE From Up to
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.6.57 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (including) 6.11.4 (excluding)