Skip to main content

Zephyr Bluetooth Host CVE-2026-81039

| EUVDEUVD-2026-109971 MEDIUM
Missing Release of Resource after Effective Lifetime (CWE-772)
2026-10-26 zephyr
4.3
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Approach within Bluetooth radio range
  2. Delivery
    Connect on undirected set using directed peer's address
  3. Exploit
    Host mis-attributes and strands directed set's reservation
  4. Execution
    Repeat to permanently consume CONFIG_BT_MAX_CONN slots
  5. Impact
    acl_conns[] pool exhausted, connectable advertising fails with -ENOMEM

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Resource cleanup on lifecycle end
Exploitation Conditions

Exploitation requires a non-default Zephyr build with CONFIG_BT_EXT_ADV_MAX_ADV_SET > 1 (so the Enhanced Connection Complete event is cached pending the Advertising Set Terminated event) and a finite CONFIG_BT_MAX_CONN pool, plus an application that concurrently runs two connectable extended advertising sets on the same identity - one undirected and one directed at a peer P. Both Kconfig options default to 1, so stock/single-advertising-set configurations are not vulnerable. Given that configuration, no bonding, pairing, or prior relationship is needed: an adjacent attacker freely chooses an initiator address mapping to P and connects on the undirected set, and the address is not authenticated at link establishment. Limiting factors are the mandatory non-default dual-advertising-set deployment and Bluetooth radio proximity (adjacent, not remote/Internet-routable); maximal impact (full pool exhaustion) additionally depends on the app restarting the directed set after each disconnect so the sequence can be repeated.

Impact

All signals point to a genuine but moderate availability-only issue, not a top-priority emergency. The vendor CVSS vector (CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L, base 4.3) scopes the impact to availability with no confidentiality or integrity effect, exploitable by an unauthenticated adjacent attacker (Bluetooth radio range) at low complexity. There is no CISA KEV listing, no EPSS score provided in the input, and no PoC or exploit reference - only patch commits and the GHSA advisory - so exploitation status is 'no public exploit identified at time of analysis.' The vuln.today decision label is 'this_month' (not act_now/emergency), consistent with a real-but-bounded resource-leak DoS. The most important limiting factor, confirmed by the advisory and Kconfig evidence, is that the flaw only manifests in a non-default configuration: CONFIG_BT_EXT_ADV_MAX_ADV_SET and CONFIG_BT_MAX_CONN both default to 1, and single-advertising-set builds are unaffected. No signals conflict; the main gap is the absence of EPSS data, so widespread-versus-targeted exploitation likelihood cannot be quantified from the input. Net: prioritize for affected multi-advertising-set deployments within the vendor's suggested timeframe, but it is not a drop-everything issue.

Exploit ScenarioDerived

A device runs two connectable extended advertising sets on one identity - one undirected, one directed at a bonded central P - the common 'reconnect to a bonded peer while still accepting new centrals' pattern. An attacker within Bluetooth range, choosing an initiator address that maps to P, connects on the undirected set, causing the host to consume and then strand the directed set's connection reservation; repeating this until the acl_conns[] pool is exhausted denies all further connectable advertising. No public exploit code is identified at time of analysis, and the adjacent (AV:A), low-complexity (AC:L) vector means the attacker only needs radio proximity and no authentication.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 26, 2026

Zephyr's Bluetooth host (subsys/bluetooth/host, versions 2.3.0 through 4.4.2) can be driven to permanently strand connection reservations: when CONFIG_BT_EXT_ADV_MAX_ADV_SET > 1 and an application runs a directed and an undirected connectable extended advertising set on the same identity, an adjacent, unauthenticated attacker who freely chooses an initiator address mapping to the directed set's target causes the wrong bt_conn to be consumed, leaving the undirected set's reservation unreleasable. Each occurrence burns one CONFIG_BT_MAX_CONN slot until bt_disable() or reboot, and repeated attempts against applications that restart the directed set after each disconnect exhaust the pool so connectable advertising fails with -ENOMEM; the directed set also keeps advertising without a reservation, so genuine connections on it are dropped. Impact is availability only (no memory corruption or information disclosure), the vulnerable configuration is non-default on both Kconfig options, and no public exploit code was identified at time of analysis and the issue is not in CISA KEV.

RemediationAI

