Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1336 CNY

100%

CVE-2026-46275— Bluetooth: hci_uart: fix UAFs and race conditions in close and init paths

CVSS 7.8 · High EPSS 0.18% · P8

Affected Version Matrix 28

VendorProductVersion RangeStatus
LinuxLinux3b799254cf6f481460719023d7a18f46651e5e7f< 78aad93e938f013d9272fe0ee168f27883afa95caffected
3b799254cf6f481460719023d7a18f46651e5e7f< e2d19969c8d9198ecc3090bcd5312ecd503a3339affected
3b799254cf6f481460719023d7a18f46651e5e7f< c85cff648a2bc92322912db5f1727ad05afae7b6affected
3b799254cf6f481460719023d7a18f46651e5e7f< 9d20d48be2c4a071fb015eb09bda2cecd25daf34affected
3b799254cf6f481460719023d7a18f46651e5e7f< 81c7a3c22a0f2808cf4ae0b4908f59763b23606daffected
3b799254cf6f481460719023d7a18f46651e5e7f< 192cb0f1ca706d9a1bc36ae0ad5f666d1e4fd894affected
3b799254cf6f481460719023d7a18f46651e5e7f< 7338031946bd06f6dff149e67b60c4cd083bfea8affected
3b799254cf6f481460719023d7a18f46651e5e7f< c1bb9336ae6b54a5f6a353c4bd4ed9a4307e429baffected
… +20 more rows
Get alerts for future matching vulnerabilitiesLog in to subscribe

I. Basic Information for CVE-2026-46275

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
Bluetooth: hci_uart: fix UAFs and race conditions in close and init paths
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: hci_uart: fix UAFs and race conditions in close and init paths Vulnerabilities leading to Use-After-Free (UAF) and Null Pointer Dereference (NPD) conditions were observed in the lifecycle management of hci_uart. The primary issue arises because the workqueues (init_ready and write_work) are only flushed/cancelled if the HCI_UART_PROTO_READY flag is set during TTY close. If a hangup occurs before setup completes, hci_uart_tty_close() skips the teardown of these workqueues and proceeds to free the `hu` struct. When the scheduled work executes later, it blindly dereferences the freed `hu` struct. Furthermore, several data races and UAFs were identified in the teardown sequence: 1. Calling hci_uart_flush() from hci_uart_close() without effectively disabling write_work causes a race condition where both can concurrently double-free hu->tx_skb. This happens because protocol timers can concurrently invoke hci_uart_tx_wakeup() and requeue write_work. 2. Calling hci_free_dev(hdev) before hu->proto->close(hu) causes a UAF when vendor specific protocol close callbacks dereference hu->hdev. 3. In the initialization error paths, failing to take the proto_lock write lock before clearing PROTO_READY leads to races with active readers. Additionally, hci_uart_tty_receive() accesses hu->hdev outside the read lock, leading to UAFs if the initialization error path frees hdev concurrently. Fix these synchronization and lifecycle issues by: 1. Re-ordering hci_uart_tty_close() to clear HCI_UART_PROTO_READY first, followed immediately by a cancel_work_sync(&hu->write_work). Clearing the flag locks out concurrent protocol timers from successfully invoking hci_uart_tx_wakeup(), effectively rendering the cancellation permanent and preventing the tx_skb double-free. 2. Note: Clearing PROTO_READY early causes hci_uart_close() to skip hu->proto->flush(). This is perfectly safe in the tty_close path because hu->proto->close() executes shortly after, which intrinsically purges all protocol SKB queues and tears down the state. 3. Relocating hu->proto->close(hu) strictly prior to hci_free_dev(hdev) across all close and error paths to prevent vendor-level UAFs. 4. Moving the hdev->stat.byte_rx increment in hci_uart_tty_receive() inside the proto_lock read-side critical section to safely synchronize with device unregistration. 5. Adding cancel_work_sync(&hu->write_work) to hci_uart_close() to safely flush the workqueue before hci_uart_flush() is invoked via the HCI core. 6. Utilizing cancel_work_sync() instead of disable_work_sync() across all paths to prevent permanently breaking user-space retry capabilities.
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Source: CVE Program / CVE List V5
Vulnerability Type
N/A
Source: CVE Program / CVE List V5
Vulnerability Title
Linux kernel 安全漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于蓝牙hci_uart的关闭和初始化路径中存在释放后重用和竞争条件,可能导致空指针取消引用。
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

VendorProductAffected VersionsCPESubscribe
LinuxLinux 3b799254cf6f481460719023d7a18f46651e5e7f ~ 78aad93e938f013d9272fe0ee168f27883afa95c -
LinuxLinux 5.10 -

II. Public POCs for CVE-2026-46275

#POC DescriptionSource LinkShenlong Link
AI-Generated POCPremium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2026-46275

登录查看更多情报信息。

Patches & Fixes for CVE-2026-46275 (7)

Same Patch Batch · Linux · 2026-06-08 · 41 CVEs total

CVE-2026-462899.8 CRITICALlib/scatterlist: fix length calculations in extract_kvec_to_sg
CVE-2026-462888.4 HIGHof: unittest: fix use-after-free in of_unittest_changeset()
CVE-2026-463078.3 HIGHwifi: ath5k: do not access array OOB
CVE-2026-463038.2 HIGHisofs: validate Rock Ridge CE continuation extent against volume size
CVE-2026-462747.8 HIGHio-wq: check that the predecessor is hashed in io_wq_remove_pending()
CVE-2026-463117.8 HIGHdrm/amdgpu/userq: fix access to stale wptr mapping
CVE-2026-462807.8 HIGHlib: test_hmm: evict device pages on file close to avoid use-after-free
CVE-2026-462777.8 HIGHmm/zone_device: do not touch device folio after calling ->folio_free()
CVE-2026-463067.5 HIGHflow_dissector: do not dissect PPPoE PFC frames
CVE-2026-463047.5 HIGHnvmet: avoid recursive nvmet-wq flush in nvmet_ctrl_free
CVE-2026-462997.0 HIGHhfsplus: fix held lock freed on hfsplus_fill_super()
CVE-2026-46296spi: s3c64xx: fix NULL-deref on driver unbind
CVE-2026-46298pseries/papr-hvpipe: Fix race with interrupt handler
CVE-2026-46301spi: topcliff-pch: fix use-after-free on unbind
CVE-2026-46302selinux: allow multiple opens of /sys/fs/selinux/policy
CVE-2026-46314drm/v3d: Reject empty multisync extension to prevent infinite loop
CVE-2025-71315drm/vkms: Convert to DRM's vblank timer
CVE-2026-46305staging: rtl8723bs: os_dep: avoid NULL pointer dereference in rtw_cbuf_alloc
CVE-2026-46313media: intel/ipu6: fix error pointer dereference
CVE-2026-46308pmdomain: mediatek: fix use-after-free in scpsys_get_bus_protection_legacy()

Showing top 20 of 41 CVEs. View all on vendor page &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2026-46275

No comments yet


Leave a comment