{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2023-53520","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2025-10-01T11:39:39.407Z","datePublished":"2025-10-01T11:46:07.355Z","dateUpdated":"2026-08-05T09:14:36.124Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T09:14:36.124Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: Fix hci_suspend_sync crash\n\nIf hci_unregister_dev() frees the hci_dev object but hci_suspend_notifier\nmay still be accessing it, it can cause the program to crash.\nHere's the call trace:\n  <4>[102152.653246] Call Trace:\n  <4>[102152.653254]  hci_suspend_sync+0x109/0x301 [bluetooth]\n  <4>[102152.653259]  hci_suspend_dev+0x78/0xcd [bluetooth]\n  <4>[102152.653263]  hci_suspend_notifier+0x42/0x7a [bluetooth]\n  <4>[102152.653268]  notifier_call_chain+0x43/0x6b\n  <4>[102152.653271]  __blocking_notifier_call_chain+0x48/0x69\n  <4>[102152.653273]  __pm_notifier_call_chain+0x22/0x39\n  <4>[102152.653276]  pm_suspend+0x287/0x57c\n  <4>[102152.653278]  state_store+0xae/0xe5\n  <4>[102152.653281]  kernfs_fop_write+0x109/0x173\n  <4>[102152.653284]  __vfs_write+0x16f/0x1a2\n  <4>[102152.653287]  ? selinux_file_permission+0xca/0x16f\n  <4>[102152.653289]  ? security_file_permission+0x36/0x109\n  <4>[102152.653291]  vfs_write+0x114/0x21d\n  <4>[102152.653293]  __x64_sys_write+0x7b/0xdb\n  <4>[102152.653296]  do_syscall_64+0x59/0x194\n  <4>[102152.653299]  entry_SYSCALL_64_after_hwframe+0x5c/0xc1\n\nThis patch holds the reference count of the hci_dev object while\nprocessing it in hci_suspend_notifier to avoid potential crash\ncaused by the race condition."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The vulnerable callback is only invoked from the kernel PM notifier chain (system suspend/resume initiated via /sys/power/state, logind, or lid/button events) racing with local HCI device unregistration; there is no over-the-air or network path that reaches hci_suspend_notifier, so the attack must be staged from local system access.\nAC:L - An attacker who can initiate suspend/resume and cause the Bluetooth adapter to unregister (e.g. adding/removing a USB Bluetooth dongle on a shared workstation or kiosk) drives both sides of the race and can retry the suspend/unplug cycle indefinitely until the window is hit.\nPR:L - On typical desktop, laptop and kiosk deployments an unprivileged user in an active local session can request suspend through logind/polkit, and adapter unregistration can be induced without root, so basic local user privileges suffice rather than real root.\nUI:N - The attacker performs both the suspend request and the adapter removal themselves; no action by a separate victim user is needed to reach the racing code paths.\nS:U - The freed hci_dev object and the corrupted memory both live in the kernel's own security authority; exploitation yields kernel-level compromise without crossing a VM, IOMMU or sandbox boundary.\nC:H - Use-after-free of the kzalloc'd hci_dev structure lets an attacker reclaim the slab object and have hci_suspend_sync()/hci_resume_sync() read attacker-influenced or stale kernel data, providing a path to arbitrary kernel memory disclosure.\nI:H - The stale hdev is written to (hdev->suspended, suspend_state, scanning_paused) and its function pointers (hdev->send, hdev->wakeup) and workqueue/mutex members are dereferenced after free, giving heap-spray-based arbitrary write and control-flow hijack potential.\nA:H - The reported failure mode is an outright kernel crash during suspend (hci_suspend_sync oops), and any UAF of this kind reliably panics or hangs the system, denying service across a suspend/resume cycle."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/bluetooth/hci_core.c"],"versions":[{"version":"9952d90ea2885d7cbf80cd233f694f09a9c0eaec","lessThan":"e1fa25a91091bbed691ba2996a6cee809e3309a2","status":"affected","versionType":"git"},{"version":"9952d90ea2885d7cbf80cd233f694f09a9c0eaec","lessThan":"06e2b5ad72b60f90bfe565c201346532e271f484","status":"affected","versionType":"git"},{"version":"9952d90ea2885d7cbf80cd233f694f09a9c0eaec","lessThan":"f9c8ce5d665653e3cf71a76349d41d7a7f7947e6","status":"affected","versionType":"git"},{"version":"9952d90ea2885d7cbf80cd233f694f09a9c0eaec","lessThan":"573ebae162111063eedc6c838a659ba628f66a0f","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/bluetooth/hci_core.c"],"versions":[{"version":"5.7","status":"affected"},{"version":"0","lessThan":"5.7","status":"unaffected","versionType":"semver"},{"version":"5.15.199","lessThanOrEqual":"5.15.*","status":"unaffected","versionType":"semver"},{"version":"6.1.55","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.5.5","lessThanOrEqual":"6.5.*","status":"unaffected","versionType":"semver"},{"version":"6.6","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.7","versionEndExcluding":"5.15.199"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.7","versionEndExcluding":"6.1.55"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.7","versionEndExcluding":"6.5.5"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.7","versionEndExcluding":"6.6"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/e1fa25a91091bbed691ba2996a6cee809e3309a2"},{"url":"https://git.kernel.org/stable/c/06e2b5ad72b60f90bfe565c201346532e271f484"},{"url":"https://git.kernel.org/stable/c/f9c8ce5d665653e3cf71a76349d41d7a7f7947e6"},{"url":"https://git.kernel.org/stable/c/573ebae162111063eedc6c838a659ba628f66a0f"}],"title":"Bluetooth: Fix hci_suspend_sync crash","x_generator":{"engine":"bippy-1.2.0"}}}}