CVE-2026-81039 in Zephyrinfo

Summary

by MITRE • 10/26/2026

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.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Analysis

by VulDB Data Team • 10/27/2026

The vulnerability resides in the Bluetooth host stack's handling of extended advertising sets within the Linux kernel implementation, specifically affecting systems configured to support multiple concurrent connectable advertising instances. The core technical flaw is an incorrect resource reservation lookup mechanism during connection establishment. When a device initiates LE Extended Advertising with connectability enabled, the system pre-allocates a bt_conn object from a fixed pool of acl_conns to reserve capacity for the incoming link. This allocation occurs in le_adv_start_add_conn before any actual connection attempt takes place. The critical defect emerges when an incoming peripheral connection completes and the host attempts to match this new connection event to its previously allocated reservation. The lookup function, find_pending_connect, relies exclusively on the identity address of the advertiser and the peer address of the connecting device to identify the correct bt_conn object. It employs a fallback logic that prioritizes directed connections over undirected ones but lacks any mechanism to correlate the incoming connection with the specific advertising set instance that initiated the reservation. This design oversight becomes critical when CONFIG_BT_EXT_ADV_MAX_ADV_SET is greater than one, allowing multiple advertising sets to run simultaneously on the same identity address.

The operational impact of this flaw manifests as a denial-of-service condition through resource exhaustion rather than memory corruption or data leakage. In scenarios where an application maintains two connectable extended advertising sets on the same identity—one undirected for general discovery and directed toward a specific bonded peer—the system becomes vulnerable to misattribution. A remote attacker can exploit this by connecting via the undirected set while spoofing their Bluetooth address to match that of the target peer P associated with the directed set. Because link establishment does not authenticate the initiator's identity against the advertising parameters, the host incorrectly associates the incoming connection from the unknown device with the reservation intended for the legitimate bonded peer. Consequently, the reserved bt_conn object belonging to the undirected set is consumed by this unauthorized connection attempt, while the actual reservation for the directed set remains allocated but orphaned because the system believes it has already handled a connection for that identity-peer pair.

This misattribution leads to a permanent loss of connectivity resources within the local Bluetooth stack. The bt_conn object reserved for the undirected advertising set is marked as used and its BT_ADV_ENABLED flag is cleared, yet the le_adv_stop_free_conn function, which is responsible for returning such objects to the available pool, only executes if the advertising set remains enabled. Since the system incorrectly believes the connection was handled by a different logical path or that the directed set has already accepted a peer, it fails to properly clean up the undirected set's reservation. This results in a stranded bt_conn object that is never returned to the acl_conns pool. Each such exploitation permanently consumes one slot from CONFIG_BT_MAX_CONN until the system is rebooted or Bluetooth is disabled via bt_disable(). In application patterns where services restart advertising after disconnections, an attacker can repeatedly trigger this sequence to exhaust all available connection slots. Once the pool is depleted, subsequent attempts by legitimate devices to connect will fail with -ENOMEM errors, effectively rendering the device unable to accept any new connections and causing a complete denial of service for Bluetooth connectivity functions that rely on these reserved resources.

Furthermore, the vulnerability creates secondary instability in ongoing communications. The directed advertising set continues to broadcast without an associated active reservation because its connection was never properly established or tracked by the host stack's state machine. When a genuine peer attempts to connect using this directed advertisement, the lack of a valid bt_conn object causes the link layer to drop the connection via bt_hci_disconnect(). This disrupts legitimate business logic and user experience for bonded devices that expect stable reconnection capabilities. The attack is entirely remote and requires no prior authentication or bonding with the target device, making it accessible to any adjacent Bluetooth-capable attacker within radio range. Mitigation strategies must focus on patching the find_pending_connect logic to include advertising set identifiers in its lookup criteria, ensuring strict correlation between incoming connection events and their originating advertisements. Additionally, implementing stricter validation of advertising state transitions can prevent orphaned reservations from persisting after unexpected disconnections or misattributed link establishments.

Responsible

Zephyr

Reservation

08/26/2026

Disclosure

10/26/2026

Moderation

accepted

EPSS

0.00000

KEV

no

Activities

very low

Sources

Might our Artificial Intelligence support you?

Check our Alexa App!