CVE-2026-23146
Medium · 5.5CVSS
5.5
EPSS
0.1%
Published
Feb 14, 2026
CISA due date
—
Cloudanix analysis
A timing problem in Linux Bluetooth handling can make the system crash if certain startup steps overlap.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Race Condition
- Remediation
- Patch
- Effort
- Medium
- Patch risk
- Low
What it actually does
Race condition during hci_uart_set_proto allows a TTY write wakeup to schedule write_work before hu->priv is initialized by proto->open, causing NULL pointer dereference in hci_uart_write_work when proto->dequeue is called.
Why it matters to the business
Affected Linux systems using Bluetooth UART may experience kernel crashes or instability when Bluetooth initialization overlaps with TTY activity, leading to denial of service and operational disruption on devices relying on this driver.
How an attack unfolds
An attacker with local access triggers the race by initiating Bluetooth UART protocol registration while simultaneously causing a TTY write wakeup; this schedules deferred work that dereferences an uninitialized pointer before the protocol open completes, resulting in a kernel fault.
How to fix it
Upgrade the Linux kernel to a fixed version such as 5.10.249 or apply the commit b0a900939e7e4866d9b90e9112514b72c451e873 (or equivalent backports) that moves the HCI_UART_PROTO_INIT bit set after successful proto->open.
How to confirm the fix worked
Verify the running kernel contains the fix by checking the presence of the corrected ordering in hci_uart_set_proto or confirming the kernel version matches or exceeds the listed fixed releases; test Bluetooth UART initialization under load to ensure no crash occurs.
Typical attack path
- Obtain local user or process execution on the target system
- Load or trigger the hci_uart Bluetooth driver
- Time a TTY write wakeup event during hci_uart_set_proto and hci_uart_register_dev
- Cause hci_uart_write_work to execute before hu->priv initialization
- Trigger NULL dereference via proto->dequeue access
How to detect it
Review kernel logs for NULL pointer dereference oops in hci_uart_write_work or hci_uart_dequeue during Bluetooth initialization; inspect dmesg and syslog for TTY wakeup and workqueue scheduling events around hci_uart activity.
What your security team should do
- Prioritize kernel updates on all systems exposing Bluetooth UART interfaces
- Restrict local access and Bluetooth driver loading where not required
- Monitor for kernel oops or Bluetooth-related crashes as indicators of exposure
- Apply the patch or updated kernel packages within standard maintenance windows given low exploitation likelihood
The record
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: hci_uart: fix null-ptr-deref in hci_uart_write_work hci_uart_set_proto() sets HCI_UART_PROTO_INIT before calling hci_uart_register_dev(), which calls proto->open() to initialize hu->priv. However, if a TTY write wakeup occurs during this window, hci_uart_tx_wakeup() may schedule write_work before hu->priv is initialized, leading to a NULL pointer dereference in hci_uart_write_work() when proto->dequeue() accesses hu->priv. The race condition is: CPU0 CPU1 ---- ---- hci_uart_set_proto() set_bit(HCI_UART_PROTO_INIT) hci_uart_register_dev() tty write wakeup hci_uart_tty_wakeup() hci_uart_tx_wakeup() schedule_work(&hu->write_work) proto->open(hu) // initializes hu->priv hci_uart_write_work() hci_uart_dequeue() proto->dequeue(hu) // accesses hu->priv (NULL!) Fix this by moving set_bit(HCI_UART_PROTO_INIT) after proto->open() succeeds, ensuring hu->priv is initialized before any work can be scheduled.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Linux | Kernel | 0 | 5.10.249 |
| openSUSE:Leap 16.0 | dtb-aarch64 | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-64kb | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-azure | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-default | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-default-base | 0 | 6.12.0-160000.27.1.160000.2.8 |
| openSUSE:Leap 16.0 | kernel-docs | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-kvmsmall | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-obs-build | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-obs-qa | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-rt | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-source | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-syms | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-zfcpdump | 0 | 6.12.0-160000.27.1 |
Related vulnerabilities
- CVE-2026-23226 In the Linux kernel, the following vulnerability has been resolved: ksmbd: add chann_lock… Also affects Kernel
- CVE-2026-23225 In the Linux kernel, the following vulnerability has been resolved: sched/mmcid: Don't… Also affects Kernel
- CVE-2026-23230 In the Linux kernel, the following vulnerability has been resolved: smb: client: split… Also affects Kernel
- CVE-2026-23224 In the Linux kernel, the following vulnerability has been resolved: erofs: fix UAF issue… Also affects Kernel
- CVE-2026-23227 In the Linux kernel, the following vulnerability has been resolved: drm/exynos: vidi: use… Also affects Kernel
- CVE-2026-23223 In the Linux kernel, the following vulnerability has been resolved: xfs: fix UAF in… Also affects Kernel
- CVE-2026-23228 In the Linux kernel, the following vulnerability has been resolved: smb: server: fix leak… Also affects Kernel
- CVE-2026-23229 In the Linux kernel, the following vulnerability has been resolved: crypto: virtio - Add… Also affects Kernel