CVE-2026-10685
Received Received - Intake

Use-After-Free in Zephyr Bluetooth GATT Client

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

Publication date: 2026-07-31

Last updated on: 2026-07-31

Assigner: Zephyr Project

Description

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.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

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

Affected Vendors & Products

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

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-416 The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory "belongs" to the code that operates on the new pointer.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability is a use-after-free flaw in the Zephyr Bluetooth GATT client. It occurs when the application's subscribe callback is invoked after the notify callback with NULL data, which signals the subscription has ended. This allows the bt_gatt_subscribe_params struct to be freed or reused prematurely, leading to memory corruption or crashes.

Detection Guidance

This vulnerability is specific to Zephyr RTOS Bluetooth GATT client implementations. Detection requires checking if your Zephyr device uses bt_gatt_subscribe_params with callbacks that free or reuse the struct after notification termination. Review Zephyr Bluetooth stack logs for crashes or memory corruption during GATT operations, particularly when handling CCC write responses with ATT Error Response.

Impact Analysis

An attacker within Bluetooth range could exploit this to cause a denial of service by crashing the device. In some cases, it may allow arbitrary code execution if the application frees or reuses the struct in its notification handler.

Compliance Impact

This vulnerability primarily causes denial of service through memory corruption or crashes, which could disrupt system availability. While not directly impacting data confidentiality or integrity, prolonged downtime may indirectly affect compliance with standards like GDPR or HIPAA that require timely access to systems handling personal or health data.

Mitigation Strategies

Apply the official Zephyr patch that reorders the handler to call subscribe() before notify(NULL). Update to a fixed Zephyr version. If immediate patching is not possible, disable Bluetooth GATT client functionality or restrict connections to trusted peers until patched.

Chat Assistant

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

EPSS Chart