IT SBIT Services
Schneeberger
DEEN
CVE tracker

Zephyr: Out-of-bounds write in USB Bluetooth HCI transport class

CVE-2026-79982High 8.8

← All vulnerabilities

Summary

The Bluetooth HCI USB transport class of the Zephyr USB device stack copies controller-to-host HCI packets into USB buffers that are smaller than the packets can be. An attacker within Bluetooth range can trigger the overflow with crafted ACL fragments from a connected peer or with extended advertising data, and the overflow also occurs during normal host initialization on full-speed-only builds. With assertions disabled, the write silently corrupts adjacent memory, which can lead to arbitrary code execution on targets without memory protection; with assertions enabled, the device panics, causing denial of service.

Affected

  • Zephyr versions 3.3.0 up to and including 4.4.2
  • Affected code: subsys/usb/device_next/class/bt_hci.c (Bluetooth HCI over USB)
  • Practically most relevant for full-speed-only builds from 4.2.0 onwards
  • Default configuration is unaffected according to the CNA record

Fixed in

  • Fix commit 0419defd2391652edc27689d206fcd9c48439d4a adds a separate TX pool sized for complete HCI packets
  • Projected fixed version: 4.5.0 (not yet released at time of writing; to be confirmed)
  • Backport PRs exist for v4.4 and v3.7 branches; merge status and first patched release numbers are unknown

Workaround

  • No vendor workaround documented.
  • Do not rely on CONFIG_ASSERT=n or enabling assertions as a fix.
  • Where USB HCI is not required, remove the USB Bluetooth HCI class from the build.

Exploitation

  • No evidence of exploitation in the wild found.
  • No public proof of concept found.
  • Attack requires adjacent Bluetooth range, no authentication and no user interaction (CVSS 8.8).

Our recommendation

  • Check whether any device in your estate runs Zephyr firmware 3.3.0 to 4.4.2 with the USB Bluetooth HCI class.
  • If affected, plan a firmware update to a patched release or backport once available, and track the Zephyr releases page.
  • Remove the USB HCI class from firmware where it is not required.
  • Ask device vendors for their Zephyr version and patch timeline.

Public exploits

PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.

Research sources

Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 31 Oct 2026, 10:40.

Original description (NVD)

The Bluetooth HCI USB transport class of the new USB device stack, subsys/usb/device_next/class/bt_hci.c, copies every controller-to-host HCI packet into a USB transfer buffer before enqueuing it on an endpoint. bt_hci_tx_sync_in() allocated that buffer from bt_hci_ep_pool, a fixed pool whose slots are only USBD_MAX_BULK_MPS bytes (64 on full-speed-only builds), and then performed net_buf_add_mem(buf, bt_buf->data, bt_buf->len) with no length check. HCI event and ACL buffers are sized by CONFIG_BT_BUF_EVT_RX_SIZE and CONFIG_BT_BUF_ACL_RX_SIZE and can be far larger, so the copy runs past the end of the 64-byte slot into the adjacent slots and into whatever follows the statically allocated pool. The device runs the local Bluetooth controller in raw HCI mode (CONFIG_BT_HCI_RAW), so the oversized packets originate over the air. With the HCI buffer sizes recommended for full-featured controllers, an unauthenticated attacker within Bluetooth range can supply the overflowing bytes: a connected peer that negotiates Data Length Extension can send ACL fragments up to CONFIG_BT_CTLR_DATA_LENGTH_MAX bytes, and an attacker that merely broadcasts extended advertising data reaches the same path through LE Extended Advertising Report events, which the controller fragments only to CONFIG_BT_BUF_EVT_RX_SIZE. In the stock configuration the overflow is already reached without any radio traffic: the mandatory Read Supported Commands command-complete event is 70 bytes and overruns the 64-byte slot by six bytes on every host initialization. Because net_buf_add_mem() validates tailroom only through an assertion unless CONFIG_NET_BUF_HARDENING is enabled, builds with CONFIG_ASSERT=n — the usual production setting — silently corrupt memory adjacent to the USB buffer pool with attacker-chosen contents, which on a target without memory protection between subsystems can lead to arbitrary code execution. Builds with assertions enabled fail the assertion instead and panic, giving a remotely triggerable denial of service. The fix introduces a separate bt_hci_tx_pool sized to MAX(BT_BUF_ACL_RX_SIZE, BT_BUF_EVT_RX_SIZE) for the controller-to-host direction while leaving the host-to-device pool at the endpoint packet size, which is already bounds-checked during reassembly.

NVD references (2)

Sources

The tracker combines official, freely usable data sources – updated continuously:

This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.

Affected? We can help.

We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.