CVE-2026-19939
Awaiting Analysis Awaiting Analysis - Queue

Use-After-Free in Zephyr RTOS Bluetooth A2DP Stack

Vulnerability report for CVE-2026-19939, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-10-13

Last updated on: 2026-10-14

Assigner: Zephyr Project

Description

The AVDTP signalling layer arms a 6-second command timeout (AVDTP_TIMEOUT) in avdtp_send_cmd() whenever the local device issues an AVDTP request. Every response handler in subsys/bluetooth/host/classic/avdtp.c cancels session->timeout_work before clearing the pending request, but bt_avdtp_l2cap_disconnected() only cleared session->req and left the delayable work armed. The struct bt_avdtp session is the first member of struct bt_a2dp, whose instances live in a static per-connection array, and a2dp_get_connection() in subsys/bluetooth/host/classic/a2dp.c wipes a slot with memset() as soon as session->br_chan.chan.conn is NULL β€” which the L2CAP layer arranges immediately after the disconnect callback returns. A remote Bluetooth BR/EDR peer triggers the condition by opening the AVDTP signalling channel, letting the local application issue an AVDTP procedure (the standard A2DP flow issues bt_a2dp_discover() from the connected callback), then tearing the signalling channel down without responding and re-opening it within the remaining timeout window. The reconnect reaches a2dp_accept() β†’ a2dp_get_connection(), which zeroes the whole struct bt_a2dp while the work item's struct _timeout is still linked into the kernel's global timeout list. Both the disconnect and the reconnect instants are chosen by the attacker, so no race has to be won; an encrypted BR/EDR link is required, and CONFIG_BT_A2DP (experimental) must be enabled. With the default CONFIG_TIMEOUT_BACKEND_DLIST backend the kernel decides a timeout is inactive by testing whether its list node is linked, so after the memset() the kernel treats a node that is still on the global timeout list as free: the announce path pops a node whose links and handler pointer are NULL, and the next bt_work_reschedule() on the recycled session re-inserts the same node into a list that already contains it. The consequence is corruption of the single kernel data structure every timer, timeslice and sleep depends on β€” writes through zeroed or stale list pointers and a NULL handler dispatch β€” producing a system-wide crash or hang rather than a fault confined to the A2DP session. The fix cancels session->timeout_work at the top of bt_avdtp_l2cap_disconnected() and moves k_work_init_delayable() from avdtp_send_cmd() to the session-establishment paths bt_avdtp_connect() and bt_avdtp_l2cap_accept(), so the work item is always initialized before a disconnect callback can run.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-10-13
Last Modified
2026-10-14
Generated
2026-10-19
AI Q&A
2026-10-13
EPSS Evaluated
2026-10-18
NVD
EUVD

Affected Vendors & Products

Showing 1 associated CPE
Vendor Product Version / Range
zephyrproject zephyr 3.7.0

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-825 The product dereferences a pointer that contains a location for memory that was previously valid, but is no longer valid.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability is in the Zephyr RTOS Bluetooth Classic AVDTP implementation. It involves a 6-second command timeout that remains armed after a Bluetooth connection disconnects. When the session is reused due to a reconnect, the timeout work item gets zeroed but remains linked in the kernel's global timeout list. This causes kernel timeout bookkeeping corruption, leading to system-wide crashes or hangs.

Detection Guidance

This vulnerability is specific to Zephyr RTOS Bluetooth Classic AVDTP implementation and requires CONFIG_BT_A2DP enabled. Detection involves checking for kernel crashes or hangs during Bluetooth A2DP operations. Monitor system logs for timeout-related errors or kernel panics. No direct network commands detect this, but enabling CONFIG_BT_A2DP and observing Bluetooth Classic A2DP behavior may reveal issues.

Impact Analysis

An attacker can exploit this to crash or hang the entire system by triggering a Bluetooth reconnect within the timeout window. This requires an encrypted BR/EDR link and the experimental CONFIG_BT_A2DP feature enabled. The impact is a denial of service affecting all system operations dependent on timers and scheduling.

Compliance Impact

This vulnerability primarily impacts system availability by causing kernel crashes or hangs, which could lead to denial of service conditions. For GDPR, this may affect the availability of data processing systems, potentially violating Article 32 requirements for resilience. HIPAA's Security Rule emphasizes integrity and availability of ePHI; while this flaw does not directly expose data, system instability could hinder access to critical health information systems.

Mitigation Strategies
  • Disable CONFIG_BT_A2DP if not required, as the vulnerability only affects systems with this experimental feature enabled.
  • Update Zephyr RTOS to version 4.5.0 or later to apply the patch that cancels timeout work on disconnect and initializes work items properly.
  • Monitor kernel logs for timeout-related errors or system hangs during Bluetooth A2DP operations as a sign of potential exploitation.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-19939. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart