ACK: [SRU][F/J/N/O][PATCH 0/2] CVE-2024-50047, CVE-2024-53185 and CVE-2025-37750
Stefan Bader
stefan.bader at canonical.com
Fri May 23 09:25:26 UTC 2025
On 21.05.25 08:05, Massimiliano Pellizzer wrote:
> https://ubuntu.com/security/CVE-2024-50047
> https://ubuntu.com/security/CVE-2024-53185
> https://ubuntu.com/security/CVE-2025-37750
>
> [ Impact ]
>
> CVE-2024-50047
>
> smb: client: fix UAF in async decryption
>
> Doing an async decryption (large read) crashes with a
> slab-use-after-free way down in the crypto API.
>
> This is because TFM is being used in parallel.
>
> Fix this by allocating a new AEAD TFM for async decryption, but keep
> the existing one for synchronous READ cases (similar to what is done
> in smb3_calc_signature()).
>
> Also remove the calls to aead_request_set_callback() and
> crypto_wait_req() since it's always going to be a synchronous operation.
>
> CVE-2024-53185
>
> smb: client: fix NULL ptr deref in crypto_aead_setkey()
>
> Neither SMB3.0 or SMB3.02 supports encryption negotiate context, so
> when SMB2_GLOBAL_CAP_ENCRYPTION flag is set in the negotiate response,
> the client uses AES-128-CCM as the default cipher. See MS-SMB2
> 3.3.5.4.
>
> Commit b0abcd65ec54 ("smb: client: fix UAF in async decryption") added
> a @server->cipher_type check to conditionally call
> smb3_crypto_aead_allocate(), but that check would always be false as
> @server->cipher_type is unset for SMB3.02.
>
> Fix this by setting @server->cipher_type for SMB3.02 as well.
>
> CVE-2025-37750
>
> smb: client: fix UAF in decryption with multichannel
>
> After commit f7025d861694 ("smb: client: allocate crypto only for
> primary server") and commit b0abcd65ec54 ("smb: client: fix UAF in
> async decryption"), the channels started reusing AEAD TFM from primary
> channel to perform synchronous decryption, but that can't done as
> there could be multiple cifsd threads (one per channel) simultaneously
> accessing it to perform decryption.
>
> [ Fix ]
>
> Oracular and Noble:
> Affected only by CVE-2025-37750,
> backported the fix from mainline.
> Jammy and Focal:
> Backported the fix for CVE-2024-50047
> Cherry picked the fix for CVE-2024-53185
> Backported the fix for CVE-2025-37750
>
> [ Test Plan ]
>
> Noble and Oracular compile tested only.
>
> Jammy and Focal compile and boot tested.
> Moreover on Jammy and Focal I run the reprouducer
> and stress-ng using Jammy as a cifs server and
> Focal as a cifs client and vice versa.
>
> # Server
>
> $ sudo apt install -y samba
>
> $ sudo mkdir -p /srv/smbshare
> $ sudo chmod 0777 /srv/smbshare
>
> $ sudo adduser --disabled-password testuser
> $ sudo smbpasswd -a testuser
>
> $ dd if=/dev/urandom of=/srv/smbshare/largefile bs=1M count=1024
>
> Modified /etc/samba/smb.conf ensuring to have at lest the following:
>
> [global]
> server role = standalone server
> smb encrypt = required
> min protocol = SMB3
> max protocol = SMB3_11
>
> [sambashare]
> path = /srv/smbshare
> read only = no
> browsable = yes
> guest ok = no
> valid users = testuser
>
> $ sudo systemctl restart smbd
>
> # Client
>
> $ sudo apt install -y cifs-utils
>
> $ sudo mkdir -p /mnt/smbshare
> $ sudo chmod 0777 /mnt/smbshare
>
> $ sudo mount.cifs //10.10.10.25/sambashare /mnt/smbshare \
> -o username=testuser,password=test,seal,vers=3.1.1,esize=1
>
> $ dd if=/mnt/smbshare/largefile of=/dev/null bs=1M
> 1024+0 records in
> 1024+0 records out
> 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.51368 s, 427 MB/s
>
> $ cd /mnt/smbshare/
> $ sudo stress-ng --hdd 8 --hdd-bytes 2G --timeout 5m --verify --metrics-brief
> stress-ng: info: [1379] setting to a 300 second (5 mins, 0.00 secs) run per stressor
> stress-ng: info: [1379] dispatching hogs: 8 hdd
> stress-ng: info: [1379] successful run completed in 300.18s (5 mins, 0.18 secs)
> stress-ng: info: [1379] stressor bogo ops real time usr time sys time bogo ops/s bogo ops/s
> stress-ng: info: [1379] (secs) (secs) (secs) (real time) (usr+sys time)
> stress-ng: info: [1379] hdd 352025 300.15 17.46 1237.18 1172.82 280.58
>
> All tests has been run with KASAN enabled.
>
> [ Where Problems Could Occur ]
>
> The fix affects the SMB3 decryption logic in the CIFS client,
> specifically within the function used to process encrypted responses.
> An issue with this fix may lead to incorrect handling of per-thread
> cryptographic transform contexts (crypto_aead),
> particularly when offloaded decryption paths allocate
> and manage these contexts dynamically.
> A user might experience problems such as failed or corrupted file reads
> from encrypted SMB shares.
>
>
Acked-by: Stefan Bader <stefan.bader at canonical.com>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0xE8675DEECBEECEA3.asc
Type: application/pgp-keys
Size: 47863 bytes
Desc: OpenPGP public key
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20250523/c27e2c09/attachment-0001.key>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20250523/c27e2c09/attachment-0001.sig>
More information about the kernel-team
mailing list