Bluetooth: L2CAP: Fix UAF in channel timeout by holding conn ref
Key facts
- Attack vector
- Adjacent network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Impact type
- Code execution
- Confidentiality · integrity · availability
- High · High · High
- Fix status
- Partial Red Hat: 1 without a fix
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and Red Hat. Impact type from CWE-416 and the CVSS impact.
Summary
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: L2CAP: Fix UAF in channel timeout by holding conn ref l2cap_chan_timeout() runs asynchronously and accesses chan->conn. If the connection is torn down while the timer is running or pending, chan->conn can be freed, leading to a use-after-free when the timer worker attempts to lock conn->lock: | BUG: KASAN: slab-use-after-free in instrument_atomic_read_write include/linux/instrumented.h:112 [inline] | BUG: KASAN: slab-use-after-free in atomic_long_try_cmpxchg_acquire include/linux/atomic/atomic-instrumented.h:4456 [inline] | BUG: KASAN: slab-use-after-free in __mutex_trylock_fast kernel/locking/mutex.c:161 [inline] | BUG: KASAN: slab-use-after-free in mutex_lock+0x4f/0xa0 kernel/locking/mutex.c:318 | Write of size 8 at addr ffff8881298d9550 by task kworker/2:1/83 | | CPU: 2 UID: 0 PID: 83 Comm: kworker/2:1 Not tainted 7.1.0-rc6-next-20260601-dirty #6 PREEMPT(full) | Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.17.0-debian-1.17.0-1 04/01/2014 | Workqueue: events l2cap_chan_timeout | Call Trace: | <TASK> | instrument_atomic_read_write include/linux/instrumented.h:112 [inline] | atomic_long_try_cmpxchg_acquire include/linux/atomic/atomic-instrumented.h:4456 [inline] | __mutex_trylock_fast kernel/locking/mutex.c:161 [inline] | mutex_lock+0x4f/0xa0 kernel/locking/mutex.c:318 | l2cap_chan_timeout+0x5d/0x1b0 net/bluetooth/l2cap_core.c:422 | process_one_work kernel/workqueue.c:3326 [inline] | process_scheduled_works+0x7c8/0xfb0 kernel/workqueue.c:3409 | worker_thread+0x8a9/0xcf0 kernel/workqueue.c:3490 | kthread+0x346/0x430 kernel/kthread.c:436 | ret_from_fork+0x1a3/0x470 arch/x86/kernel/process.c:158 | ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245 | </TASK> | | Allocated by task 320: | l2cap_conn_add+0xa7/0x820 net/bluetooth/l2cap_core.c:7075 | l2cap_connect_cfm+0xdb/0xd70 net/bluetooth/l2cap_core.c:7452 | hci_connect_cfm include/net/bluetooth/hci_core.h:2139 [inline] | hci_remote_features_evt+0x52f/0x9f0 net/bluetooth/hci_event.c:3760 | hci_event_func net/bluetooth/hci_event.c:7796 [inline] | hci_event_packet+0x561/0xa70 net/bluetooth/hci_event.c:7847 | hci_rx_work+0x370/0x890 net/bluetooth/hci_core.c:4040 | process_one_work kernel/workqueue.c:3326 [inline] | process_scheduled_works+0x7c8/0xfb0 kernel/workqueue.c:3409 | worker_thread+0x8a9/0xcf0 kernel/workqueue.c:3490 | kthread+0x346/0x430 kernel/kthread.c:436 | ret_from_fork+0x1a3/0x470 arch/x86/kernel/process.c:158 | ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245 | | Freed by task 322: | hci_disconn_cfm include/net/bluetooth/hci_core.h:2154 [inline] | hci_conn_hash_flush+0x101/0x1f0 net/bluetooth/hci_conn.c:2736 | hci_dev_close_sync+0x889/0xde0 net/bluetooth/hci_sync.c:5405 | hci_dev_do_close net/bluetooth/hci_core.c:502 [inline] | hci_unregister_dev+0x1f7/0x370 net/bluetooth/hci_core.c:2679 | vhci_release+0x12a/0x180 drivers/bluetooth/hci_vhci.c:690 | __fput+0x369/0x890 fs/file_table.c:510 | task_work_run+0x160/0x1d0 kernel/task_work.c:233 | get_signal+0xf5b/0x1120 kernel/signal.c:2810 | arch_do_signal_or_restart+0x4d/0x600 arch/x86/kernel/signal.c:337 | __exit_to_user_mode_loop kernel/entry/common.c:64 [inline] | exit_to_user_mode_loop+0x85/0x510 kernel/entry/common.c:98 | do_syscall_64+0x263/0x3d0 arch/x86/entry/syscall_64.c:100 | entry_SYSCALL_64_after_hwframe+0x77/0x7f | | The buggy address belongs to the object at ffff8881298d9400 | which belongs to the cache kmalloc-512 of size 512 | The buggy address is located 336 bytes inside of | freed 512-byte region [ffff8881298d9400, ffff8881298d9600) Fix it by having chan->conn hold a reference to l2cap_conn (via l2cap_conn_get) when the channel is added to the connection, and releasing it in the channel destructor. This ensures the l2cap_conn remains alive as long as the channel exists. A new FLAG_DEL channel flag is introduced to indicate that the ch ---truncated---
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Total
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| Linux | Linux | 5.10.259 to before 5.10.265; 5.15.210 to before 5.15.216; 6.1.176 to before 6.1.183; 6.6.143 to before 6.6.145; 6.12.93 to before 6.12.97; 6.18.35 to before 6.18.39; 7.0.12 to before 7.1 | 5.10.265, 5.15.216, 6.1.183, 6.6.145, 6.12.97, 6.18.39, 7.1 | Patch available | CNA |
| Linux | Linux | 7.1 and later | 5.10.265, 5.15.216, 6.1.183, 6.6.145, 6.12.97, 6.18.39, 7.1.4, 7.2 | Patch available | CNA |
- Linux VendorLinux Affected 5.10.259 to before 5.10.265; 5.15.210 to before 5.15.216; 6.1.176 to before 6.1.183; 6.6.143 to before 6.6.145; 6.12.93 to before 6.12.97; 6.18.35 to before 6.18.39; 7.0.12 to before 7.1 Fixed in 5.10.265, 5.15.216, 6.1.183, 6.6.145, 6.12.97, 6.18.39, 7.1 Patch available CNA
- Linux VendorLinux Affected 7.1 and later Fixed in 5.10.265, 5.15.216, 6.1.183, 6.6.145, 6.12.97, 6.18.39, 7.1.4, 7.2 Patch available CNA
CPE configurations NVD · 4
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.10.259 to before 5.10.265; 5.15.210 to before 5.15.216; 6.1.176 to before 6.1.183; 6.6.143 to before 6.6.145; 6.12.93 to before 6.12.97; 6.18.35 to before 6.18.39; 7.0.12 to before 7.1; 7.1.1 to before 7.1.4 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:7.1:-:*:*:*:*:*:* | 7.1 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:7.1:rc6:*:*:*:*:*:* | 7.1 rc6 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:7.1:rc7:*:*:*:*:*:* | 7.1 rc7 | Vulnerable | Linux |
- cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* Versions 5.10.259 to before 5.10.265; 5.15.210 to before 5.15.216; 6.1.176 to before 6.1.183; 6.6.143 to before 6.6.145; 6.12.93 to before 6.12.97; 6.18.35 to before 6.18.39; 7.0.12 to before 7.1; 7.1.1 to before 7.1.4 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:7.1:-:*:*:*:*:*:* Versions 7.1 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:7.1:rc6:*:*:*:*:*:* Versions 7.1 rc6 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:7.1:rc7:*:*:*:*:*:* Versions 7.1 rc7 Vulnerable ·Linux
Remediation
- Fix · CNA Linux (Linux) Fixed in 5.10.265, 5.15.216, 6.1.183, 6.6.145, 6.12.97, 6.18.39, 7.1
- Fix · CNA Linux (Linux) Fixed in 5.10.265, 5.15.216, 6.1.183, 6.6.145, 6.12.97, 6.18.39, 7.1.4, 7.2
Vendor assessments
Red Hat
Red Hat rating: Important. Red Hat's page for this CVE →
| Product | Status | Plan or fix |
|---|---|---|
| Red Hat Enterprise Linux 10 | Affected | No fix yet |
Not affected: 4 products
- Red Hat Enterprise Linux 6
- Red Hat Enterprise Linux 7
- Red Hat Enterprise Linux 8
- Red Hat Enterprise Linux 9
Timeline
- 2026-10-02 Threatist record created from CVE-2026-64434
- 2026-10-03 Alias added: GHSA-9wm7-g2v6-vprf
- 2026-10-16 CISA SSVC decision points changed
- 2026-10-16 Priority changed: LOW → MEDIUM
- 2026-10-20 Weakness changed · CISA ADP
References
Patch 8
- https://git.kernel.org/stable/c/8f90405a4a6f1f1880dc07996b47bf57c712bd8a
- https://git.kernel.org/stable/c/32d783cafb46ff3ca58e6f9fd62c9c5f35eaf26b
- https://git.kernel.org/stable/c/8922c7940bae9ce4b1736dddb6362370793835c2
- https://git.kernel.org/stable/c/91047a4396a8b1857a6f712a90cf33ec0012b189
- https://git.kernel.org/stable/c/0b0e2bf39cf99e458d991b9df253727e036a7d7d
- https://git.kernel.org/stable/c/d3b739db5dc6f688a60d56da872fabaf65246032
- https://git.kernel.org/stable/c/50c38d9f42a529691e4e67ea9cedf4f0bfc8d277
- https://git.kernel.org/stable/c/b66774b48dd98f07254951f74ea6f513efe7ff8b
More Linux Kernel vulnerabilities
- TI-2025-26358 tls: fix handling of zero-length records on the rx_list KEVCVSS 3.1CRITICAL 9.8
- TI-2026-38352 netfilter: bridge: make ebt_snat ARP rewrite writable KEVCVSS 3.1HIGH 8.8
- TI-2013-05264 The (1) get_user and (2) put_user API functions in the Linux kernel before 3.5.5 on the… KEVCVSS 3.1HIGH 8.8
- TI-2022-00125 Integer overflow in kernel KEVCVSS 3.1HIGH 8.4
- TI-2013-01864 The perf_swevent_init function in kernel/events/core.c in the Linux kernel before 3.8.9… KEVCVSS 3.1HIGH 8.4
- TI-2021-05514 Heap Out-Of-Bounds Write in Netfilter IP6T_SO_SET_REPLACE KEVCVSS 3.1HIGH 8.3
Sources
- CVE-2026-64434 · CVE Program
- CVE-2026-64434 · NVD
- FIRST EPSS
- GHSA-9wm7-g2v6-vprf · GitHub Advisory Database · CC BY 4.0
- CVE-2026-64434 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences