HIGH Introduced in 3.10
rfcomm SecurityCfm UAF
CVE-2026-89569
CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
KernelScan AI7.5HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: RFCOMM: serialize security confirmation handling rfcomm_security_cfm() looks up a session on session_list and then walks its DLC list without holding rfcomm_mutex. Since RFCOMM session teardown uses rfcomm_mutex, krfcommd can close and free the same session and DLCs concurrently: hci_rx_work krfcommd ----------- --------- rfcomm_session_get() rfcomm_lock() rfcomm_session_close() rfcomm_dlc_unlink() rfcomm_session_del() kfree(s) rfcomm_unlock() walk s->dlcs The callback can then read a freed session list head and touch freed DLCs while updating their flags or timers. Serialize the session lookup and DLC traversal in rfcomm_security_cfm() with rfcomm_mutex. This matches the existing RFCOMM session lifetime rules and prevents concurrent rfcomm_session_del() / rfcomm_dlc_unlink() from tearing the objects down while the callback is using them. KASAN reported: BUG: KASAN: slab-use-after-free in rfcomm_security_cfm+0x41c/0x440 Read of size 8 at addr ffff888111fb3960 by task kworker/u17:1/89 Workqueue: hci0 hci_rx_work Call Trace: rfcomm_security_cfm+0x41c/0x440 hci_encrypt_cfm+0x139/0x590 hci_encrypt_change_evt+0x37b/0xc40 hci_event_packet+0x71b/0xb20 hci_rx_work+0x293/0x730 Allocated by task 69: rfcomm_session_add+0x9e/0x2f0 rfcomm_run+0x44b/0x41e0 Freed by task 69: kfree+0x131/0x3c0 rfcomm_session_del+0x188/0x220 rfcomm_run+0x1985/0x41e0
02KernelScan AI Analysis
Risk summary
Any device with an active Bluetooth stack is at risk from a nearby attacker who can trigger a Bluetooth connection. The race condition between security confirmation handling and session teardown leads to use-after-free of kernel heap objects, potentially causing memory corruption or a kernel crash. Exploitation requires proximity and winning a narrow race window.
Vulnerability analysis
The Bluetooth RFCOMM subsystem handles security confirmations from the controller without protecting the list of active sessions and their connections. While one kernel thread is walking those lists, another thread can finish tearing down and freeing the same memory, causing a use-after-free. The fix adds locking around the confirmation handling to match the teardown path, preventing the session from being freed while the callback is still using it. The bug is triggered when the kernel processes a Bluetooth encryption event during connection setup, so any nearby Bluetooth peer can reach it, and a local process initiating Bluetooth connections can as well.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 5.10 | 3.10 | 5.10.270 | 62ce8b33eb23 |
| 5.15 | 3.10 | 5.15.221 | 3873f3449701 |
| 6.1 | 3.10 | 6.1.188 | 7ded32641064 |
| 6.12 | 3.10 | 6.12.109 | 1b7841ffad08 |
| 6.18 | 3.10 | 6.18.50 | 946d76db77ee |
| 6.6 | 3.10 | 6.6.157 | 82425b14f0fb |
| 7.2 | 3.10 | 7.2.4 | fbf7961964a6 |
| mainline | 3.10 | 7.3 | 759c185d0bbd |
| cip/5.10 | 3.10 | 5.10.271-cip78 | 62ce8b33eb23 |
| cip/6.1 | 3.10 | 6.1.189-cip61 | 7ded32641064 |
| cip/6.1-rt | 3.10 | 6.1.189-cip61-rt32 | 7ded32641064 |
| cip/6.12 | 3.10 | 6.12.111-cip32 | 1b7841ffad08 |
04CIP Kernels
State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.
| CIP tree | State |
|---|---|
| cip/6.12 | Fixed in 6.12.111-cip32 |
| cip/6.1 | Fixed in 6.1.189-cip61 |
| cip/6.1-rt | Fixed in 6.1.189-cip61-rt32 |
| cip/5.10 | Fixed in 5.10.271-cip78 |
| cip/5.10-rt | Affected — no CIP fix yet (latest 5.10.268-cip77-rt34) |
| cip/4.19 | Affected — no CIP fix yet (latest 4.19.325-cip136) |
| cip/4.19-rt | Affected — no CIP fix yet (latest 4.19.325-cip136-rt50) |
| cip/4.4 | Affected — no CIP fix yet (latest 4.4.302-cip115) |
| cip/4.4-rt | Affected — no CIP fix yet (latest 4.4.302-cip115-rt63) |