Skip to main content
← All vulnerabilities
CVE-2025-68304

Bluetooth: hci_core: lookup hci_conn on RX path on protocol side

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 6.2, 6.5, 6.6, 6.17.11
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: none
  • Automatable: no
  • Technical impact: total

Summary

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: hci_core: lookup hci_conn on RX path on protocol side The hdev lock/lookup/unlock/use pattern in the packet RX path doesn't ensure hci_conn* is not concurrently modified/deleted. This locking appears to be leftover from before conn_hash started using RCU commit bf4c63252490b ("Bluetooth: convert conn hash to RCU") and not clear if it had purpose since then. Currently, there are code paths that delete hci_conn* from elsewhere than the ordered hdev->workqueue where the RX work runs in. E.g. commit 5af1f84ed13a ("Bluetooth: hci_sync: Fix UAF on hci_abort_conn_sync") introduced some of these, and there probably were a few others before it. It's better to do the locking so that even if these run concurrently no UAF is possible. Move the lookup of hci_conn and associated socket-specific conn to protocol recv handlers, and do them within a single critical section to cover hci_conn* usage and lookup. syzkaller has reported a crash that appears to be this issue: [Task hdev->workqueue] [Task 2] hci_disconnect_all_sync l2cap_recv_acldata(hcon) hci_conn_get(hcon) hci_abort_conn_sync(hcon) hci_dev_lock hci_dev_lock hci_conn_del(hcon) v-------------------------------- hci_dev_unlock hci_conn_put(hcon) conn = hcon->l2cap_data (UAF)

Timeline

  1. CVE published
  2. CISA SSVC assessment

    Exploitation: none · Automatable: no · Technical impact: total

  3. Record last updated

Affected versions

  • Linux Linux

    From 5af1f84ed13a416297ab9ced7537f4d5ae7f329a · fixed in ec74cdf77310c43b01b83ee898a9bd4b4b0b8e93; From 5af1f84ed13a416297ab9ced7537f4d5ae7f329a · fixed in 79a2d4678ba90bdba577dc3af88cc900d6dcd5ee; From 6.1.149 · fixed in 6.2; From 6.4.16 · fixed in 6.5; From 6.5.3 · fixed in 6.6

  • Linux Linux

    6.6

  • KernelLinux

    From 6.6.0 · fixed in 6.17.11

References 2

git.kernel.org