Skip to main content

Zephyr RTOS EUVDEUVD-2026-51554

| CVE-2026-10685 HIGH
Use After Free (CWE-416)
2026-07-31 zephyr
7.6
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

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

  1. Recon
    Enter Bluetooth radio range of target
  2. Delivery
    Connect as GATT server peer
  3. Exploit
    Accept GATT client subscription request (CCC write)
  4. Install
    Reply with ATT Error Response
  5. C2
    Trigger notify(NULL) before subscribe() in gatt_write_ccc_rsp()
  6. Execute
    Dereference freed params->subscribe pointer
  7. Impact
    Crash device or redirect execution

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Memory lifecycle management
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The target must be a Zephyr RTOS device operating in the GATT client role - specifically, it must have called bt_gatt_subscribe() to register for notifications from a remote GATT server. The vulnerability is triggered only when the remote GATT server (controlled by the attacker) replies to the CCC-write request with an ATT Error Response; a compliant server returning success does not trigger the path. Memory corruption additionally requires that the application's notify termination callback (called with NULL data) frees or recycles the bt_gatt_subscribe_params struct, which is the API-documented pattern but not universal. Applications that never free or reuse the struct in the notify callback will still receive the out-of-order subscribe callback but will not experience a use-after-free. Exploitation is bounded to Bluetooth adjacency - the attacker must be within radio range and must successfully complete Bluetooth pairing or connection to the victim device (depending on the device's pairing requirements). Authentication is not required from the attacker's perspective since they operate as the peer server role.

Impact

The CVSS 7.6 with AV:A accurately captures the most critical real-world constraint: the attacker must be within Bluetooth radio range of the target. This is a meaningful physical-proximity barrier that substantially reduces the exposed attack surface compared to network-reachable flaws of similar score. AC:L reflects that triggering the condition requires only a single ATT Error Response - no complex exploit chain. PR:N is correct from the attacker's vantage as the peer GATT server. A:H dominates the score and reflects the most reliable impact: a crash resulting from a bad function-pointer dereference. C:L and I:L acknowledge that memory corruption opens a theoretical path to controlled code execution, but this is highly dependent on heap layout and application behavior at the time of exploitation. No EPSS data was provided and the CVE is not in CISA KEV, indicating no confirmed or widespread exploitation. The requirement that the target application also frees or recycles bt_gatt_subscribe_params inside the notify termination handler is a second prerequisite that further limits the exploitable population to applications following the documented lifecycle pattern.

Exploit ScenarioDerived

An attacker within Bluetooth radio range of a Zephyr GATT client device advertises as a GATT server and accepts the client connection. When the Zephyr device calls bt_gatt_subscribe() and sends a CCC write to register for notifications, the attacker replies with an ATT Error Response containing an arbitrary error code. This drives the vulnerable gatt_write_ccc_rsp() code path: notify(NULL) fires first, the application frees bt_gatt_subscribe_params, and then the handler calls params->subscribe() through the now-freed function pointer - crashing the device or, with pre-conditioned heap state, redirecting execution. No public proof-of-concept code has been identified at time of analysis.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.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 – Jul 31, 2026

Use-after-free in the Zephyr RTOS Bluetooth GATT client stack allows an adjacent Bluetooth peer acting as a GATT server to crash a Zephyr device or potentially redirect its execution by replying to a CCC-write with an ATT Error Response. The defect is a callback-ordering bug in gatt_write_ccc_rsp(): the API-documented termination signal notify(NULL) was emitted before subscribe(), so applications that free or recycle bt_gatt_subscribe_params in their termination handler dereference a dangling function pointer. No public exploit code or CISA KEV entry exists; a vendor patch commit is available but a specific tagged release version has not been confirmed.

RemediationAI

