CVE-2024-53237
Severity CVSS v4.0:
Pending analysis
Type:
CWE-416
Use After Free
Publication date:
27/12/2024
Last modified:
03/11/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
Bluetooth: fix use-after-free in device_for_each_child()<br />
<br />
Syzbot has reported the following KASAN splat:<br />
<br />
BUG: KASAN: slab-use-after-free in device_for_each_child+0x18f/0x1a0<br />
Read of size 8 at addr ffff88801f605308 by task kbnepd bnep0/4980<br />
<br />
CPU: 0 UID: 0 PID: 4980 Comm: kbnepd bnep0 Not tainted 6.12.0-rc4-00161-gae90f6a6170d #1<br />
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-2.fc40 04/01/2014<br />
Call Trace:<br />
<br />
dump_stack_lvl+0x100/0x190<br />
? device_for_each_child+0x18f/0x1a0<br />
print_report+0x13a/0x4cb<br />
? __virt_addr_valid+0x5e/0x590<br />
? __phys_addr+0xc6/0x150<br />
? device_for_each_child+0x18f/0x1a0<br />
kasan_report+0xda/0x110<br />
? device_for_each_child+0x18f/0x1a0<br />
? __pfx_dev_memalloc_noio+0x10/0x10<br />
device_for_each_child+0x18f/0x1a0<br />
? __pfx_device_for_each_child+0x10/0x10<br />
pm_runtime_set_memalloc_noio+0xf2/0x180<br />
netdev_unregister_kobject+0x1ed/0x270<br />
unregister_netdevice_many_notify+0x123c/0x1d80<br />
? __mutex_trylock_common+0xde/0x250<br />
? __pfx_unregister_netdevice_many_notify+0x10/0x10<br />
? trace_contention_end+0xe6/0x140<br />
? __mutex_lock+0x4e7/0x8f0<br />
? __pfx_lock_acquire.part.0+0x10/0x10<br />
? rcu_is_watching+0x12/0xc0<br />
? unregister_netdev+0x12/0x30<br />
unregister_netdevice_queue+0x30d/0x3f0<br />
? __pfx_unregister_netdevice_queue+0x10/0x10<br />
? __pfx_down_write+0x10/0x10<br />
unregister_netdev+0x1c/0x30<br />
bnep_session+0x1fb3/0x2ab0<br />
? __pfx_bnep_session+0x10/0x10<br />
? __pfx_lock_release+0x10/0x10<br />
? __pfx_woken_wake_function+0x10/0x10<br />
? __kthread_parkme+0x132/0x200<br />
? __pfx_bnep_session+0x10/0x10<br />
? kthread+0x13a/0x370<br />
? __pfx_bnep_session+0x10/0x10<br />
kthread+0x2b7/0x370<br />
? __pfx_kthread+0x10/0x10<br />
ret_from_fork+0x48/0x80<br />
? __pfx_kthread+0x10/0x10<br />
ret_from_fork_asm+0x1a/0x30<br />
<br />
<br />
Allocated by task 4974:<br />
kasan_save_stack+0x30/0x50<br />
kasan_save_track+0x14/0x30<br />
__kasan_kmalloc+0xaa/0xb0<br />
__kmalloc_noprof+0x1d1/0x440<br />
hci_alloc_dev_priv+0x1d/0x2820<br />
__vhci_create_device+0xef/0x7d0<br />
vhci_write+0x2c7/0x480<br />
vfs_write+0x6a0/0xfc0<br />
ksys_write+0x12f/0x260<br />
do_syscall_64+0xc7/0x250<br />
entry_SYSCALL_64_after_hwframe+0x77/0x7f<br />
<br />
Freed by task 4979:<br />
kasan_save_stack+0x30/0x50<br />
kasan_save_track+0x14/0x30<br />
kasan_save_free_info+0x3b/0x60<br />
__kasan_slab_free+0x4f/0x70<br />
kfree+0x141/0x490<br />
hci_release_dev+0x4d9/0x600<br />
bt_host_release+0x6a/0xb0<br />
device_release+0xa4/0x240<br />
kobject_put+0x1ec/0x5a0<br />
put_device+0x1f/0x30<br />
vhci_release+0x81/0xf0<br />
__fput+0x3f6/0xb30<br />
task_work_run+0x151/0x250<br />
do_exit+0xa79/0x2c30<br />
do_group_exit+0xd5/0x2a0<br />
get_signal+0x1fcd/0x2210<br />
arch_do_signal_or_restart+0x93/0x780<br />
syscall_exit_to_user_mode+0x140/0x290<br />
do_syscall_64+0xd4/0x250<br />
entry_SYSCALL_64_after_hwframe+0x77/0x7f<br />
<br />
In &#39;hci_conn_del_sysfs()&#39;, &#39;device_unregister()&#39; may be called when<br />
an underlying (kobject) reference counter is greater than 1. This<br />
means that reparenting (happened when the device is actually freed)<br />
is delayed and, during that delay, parent controller device (hciX)<br />
may be deleted. Since the latter may create a dangling pointer to<br />
freed parent, avoid that scenario by reparenting to NULL explicitly.
Impact
Base Score 3.x
7.80
Severity 3.x
HIGH
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.19.300 (including) | 4.20 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.4.262 (including) | 5.5 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.10.202 (including) | 5.10.231 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.15.140 (including) | 5.15.174 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.1.64 (including) | 6.1.120 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.5.13 (including) | 6.6 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.6.3 (including) | 6.6.64 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.11.11 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.12 (including) | 6.12.2 (excluding) |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/0f67ca2a80acf8b207240405b7f72d660665d3df
- https://git.kernel.org/stable/c/27aabf27fd014ae037cc179c61b0bee7cff55b3d
- https://git.kernel.org/stable/c/6894717a1ea363c5a27010ba604f957c309d282d
- https://git.kernel.org/stable/c/7b277bd569bb6a2777f0014f84b4344f444fd49d
- https://git.kernel.org/stable/c/91e2a2e4d1336333804cd31162984f01ad8cc70f
- https://git.kernel.org/stable/c/a9584c897d1cba6265c78010bbb45ca5722c88bc
- https://git.kernel.org/stable/c/de5a44f351ca7efd9add9851b218f5353e2224b7
- https://git.kernel.org/stable/c/fb91ce37dc9a37ea23cf32b6d7b667004e93d4c5
- https://lists.debian.org/debian-lts-announce/2025/03/msg00001.html
- https://lists.debian.org/debian-lts-announce/2025/03/msg00002.html



