CVE-2026-19935
Last modified
CVE-2026-19935 is a high-severity vulnerability rated 7.5/10 on the CVSS scale. The Bluetooth LE host queues received L2CAP connection-oriented channel (CoC) data for deferred processing through a struct k_work embedded in the channel object (le_chan->rx_work, handler l2cap_rx_process()) whenever the channel uses a dynamic PSM (0x0080-0x00FF). Channel teardown in l2cap_chan_destroy() in subsys/bluetooth/host/l2cap.c cancels the retransmission-timeout work and drains the RX FIFO, but never cancels rx_work. EPSS estimates a 0.18% chance of exploitation in the next 30 days.
Description
The Bluetooth LE host queues received L2CAP connection-oriented channel (CoC) data for deferred processing through a struct k_work embedded in the channel object (le_chan->rx_work, handler l2cap_rx_process()) whenever the channel uses a dynamic PSM (0x0080-0x00FF). Channel teardown in l2cap_chan_destroy() in subsys/bluetooth/host/l2cap.c cancels the retransmission-timeout work and drains the RX FIFO, but never cancels rx_work. Because that work item was submitted to the system workqueue while HCI receive processing runs on the dedicated Bluetooth RX workqueue (CONFIG_BT_RECV_WORKQ_BT, the default), a queued rx_work item can outlive the channel it points into. A remote, unauthenticated peer with an established CoC channel triggers this by sending a data K-frame immediately followed by an L2CAP Disconnect Request. The K-frame submits rx_work to the system workqueue; because both workqueue threads are cooperative and the Bluetooth RX workqueue runs at the higher priority (K_PRIO_COOP(CONFIG_BT_RX_PRIO) versus CONFIG_SYSTEM_WORKQUEUE_PRIORITY), the pending item cannot run before the following Disconnect Request is processed in le_disconn_req() -> l2cap_chan_del() -> l2cap_chan_destroy(). The stack then invokes the released() callback, which the API documents as meaning the stack has dropped all references and the application may free the channel memory. The application therefore frees or re-accepts into an object that the system workqueue still holds in its pending list. If the memory is freed and reallocated, the workqueue later dereferences a list node and a handler function pointer read from reused memory; if the object is re-used for a later connection, l2cap_chan_add() calls k_work_init() on a still-enqueued work item, corrupting the workqueue's pending list so that unrelated work items are dropped or the queue spins on a looped list. A related variant lets l2cap_rx_process() run concurrently with teardown, racing the net_buf unref of le_chan->_sdu and the clearing of chan->conn. The fix routes the channel RX work to the Bluetooth workqueue - the same context in which every teardown path runs - and adds an explicit k_work_cancel() of le_chan->rx_work in l2cap_chan_destroy(), so no reference to the channel survives the released() callback. Configurations without CONFIG_BT_L2CAP_DYNAMIC_CHANNEL, or that only use SIG-assigned PSMs (EATT 0x0027, OTS 0x0025) which take the inline receive path, are not affected.
Metrics
Weakness Enumeration
Affected Software
Source: CNA advisory (CVE.org). NVD analysis pending.
| Vendor | Product | Versions |
|---|---|---|
| zephyrproject | zephyr | >= 2.0.0, <= 4.4.2 |
References
Timeline
- Published
- Last Modified
- Status
- Awaiting Analysis
Frequently Asked Questions
What is CVE-2026-19935?
How severe is CVE-2026-19935?
How do I fix CVE-2026-19935?
How Strix Helps
- How Strix found a critical auth bypass in etcdStrix autonomously discovered a critical authentication bypass in etcd, later designated CVE-2026-33413.
- Autonomous PentestingAI agents that find and validate exploitable vulnerabilities like this one across your applications.
- PR ReviewsPentest every pull request so vulnerable code is caught before it ships to production.
- AI Penetration TestingHow AI-driven penetration testing continuously covers your attack surface.
Related CVEs from 2026
- CVE-2026-1993The ExactMetrics – Google Analytics Dashboard for WordPress …8.8
- CVE-2026-19930A security flaw has been discovered in Dolibarr up to 23.0.3…6.3
- CVE-2026-19931A flaw in libcurl makes it wrongly reuse an HTTP connection …9.8
- CVE-2026-19932A security flaw has been discovered in DefaultFuction Notice…6.3
- CVE-2026-19933A weakness has been identified in DefaultFuction Customer-Re…6.3
- CVE-2026-19934A vulnerability has been found in itsourcecode Hospital Mana…6.3
- CVE-2026-19936The Bluetooth Mesh Access-layer delayable message queue in s…4.8
- CVE-2026-19937The Bluetooth Mesh Access layer delayable-message machinery …5.7
- CVE-2026-19938The Bluetooth host's ATT transmit path releases a buffer it …5.9
- CVE-2026-19939The AVDTP signalling layer arms a 6-second command timeout (…6.3
- CVE-2026-1994The s2Member plugin for WordPress is vulnerable to privilege…9.8
- CVE-2026-19940The Bluetooth Classic Hands-Free Profile Audio Gateway imple…6.5
Are you affected by CVE-2026-19935?
Run a free Strix scan to check your systems for this vulnerability.
Scan your code nowSource: NVD / NIST