Apply the upstream fix from commit c7292f20223637232b6f962141725611a38f6a52 (https://github.com/zephyrproject-rtos/zephyr/commit/c7292f20223637232b6f962141725611a38f6a52), which reorders both the ATT error path and the unsubscribe path in gatt_write_ccc_rsp() so that params->subscribe() is always invoked before params->notify(NULL). Monitor the GitHub security advisory at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-29xh-jm2m-4qvx for an official tagged release containing this fix, as a specific patched version number was not confirmed from available data. As a compensating control where patching is not immediately feasible, application developers should defer freeing or recycling bt_gatt_subscribe_params to a workqueue or system thread context rather than directly inside the notify termination callback; this breaks the use-after-free chain without requiring a kernel patch but adds scheduling latency to subscription teardown. Restricting which Bluetooth peers the device will connect to via allowlisting (if supported by the platform) reduces exposure by preventing arbitrary adjacent attackers from acting as GATT server peers.

Affected VersionsENISA

Zephyr 2.4.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 vulnerability resides in subsys/bluetooth/host/gatt.c within the Zephyr RTOS Bluetooth Host stack (CPE: cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:*). GATT (Generic Attribute Profile) runs over ATT (Attribute Protocol) on BLE and uses Client Characteristic Configuration (CCC) descriptors to establish notification/indication subscriptions. The bt_gatt_subscribe_params struct carries two application-supplied callbacks - notify() and subscribe() - and its lifetime is governed by API contract: a notify(conn, params, NULL, 0) call is the documented signal that the subscription has ended and the struct may be freed or reused. The original code in the error branch (att_error_rsp → att_handle_rsp → gatt_write_ccc_rsp) invoked notify(NULL) first, then subscribe(); any application conforming to the documented contract could free the struct inside the notify handler, causing the subsequent subscribe() call through the freed params->subscribe function pointer to constitute a CWE-416 use-after-free. The fix (commit c7292f20223637232b6f962141725611a38f6a52) reorders both the error path and the unsubscribe path so subscribe() is always called before notify(NULL).

Know when Zephyr 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 7.6 HIGH
AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:H
vuln.today AI 7.6 HIGH

Bluetooth adjacency bounds reach to radio range; attacker needs no credentials as peer GATT server; A:H reflects reliable crash from freed function-pointer dereference.

3.1 AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:H
4.0 AV:A/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:H/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
Low
Integrity
Low
Availability
High

DescriptionCVE.org

The Zephyr Bluetooth GATT client CCC-write response handler gatt_write_ccc_rsp() in subsys/bluetooth/host/gatt.c invoked the application's params->subscribe() callback after it had already called params->notify(conn, params, NULL, 0).

Per the public GATT API, a notify callback with NULL data is the documented signal that the subscription has terminated and the bt_gatt_subscribe_params struct may be freed or reused by the application; calling subscribe() on the struct afterwards is a use-after-free, including an indirect call through the freed params->subscribe function pointer.

The error branch is remotely (adjacent) reachable: a Zephyr device acting as a GATT client that calls bt_gatt_subscribe() can be driven into this ordering when a connected GATT server peer answers the CCC write with an ATT Error Response (the peer-supplied error code flows through att_error_rsp -> att_handle_rsp into gatt_write_ccc_rsp).

For applications that free or recycle subscription parameters in their notification-termination handler, this results in memory corruption, a crash (denial of service), or potentially attacker-influenced control flow. The fix reorders the handler so the subscribe() callback runs before the terminating notify(NULL) in both the error and unsubscribe paths.

Executive ViewAI

Why It Matters

Zephyr RTOS devices with active Bluetooth GATT connections face a use-after-free vulnerability (CVE-2026-10685) that allows adjacent Bluetooth peers to crash the device or redirect its execution. Affected organizations running Zephyr-based IoT, industrial, or medical devices should prioritize assessment of their Bluetooth deployments, as this vulnerability impacts availability and system integrity.

Business Impact: High
Compensating Controls

Enforce strict Bluetooth access controls by enabling device pairing only with trusted, pre-approved GATT servers, disabling Bluetooth on systems without business need, and monitoring for unexpected connection attempts or device crashes. Patch available per vendor advisory.

Threat Intelligence Overview

EPSS Score
0.2%
Top 92% exploitable
Prevalence
Medium
widely used IoT and embedded RTOS, not enterprise-ubiquitous
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

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 HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
None
System Exposure· derived
Controlled
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

Use-after-free vulnerabilities occur when a program continues to access memory through a pointer after that memory has been deallocated.

Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in Zephyr

View all
CVE-2023-4260 CRITICAL POC
10.0 Sep 27

Potential off-by-one buffer overflow vulnerability in the Zephyr fuse file system. Rated critical severity (CVSS 10.0),

CVE-2026-1678 CRITICAL POC
9.8 Mar 05

An out-of-bounds write in the Zephyr RTOS DNS resolver (dns_unpack_name()) lets a crafted DNS response corrupt memory on

CVE-2023-5055 CRITICAL POC
9.8 Nov 21

Possible variant of CVE-2021-3434 in function le_ecred_reconf_req. Rated critical severity (CVSS 9.8), this vulnerabilit

CVE-2023-4257 CRITICAL POC
9.8 Oct 13

Unchecked user input length in /subsys/net/l2/wifi/wifi_shell.c can cause buffer overflows. Rated critical severity (CVS

CVE-2023-3725 CRITICAL POC
9.8 Oct 06

Potential buffer overflow vulnerability in the Zephyr CAN bus subsystem. Rated critical severity (CVSS 9.8), this vulner

CVE-2021-3323 CRITICAL POC
9.8 Oct 12

Integer Underflow in 6LoWPAN IPHC Header Uncompression in Zephyr. Rated critical severity (CVSS 9.8), this vulnerability

CVE-2021-3625 CRITICAL POC
9.8 Oct 05

Buffer overflow in Zephyr USB DFU DNLOAD. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable

CVE-2021-3319 CRITICAL POC
9.8 Oct 05

DOS: Incorrect 802154 Frame Validation for Omitted Source / Dest Addresses. Rated critical severity (CVSS 9.8), this vul

CVE-2018-1000800 CRITICAL POC
9.8 Sep 06

zephyr-rtos version 1.12.0 contains a NULL base pointer reference vulnerability in sys_ring_buf_put(), sys_ring_buf_get(

CVE-2023-4264 CRITICAL POC
9.6 Sep 27

Potential buffer overflow vulnerabilities n the Zephyr Bluetooth subsystem. Rated critical severity (CVSS 9.6), this vul

CVE-2024-1638 CRITICAL POC
9.1 Feb 19

The documentation specifies that the BT_GATT_PERM_READ_LESC and BT_GATT_PERM_WRITE_LESC defines for a Bluetooth characte

CVE-2023-5753 HIGH POC
8.8 Oct 25

Potential buffer overflows in the Bluetooth subsystem due to asserts being disabled in /subsys/bluetooth/host/hci_core.c

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