Cloudanix VulnDB

CVE-2026-23146

Medium · 5.5

CVSS

5.5

EPSS

0.1%

Published

Feb 14, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

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

  1. Obtain local user or process execution on the target system
  2. Load or trigger the hci_uart Bluetooth driver
  3. Time a TTY write wakeup event during hci_uart_set_proto and hci_uart_register_dev
  4. Cause hci_uart_write_work to execute before hu->priv initialization
  5. 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