CVE-2026-19774 Overview
CVE-2026-19774 is a stack-based buffer overflow [CWE-121] in the BlueZ Bluetooth protocol stack. The flaw resides in the Advanced Audio Distribution Profile (A2DP) handling of stream endpoints. A network-adjacent attacker who can pair a malicious Bluetooth device with a target system can execute arbitrary code as root. The issue was reported through the Zero Day Initiative as ZDI-CAN-29429 and disclosed publicly as ZDI-26-589.
Critical Impact
Successful exploitation grants remote code execution in the context of the root user on Linux systems running vulnerable versions of BlueZ.
Affected Products
- BlueZ Bluetooth protocol stack (Linux)
- Distributions and appliances bundling vulnerable BlueZ A2DP components
- Embedded and IoT devices using BlueZ for Bluetooth audio
Discovery Timeline
- 2026-09-15 - CVE-2026-19774 published to the National Vulnerability Database
- 2026-09-16 - Last updated in NVD database
Technical Details for CVE-2026-19774
Vulnerability Analysis
The vulnerability exists in BlueZ's handling of A2DP stream endpoints. BlueZ parses configuration data provided by a paired Bluetooth peer when negotiating audio stream endpoints. During this exchange, attacker-controlled length fields are used without adequate bounds checking against a fixed-size stack buffer.
When the length of user-supplied data exceeds the target buffer, the copy operation overwrites adjacent stack memory. This includes saved return addresses and frame pointers. An adjacent attacker can then hijack control flow of the BlueZ daemon, which typically runs with root privileges.
Exploitation requires the attacker to first pair a malicious Bluetooth device with the target. The attack vector is Adjacent Network, requiring Bluetooth radio range, and involves user interaction to complete pairing. See the Zero Day Initiative Advisory ZDI-26-589 for additional technical context.
Root Cause
The root cause is missing validation of the length of user-supplied data prior to copying it into a fixed-length stack-based buffer. This classic [CWE-121] pattern occurs in the stream endpoint handler, where a length value from a paired peer is trusted without comparison against the destination buffer size.
Attack Vector
An attacker within Bluetooth range pairs a rogue device with the target, then transmits a crafted A2DP configuration message. The malformed length field triggers the overflow inside the BlueZ daemon and diverts execution to attacker-supplied instructions. Because BlueZ commonly runs as root, the attacker gains full system control.
No verified public proof-of-concept code is available. The upstream fix is tracked in GitHub Pull Request #2251.
Detection Methods for CVE-2026-19774
Indicators of Compromise
- Unexpected Bluetooth pairing events with unknown or spoofed device names in bluetoothd logs.
- Crashes or abnormal termination of the bluetoothd process, especially with SIGSEGV during A2DP negotiation.
- New root processes spawned by bluetoothd shortly after a pairing event.
- Outbound network connections initiated by or immediately after bluetoothd activity.
Detection Strategies
- Monitor bluetoothd process behavior for crashes, segmentation faults, and anomalous child process creation.
- Alert on Bluetooth pairing attempts on servers, kiosks, and infrastructure hosts where pairing should never occur.
- Correlate A2DP session establishment with subsequent privilege-sensitive activity such as shell execution or persistence changes.
Monitoring Recommendations
- Ingest syslog, journald, and bluetoothd telemetry into a central analytics platform for correlation.
- Track kernel and audit logs for bluetooth subsystem errors and unexpected HCI events.
- Baseline the population of hosts with Bluetooth enabled and alert on deviations, especially in data centers.
How to Mitigate CVE-2026-19774
Immediate Actions Required
- Apply the upstream BlueZ fix from GitHub Pull Request #2251 or the corresponding distribution security update as soon as it is released.
- Disable the Bluetooth service on hosts that do not require Bluetooth functionality using systemctl disable --now bluetooth.
- Remove untrusted paired devices and audit /var/lib/bluetooth/ for unknown entries.
Patch Information
The fix is proposed upstream in GitHub Pull Request #2251 in the BlueZ project and referenced by Zero Day Initiative Advisory ZDI-26-589. Administrators should track their Linux distribution's security advisories for backported BlueZ packages and apply updates on all endpoints, servers, and embedded systems that ship BlueZ.
Workarounds
- Set the Bluetooth adapter to non-discoverable and non-pairable mode where the service must remain enabled.
- Enforce an allowlist of pre-approved Bluetooth device addresses and reject pairing requests from unknown peers.
- Physically or administratively restrict Bluetooth radio range in sensitive environments, for example by removing USB Bluetooth dongles from servers.
- Apply mandatory access control profiles such as AppArmor or SELinux confinement for bluetoothd to limit post-exploitation impact.
# Disable and mask the Bluetooth service on hosts that do not need it
sudo systemctl stop bluetooth.service
sudo systemctl disable bluetooth.service
sudo systemctl mask bluetooth.service
# Verify the service is inactive
systemctl status bluetooth.service
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

