{"id":"CVE-2025-68304","state":"PUBLISHED","title":"Bluetooth: hci_core: lookup hci_conn on RX path on protocol side","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: hci_core: lookup hci_conn on RX path on protocol side\n\nThe hdev lock/lookup/unlock/use pattern in the packet RX path doesn't\nensure hci_conn* is not concurrently modified/deleted. This locking\nappears to be leftover from before conn_hash started using RCU\ncommit bf4c63252490b (\"Bluetooth: convert conn hash to RCU\")\nand not clear if it had purpose since then.\n\nCurrently, there are code paths that delete hci_conn* from elsewhere\nthan the ordered hdev->workqueue where the RX work runs in. E.g.\ncommit 5af1f84ed13a (\"Bluetooth: hci_sync: Fix UAF on hci_abort_conn_sync\")\nintroduced some of these, and there probably were a few others before\nit.  It's better to do the locking so that even if these run\nconcurrently no UAF is possible.\n\nMove the lookup of hci_conn and associated socket-specific conn to\nprotocol recv handlers, and do them within a single critical section\nto cover hci_conn* usage and lookup.\n\nsyzkaller has reported a crash that appears to be this issue:\n\n    [Task hdev->workqueue]          [Task 2]\n                                    hci_disconnect_all_sync\n    l2cap_recv_acldata(hcon)\n                                      hci_conn_get(hcon)\n                                      hci_abort_conn_sync(hcon)\n                                        hci_dev_lock\n      hci_dev_lock\n                                        hci_conn_del(hcon)\n      v-------------------------------- hci_dev_unlock\n                                      hci_conn_put(hcon)\n      conn = hcon->l2cap_data (UAF)","publishedAt":"2025-12-16T15:06:21.887Z","updatedAt":"2026-10-15T22:02:48.882Z","severity":{"score":8.8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"5af1f84ed13a416297ab9ced7537f4d5ae7f329a","status":"affected","lessThan":"ec74cdf77310c43b01b83ee898a9bd4b4b0b8e93","versionType":"git"},{"version":"5af1f84ed13a416297ab9ced7537f4d5ae7f329a","status":"affected","lessThan":"79a2d4678ba90bdba577dc3af88cc900d6dcd5ee","versionType":"git"},{"version":"cd55c13bbb3d093ae601aa97e588ed4c1390ebb1","status":"affected","versionType":"git"},{"version":"4d3ca4a9aaf0aa798a6be372dc0fc3a29e37dd57","status":"affected","versionType":"git"},{"version":"80265dd1d944c3f33e52375b5dbe654980bd2688","status":"affected","versionType":"git"},{"version":"6.1.149","status":"affected","lessThan":"6.2","versionType":"semver"},{"version":"6.4.16","status":"affected","lessThan":"6.5","versionType":"semver"},{"version":"6.5.3","status":"affected","lessThan":"6.6","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/net/bluetooth/hci_core.h","net/bluetooth/hci_core.c","net/bluetooth/iso.c","net/bluetooth/l2cap_core.c","net/bluetooth/sco.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.6","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.6","versionType":"semver"},{"version":"6.17.11","status":"unaffected","lessThanOrEqual":"6.17.*","versionType":"semver"},{"version":"6.18","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/net/bluetooth/hci_core.h","net/bluetooth/hci_core.c","net/bluetooth/iso.c","net/bluetooth/l2cap_core.c","net/bluetooth/sco.c"]}],"references":["https://git.kernel.org/stable/c/ec74cdf77310c43b01b83ee898a9bd4b4b0b8e93","https://git.kernel.org/stable/c/79a2d4678ba90bdba577dc3af88cc900d6dcd5ee"],"weaknesses":[],"ingestedAt":"2026-10-29T20:09:56.034Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2025/68xxx/CVE-2025-68304.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2025-68304","state":"PUBLISHED","datePublished":"2025-12-16T15:06:21.887Z","dateUpdated":"2026-10-15T22:02:48.882Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2025-12-16T14:48:05.294Z"},"containers":{"cna":{"title":"Bluetooth: hci_core: lookup hci_conn on RX path on protocol side","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: hci_core: lookup hci_conn on RX path on protocol side\n\nThe hdev lock/lookup/unlock/use pattern in the packet RX path doesn't\nensure hci_conn* is not concurrently modified/deleted. This locking\nappears to be leftover from before conn_hash started using RCU\ncommit bf4c63252490b (\"Bluetooth: convert conn hash to RCU\")\nand not clear if it had purpose since then.\n\nCurrently, there are code paths that delete hci_conn* from elsewhere\nthan the ordered hdev->workqueue where the RX work runs in. E.g.\ncommit 5af1f84ed13a (\"Bluetooth: hci_sync: Fix UAF on hci_abort_conn_sync\")\nintroduced some of these, and there probably were a few others before\nit.  It's better to do the locking so that even if these run\nconcurrently no UAF is possible.\n\nMove the lookup of hci_conn and associated socket-specific conn to\nprotocol recv handlers, and do them within a single critical section\nto cover hci_conn* usage and lookup.\n\nsyzkaller has reported a crash that appears to be this issue:\n\n    [Task hdev->workqueue]          [Task 2]\n                                    hci_disconnect_all_sync\n    l2cap_recv_acldata(hcon)\n                                      hci_conn_get(hcon)\n                                      hci_abort_conn_sync(hcon)\n                                        hci_dev_lock\n      hci_dev_lock\n                                        hci_conn_del(hcon)\n      v-------------------------------- hci_dev_unlock\n                                      hci_conn_put(hcon)\n      conn = hcon->l2cap_data (UAF)"}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"5af1f84ed13a416297ab9ced7537f4d5ae7f329a","status":"affected","lessThan":"ec74cdf77310c43b01b83ee898a9bd4b4b0b8e93","versionType":"git"},{"version":"5af1f84ed13a416297ab9ced7537f4d5ae7f329a","status":"affected","lessThan":"79a2d4678ba90bdba577dc3af88cc900d6dcd5ee","versionType":"git"},{"version":"cd55c13bbb3d093ae601aa97e588ed4c1390ebb1","status":"affected","versionType":"git"},{"version":"4d3ca4a9aaf0aa798a6be372dc0fc3a29e37dd57","status":"affected","versionType":"git"},{"version":"80265dd1d944c3f33e52375b5dbe654980bd2688","status":"affected","versionType":"git"},{"version":"6.1.149","status":"affected","lessThan":"6.2","versionType":"semver"},{"version":"6.4.16","status":"affected","lessThan":"6.5","versionType":"semver"},{"version":"6.5.3","status":"affected","lessThan":"6.6","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/net/bluetooth/hci_core.h","net/bluetooth/hci_core.c","net/bluetooth/iso.c","net/bluetooth/l2cap_core.c","net/bluetooth/sco.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.6","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.6","versionType":"semver"},{"version":"6.17.11","status":"unaffected","lessThanOrEqual":"6.17.*","versionType":"semver"},{"version":"6.18","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/net/bluetooth/hci_core.h","net/bluetooth/hci_core.c","net/bluetooth/iso.c","net/bluetooth/l2cap_core.c","net/bluetooth/sco.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/ec74cdf77310c43b01b83ee898a9bd4b4b0b8e93"},{"url":"https://git.kernel.org/stable/c/79a2d4678ba90bdba577dc3af88cc900d6dcd5ee"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":8.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:A - The flaw is reached through Bluetooth ACL, SCO, or ISO packets, requiring an attacker within radio range of a connectable or advertising target.\nAC:L - An adjacent peer can repeatedly manipulate connection lifecycles while flooding receive traffic, influencing both sides of the race without an uncontrollable prerequisite.\nPR:N - The receive path performs no peer credential or kernel capability check and is reachable before application-level Bluetooth authentication.\nUI:N - No victim action is required once Bluetooth is operating in a connectable or advertising deployment; packet reception and teardown occur automatically.\nS:U - Exploitation compromises the host kernel within the same security authority and does not inherently cross a virtualization or hardware isolation boundary.\nC:H - The freed hci_conn and associated protocol objects contain numerous kernel pointers; reclaiming them can turn stale dereferences into powerful kernel-memory disclosure primitives.\nI:H - The UAF permits writes through reclaimed protocol state, including reference-count, workqueue, reassembly, and socket-related operations, making arbitrary corruption or control-flow hijacking plausible.\nA:H - The UAF has produced KASAN failures and kernel panics, and it can be triggered repeatedly to crash the system."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T12:10:46.641Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.6","versionEndExcluding":"6.17.11"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.6","versionEndExcluding":"6.18"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.1.149"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.4.16"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.5.3"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2025-68304","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"total"}],"version":"2.0.3","timestamp":"2026-10-15T22:00:49.566306Z"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-15T22:02:48.882Z"}}]}}}