UBUNTU-CVE-2026-64433: Use After Free
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: MGMT: Fix UAF of hciconnparams in adddevicecomplete adddevicecomplete() runs from the hcicmdsyncwork kworker, which holds only hcireqsynclock and not hcidevlock. It calls hciconnparamslookup() and then dereferences the returned object (params->flags) without taking hcidevlock: params = hciconnparamslookup(hdev, &cp->addr.bdaddr, leaddrtype(cp->addr.type)); ... deviceflagschanged(NULL, hdev, &cp->addr.bdaddr, cp->addr.type, hdev->connflags, params ? params->flags : 0); hciconnparamslookup() walks hdev->leconnparams and is documented to require hdev->lock. A concurrent MGMTOPREMOVEDEVICE (removedevice()), which does run under hcidevlock, can call hciconnparamsfree() to listdel() and kfree() the very object the lookup returned, so the subsequent params->flags read touches freed memory [0]. Hold hcidevlock() across the hciconnparamslookup() and the read of params->flags (and the matching event emission) so the lookup result cannot be freed by a concurrent removedevice() before it is used, honouring the locking contract of hciconnparamslookup(). [0]: (trailing page/memory-state dump trimmed) BUG: KASAN: slab-use-after-free in adddevicecomplete+0x358/0x3d8 net/bluetooth/mgmt.c:7671 Read of size 1 at addr ffff000017ab26c1 by task kworker/u9:8/388 CPU: 1 UID: 0 PID: 388 Comm: kworker/u9:8 Not tainted 7.0.11 #20 PREEMPT Hardware name: linux,dummy-virt (DT) Workqueue: hci0 hcicmdsyncwork Call trace: showstack+0x2c/0x3c arch/arm64/kernel/stacktrace.c:499 (C) dumpstack lib/dumpstack.c:94 [inline] dumpstacklvl+0xb4/0xd4 lib/dumpstack.c:120 printaddressdescription mm/kasan/report.c:378 [inline] printreport+0x118/0x5d8 mm/kasan/report.c:482 kasanreport+0xb0/0xf4 mm/kasan/report.c:595 asanreportload1noabort+0x20/0x2c mm/kasan/reportgeneric.c:378 adddevicecomplete+0x358/0x3d8 net/bluetooth/mgmt.c:7671 hcicmdsyncwork+0x14c/0x240 net/bluetooth/hcisync.c:334 processonework+0x628/0xd38 kernel/workqueue.c:3289 processscheduledworks kernel/workqueue.c:3372 [inline] workerthread+0x7a8/0xac0 kernel/workqueue.c:3453 kthread+0x39c/0x444 kernel/kthread.c:436 retfromfork+0x10/0x20 arch/arm64/kernel/entry.S:860 Allocated by task 3401: kasansavestack+0x3c/0x64 mm/kasan/common.c:57 kasansavetrack+0x20/0x3c mm/kasan/common.c:78 kasansaveallocinfo+0x40/0x54 mm/kasan/generic.c:570 poisonkmallocredzone mm/kasan/common.c:398 [inline] kasankmalloc+0xd4/0xd8 mm/kasan/common.c:415 kasankmalloc include/linux/kasan.h:263 [inline] kmalloccachenoprof+0x1b0/0x458 mm/slub.c:5385 kmallocnoprof include/linux/slab.h:950 [inline] kzallocnoprof include/linux/slab.h:1188 [inline] hciconnparamsadd+0x10c/0x4b0 net/bluetooth/hcicore.c:2279 hciconnparamsset net/bluetooth/mgmt.c:5162 [inline] adddevice+0x5b4/0xa54 net/bluetooth/mgmt.c:7755 hcimgmtcmd net/bluetooth/hcisock.c:1721 [inline] hcisocksendmsg+0x10b4/0x1dd0 net/bluetooth/hcisock.c:1841 socksendmsgnosec net/socket.c:727 [inline] socksendmsg+0xe0/0x128 net/socket.c:742 sockwriteiter+0x250/0x390 net/socket.c:1195 newsyncwrite fs/readwrite.c:595 [inline] vfswrite+0x66c/0xab0 fs/readwrite.c:688 ksyswrite+0x1fc/0x24c fs/readwrite.c:740 dosyswrite fs/readwrite.c:751 [inline] sesyswrite fs/readwrite.c:748 [inline] arm64syswrite+0x70/0xa4 fs/readwrite.c:748 invokesyscall arch/arm64/kernel/syscall.c:35 [inline] invokesyscall+0x84/0x2a8 arch/arm64/kernel/syscall.c:49 el0svccommon.constprop.0+0xe4/0x294 arch/arm64/kernel/syscall.c:132 doel0svc+0x44/0x5c arch/arm64/kernel/syscall.c:151 el0svc+0x38/0xac arch/arm64/kernel/entry-common.c:724 el0t64synchandler+0xa0/0xe4 arch/arm64/kernel/entry-common.c:743 el0t64sync+0x198/0x19c arch/arm64/kernel/entry.S:596 Freed by task 3740: kasansavestack+0x3c/0x64 ---truncated---
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 6.8.0-147.147 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 6.8.0-1067.70 - Upgrade
Upgrade
ubuntu/linux-aws-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1012.12~24.04.1 - Upgrade
Upgrade
ubuntu/linux-azureto a version that resolves this vulnerability.Fixed in 6.8.0-1071.79 - Upgrade
Upgrade
ubuntu/linux-azure-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1014.14~24.04.1 - Upgrade
Upgrade
ubuntu/linux-azure-fdeto a version that resolves this vulnerability.Fixed in 6.8.0-1069.76 - Upgrade
Upgrade
ubuntu/linux-azure-fde-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1013.13~24.04.1 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 6.8.0-1071.79 - Upgrade
Upgrade
ubuntu/linux-gcp-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1011.11~24.04.1 - Upgrade
Upgrade
ubuntu/linux-gketo a version that resolves this vulnerability.Fixed in 6.8.0-1066.74 - Upgrade
Upgrade
ubuntu/linux-gkeopto a version that resolves this vulnerability.Fixed in 6.8.0-1052.56 - Upgrade
Upgrade
ubuntu/linux-hwe-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-31.31~24.04.1 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 6.8.0-1067.68 - Upgrade
Upgrade
ubuntu/linux-lowlatencyto a version that resolves this vulnerability.Fixed in 6.8.0-147.147.1 - Upgrade
Upgrade
ubuntu/linux-nvidia-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1018.18~24.04.1 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 6.8.0-1064.67 - Upgrade
Upgrade
ubuntu/linux-oracle-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1011.11~24.04.1 - Upgrade
Upgrade
ubuntu/linux-riscv-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-31.31.1~24.04.1 - Upgrade
Upgrade
ubuntu/linux-bluefieldto a version that resolves this vulnerability.Fixed in 6.8.0-1033.38 - Upgrade
Upgrade
ubuntu/linux-realtimeto a version that resolves this vulnerability.Fixed in 6.8.1-1062.63 - Upgrade
Upgrade
ubuntu/linux-aws-fipsto a version that resolves this vulnerability.Fixed in 6.8.0-1067.70+fips1 - Upgrade
Upgrade
ubuntu/linux-azure-fipsto a version that resolves this vulnerability.Fixed in 6.8.0-1071.79+fips1 - Upgrade
Upgrade
ubuntu/linux-fipsto a version that resolves this vulnerability.Fixed in 6.8.0-147.147+fips1 - Upgrade
Upgrade
ubuntu/linux-gcp-fipsto a version that resolves this vulnerability.Fixed in 6.8.0-1071.79+fips1 - Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 7.0.0-31.31 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 7.0.0-1012.12 - Upgrade
Upgrade
ubuntu/linux-azureto a version that resolves this vulnerability.Fixed in 7.0.0-1014.14 - Upgrade
Upgrade
ubuntu/linux-azure-fdeto a version that resolves this vulnerability.Fixed in 7.0.0-1013.13 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 7.0.0-1011.11 - Upgrade
Upgrade
ubuntu/linux-gketo a version that resolves this vulnerability.Fixed in 7.0.0-1006.7 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 7.0.0-1013.13 - Upgrade
Upgrade
ubuntu/linux-nvidiato a version that resolves this vulnerability.Fixed in 7.0.0-1018.18 - Upgrade
Upgrade
ubuntu/linux-nvidia-bosto a version that resolves this vulnerability.Fixed in 7.0.0-2018.18 - Upgrade
Upgrade
ubuntu/linux-oem-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1013.13 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 7.0.0-1011.11 - Upgrade
Upgrade
ubuntu/linux-raspito a version that resolves this vulnerability.Fixed in 7.0.0-1019.19 - Upgrade
Upgrade
ubuntu/linux-realtimeto a version that resolves this vulnerability.Fixed in 7.0.0-31.31.1 - Upgrade
Upgrade
ubuntu/linux-riscvto a version that resolves this vulnerability.Fixed in 7.0.0-31.31.1 - Compensating control
In add_device_complete(), hold hci_dev_lock() across hci_conn_params_lookup(), the subsequent params->flags read, and the matching device_flags_changed() event emission so a concurrent MGMT_OP_REMOVE_DEVICE/remove_device() cannot free the hci_conn_params object before it is used.
Event History
Frequently Asked Questions
What access is required to exploit this issue?
The reported vector is local and requires low privileges. No user interaction is required.
What race condition causes the use-after-free?
The issue occurs when add_device_complete() looks up connection parameters without hci_dev_lock while a concurrent MGMT_OP_REMOVE_DEVICE can remove and free the same object. The vulnerable path then reads params->flags from freed memory.