CVE-2026-81039
Received Received - Intake

Bluetooth Connection Reservation Exhaustion in Zephyr RTOS

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

Publication date: 2026-10-26

Last updated on: 2026-10-26

Assigner: Zephyr Project

Description

The Bluetooth host pre-allocates a bt_conn object (a "reservation") from the fixed acl_conns[] pool for every connectable advertising set it starts, in le_adv_start_add_conn() in subsys/bluetooth/host/adv.c. When an incoming peripheral connection completes, find_pending_connect() in subsys/bluetooth/host/hci_core.c looked that reservation up using only the identity and the peer address, with a directed-then-undirected fallback, and had no knowledge of which advertising set actually terminated. With CONFIG_BT_EXT_ADV_MAX_ADV_SET > 1, where the LE Enhanced Connection Complete event is cached until the LE Advertising Set Terminated event identifies the set, this lookup can return the reservation belonging to a different, still-running advertising set. The defect is reachable over the air by any adjacent device. If an application runs two connectable extended advertising sets on the same identity β€” one undirected and one directed at a peer P (the common "directed reconnect to a bonded central while still accepting new centrals" pattern) β€” a remote initiator whose address maps to P connecting on the undirected set causes the directed set's reservation to be consumed instead. The initiator address is chosen freely by the remote device and is not authenticated at link establishment, so no bonding, pairing or prior relationship is required to trigger the mis-attribution. The undirected set's own reservation is then stranded: its BT_ADV_ENABLED flag has already been cleared, and le_adv_stop_free_conn() β€” the only path that returns a reservation to the pool β€” is reached only for sets that are still enabled, so bt_le_ext_adv_stop() returns early and the object is never released. Each occurrence permanently consumes one CONFIG_BT_MAX_CONN slot until bt_disable() or reboot. In application patterns that restart the directed advertising set after each disconnect, an attacker can repeat the sequence until the pool is exhausted, after which connectable advertising fails with -ENOMEM and the device can no longer accept connections. As a side effect the directed set keeps advertising without a reservation, so a genuine connection on it is dropped by bt_hci_disconnect(). The impact is availability only; no memory corruption or information disclosure results, and configurations with a single advertising set are unaffected.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-10-26
Last Modified
2026-10-26
Generated
2026-10-26
AI Q&A
2026-10-26
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

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

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-772 The product does not release a resource after its effective lifetime has ended, i.e., after the resource is no longer needed.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

CVE-2026-81039 is a Bluetooth Host connection reservation leak in Zephyr RTOS. When multiple connectable advertising sets share the same identity, a flawed lookup mechanism in find_pending_connect() misattributes incoming peripheral connections to the wrong advertising set. This causes a reservation leak in the bt_conn object pool, permanently consuming a CONFIG_BT_MAX_CONN slot until reboot or bt_disable(). The vulnerability is triggered over the air by any adjacent device without requiring authentication or prior relationship.

Detection Guidance

Detecting this vulnerability requires checking for Bluetooth connection pool exhaustion in Zephyr RTOS devices. Monitor for -ENOMEM errors during connectable advertising and failed connection attempts. Check bt_conn object pool usage via system logs or debugging tools. Look for repeated advertising set terminations without corresponding reservations being freed.

Impact Analysis

An attacker can repeatedly exploit this to exhaust the connection pool, causing connectable advertising to fail with -ENOMEM and preventing the device from accepting new connections. Legitimate connections may be dropped if the directed set continues advertising without a reservation. The impact is limited to availability; no memory corruption or information disclosure occurs.

Mitigation Strategies

Upgrade Zephyr RTOS to version 4.5.0 or later which contains the fix. If upgrading is not possible, disable extended advertising (set CONFIG_BT_EXT_ADV_MAX_ADV_SET=1) or avoid running multiple connectable advertising sets on the same identity. Restrict physical access to devices using Bluetooth until patched.

Chat Assistant

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

EPSS Chart