Apply the upstream fix commit b6a5e6e8aa9072a10a52420095af2d99f04d71fc (main, PR #117040) or the merged backports for v4.4-branch (PR #117510), v4.3-branch (PR #117511) and v3.7-branch (PR #117537); 4.5.0 is the projected fixed release and should be confirmed against the actual shipped tag before relying on it. Where patching must wait, keep CONFIG_BT_EXT_ADV_MAX_ADV_SET at its default of 1 (or otherwise avoid concurrently running a directed and an undirected connectable set on the same identity), which removes the caching precondition entirely at the cost of losing multi-set extended advertising and the directed-reconnect-while-accepting-new-centrals pattern; alternatively raise CONFIG_BT_MAX_CONN to buy headroom, but this only delays exhaustion and increases static RAM for the connection pool. Rebooting or calling bt_disable() is the only way to reclaim already-stranded reservations, so monitor for repeated -ENOMEM on connectable advertising as an indicator of attack. Advisory details and patch status are at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-5jw9-rp59-ch2q.

Affected VersionsENISA

Zephyr 2.3.0 <4.5.0

Affected Packages

euvd zephyr fix: 4.5.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The flaw is CWE-772 (Missing Release of Resource after Effective Lifetime) in Zephyr's BLE extended-advertising implementation. le_adv_start_add_conn() in subsys/bluetooth/host/adv.c pre-allocates a bt_conn object from the fixed acl_conns[] pool for every connectable advertising set (BT_CONN_ADV_CONNECTABLE for undirected, BT_CONN_ADV_DIR_CONNECTABLE with dst = adv->target_addr for directed). Because the LE Enhanced Connection Complete event is cached when CONFIG_BT_EXT_ADV_MAX_ADV_SET > 1 and only dispatched after the LE Advertising Set Terminated event identifies the handle, find_pending_connect() in subsys/bluetooth/host/hci_core.c historically matched reservations on identity plus peer address with a directed-then-undirected fallback and had no advertising-set context; bt_conn_is_peer_addr_le() matching on conn->le.dst plus bt_lookup_id_addr() resolving an unauthenticated, attacker-chosen initiator address onto the bonded identity is what allows a connection arriving on the undirected set to consume the directed set's reservation. The only release path, le_adv_stop_free_conn(), is reached solely for sets still marked BT_ADV_ENABLED; since bt_hci_le_adv_set_terminated() clears that flag before dispatching the cached event, bt_le_ext_adv_stop() returns early and the stranded reservation is unrecoverable. The fix threads the terminating struct bt_le_ext_adv down into bt_hci_le_enh_conn_complete() and find_pending_connect() so the lookup is keyed on the correct set (and its directed/undirected nature) instead of falling back across sets, while retaining the legacy lookup only when no advertising handle exists (legacy advertising or no extended-advertising support).

Know when Bluetooth gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (zephyr) PRIMARY 4.3 MEDIUM
AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
vuln.today AI 4.3 MEDIUM

Adjacent Bluetooth attacker, no authentication (AV:A/PR:N); low complexity once the non-default config exists; availability-only partial degradation of the connection pool (A:L), no C/I impact.

3.1 AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
4.0 AV:A/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (zephyr).

CVSS VectorVendor: zephyr

Attack Vector
Adjacent
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
Low

DescriptionCVE.org

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.

Threat Intelligence Overview

EPSS Score
0.2%
Top 89% exploitable
Prevalence
Medium
widely-used embedded/IoT RTOS, but vulnerable multi-advertising-set config is non-default
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Controlled
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

22
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +22
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0
CVE-2025-65824 HIGH POC
8.8 Dec 10

Unauthenticated Bluetooth Low Energy OTA firmware upgrade in the Meatmeet Pro WiFi & Bluetooth Meat Thermometer firmware

CVE-2025-32879 HIGH POC
8.8 Jun 20

CVE-2025-32879 is a security vulnerability (CVSS 8.8) that allows an attacker. Risk factors: public PoC available.

CVE-2025-10457 HIGH POC
8.1 Sep 19

Zephyr's Bluetooth Low Energy connection-response handler fails to verify that a connection request was actually initiat

CVE-2025-20672 CRITICAL
9.8 Jun 02

Heap OOB write in Android Bluetooth driver via incorrect bounds check.

CVE-2026-55330 CRITICAL
9.8 Oct 06

A use-after-free in the Android Bluetooth stack (bluetooth_ccc.cc, function BluetoothCccHandlerCallbackImpl) lets an att

CVE-2020-10135 MEDIUM POC
5.4 May 19

Legacy pairing and secure-connections pairing authentication in Bluetooth BR/EDR Core Specification v5.2 and earlier may

CVE-2026-19570 HIGH
8.8 Oct 09

Memory corruption in the Zephyr RTOS LE Audio Broadcast Sink (subsys/bluetooth/audio/bap_broadcast_sink.c) lets an attac

CVE-2026-90255 HIGH
8.8 Sep 17

A memory leak combined with a use-after-free in the Linux kernel's Bluetooth HCI connection-setup path can crash the ker

CVE-2026-90256 HIGH
8.8 Sep 17

A race condition in the Linux kernel's Bluetooth L2CAP subsystem allows a use-after-free of the hci_conn::l2cap_data poi

CVE-2026-8374 HIGH
8.5 Oct 09

Bluetooth authentication bypass in SwitchBot Door Lock Series allows an attacker within BLE range to manipulate the lock

CVE-2026-89583 HIGH
8.1 Sep 11

Out-of-bounds read in the Linux kernel Bluetooth subsystem's eir_get_service_data() leaks kernel heap memory into usersp

CVE-2026-90092 HIGH
8.0 Sep 17

Use-after-free in the Linux kernel Bluetooth L2CAP stack lets a Bluetooth-adjacent attacker corrupt kernel memory by rac

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy