Severity by source
AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Adjacent vector confirmed by Bluetooth requirement; PR:N because GATT discovery needs no authentication; A:H for complete BT thread hang; no C or I impact.
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
Lifecycle Timeline
2DescriptionCVE.org
The Bluetooth host GATT client function parse_read_std_char_desc() in subsys/bluetooth/host/gatt.c parses an ATT Read By Type Response received from a remote GATT server during BT_GATT_DISCOVER_STD_CHAR_DESC discovery. The per-entry stride rsp->len is taken directly from the peer's PDU, and the parse loop both tests its exit condition (length >= rsp->len) and advances (length -= rsp->len, pdu += rsp->len) using that value. The minimum value of rsp->len was never validated before the loop.
A malicious or malfunctioning peer can reply with rsp->len = 0. Because length is unsigned and never decreases, the loop condition stays true forever and the read pointer never advances; as long as the body is at least a few bytes with a non-zero handle and a matching descriptor UUID, the host repeatedly re-parses the same bytes and invokes the discovery callback, never terminating. This hangs the Bluetooth host processing thread (CWE-835, loop with unreachable exit condition).
The condition is reachable by any connected peer once the local device initiates standard-descriptor-value discovery; GATT discovery does not require bonding or encryption, so an unauthenticated adjacent attacker that the device connects to can trigger it. The impact is denial of service of the Bluetooth subsystem (and likely a watchdog reset on constrained targets); there is no memory disclosure or corruption.
The fix adds a rsp->len < sizeof(struct bt_att_data) check before the loop, rejecting under-length responses so the stride is always non-zero and the loop terminates. The sibling parsers parse_include() and parse_characteristic() already validated rsp->len and are unaffected.
AnalysisAI
Infinite loop denial of service in the Zephyr RTOS Bluetooth GATT client allows an unauthenticated adjacent attacker to permanently hang the Bluetooth host processing thread by sending a crafted ATT Read By Type Response with a zero-length stride value during standard descriptor discovery. Affected targets - which span all Zephyr versions per the wildcard CPE - face a hung BT subsystem and likely a watchdog reset on constrained embedded hardware, rendering Bluetooth functionality inoperative. No public exploit code or CISA KEV listing exists at time of analysis, but the upstream commit diff publicly discloses the exact offending code path, substantially lowering the barrier to exploit development.
Technical ContextAI
Zephyr RTOS (CPE: cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:*) is an embedded RTOS with a native Bluetooth Low Energy stack. The vulnerability resides in subsys/bluetooth/host/gatt.c within the function parse_read_std_char_desc(), which processes ATT Read By Type Responses during BT_GATT_DISCOVER_STD_CHAR_DESC operations. The per-entry stride rsp->len is sourced directly from the peer-controlled PDU and used both as the loop exit condition (length >= rsp->len) and the pointer advancement step (length -= rsp->len, pdu += rsp->len) without any minimum-value validation. CWE-835 (Loop with Unreachable Exit Condition) describes the root cause precisely: when a peer sends rsp->len = 0, the unsigned length counter never decrements, the exit condition is permanently satisfied, and the loop body continues re-parsing the same bytes indefinitely while repeatedly invoking the discovery callback. The sibling parsers parse_include() and parse_characteristic() already enforced a sizeof(struct bt_att_data) lower bound on rsp->len; this function was the sole omission. The fix, visible in commit 494283d, adds an identical guard before the loop entry.
RemediationAI
The primary remediation is to apply upstream commit 494283d469a95b294badaf45c639de433bf5e35a from the Zephyr project (https://github.com/zephyrproject-rtos/zephyr/commit/494283d469a95b294badaf45c639de433bf5e35a), which inserts a rsp->len < sizeof(struct bt_att_data) check before the parse loop, ensuring the stride is always non-zero and the loop terminates. A formally tagged patched release version has not been independently confirmed from available data - only the commit hash is known - so monitor the Zephyr security advisory at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-483r-jq2x-5cp9 for a versioned release announcement before closing remediation tickets. Where immediate patching is not feasible, consider disabling BT_GATT_DISCOVER_STD_CHAR_DESC discovery at the firmware build configuration level, which prevents the vulnerable code path from being reached entirely but reduces GATT client interoperability with peripherals that expose standard descriptors. Alternatively, restricting connections to an allowlist of bonded and trusted peers requires configuring bonding and reduces interoperability with unknown BLE devices, though it meaningfully narrows the attack surface since the vulnerability is triggerable only by a peer the device voluntarily connects to.
Potential off-by-one buffer overflow vulnerability in the Zephyr fuse file system. Rated critical severity (CVSS 10.0),
Possible variant of CVE-2021-3434 in function le_ecred_reconf_req. Rated critical severity (CVSS 9.8), this vulnerabilit
Unchecked user input length in /subsys/net/l2/wifi/wifi_shell.c can cause buffer overflows. Rated critical severity (CVS
Potential buffer overflow vulnerability in the Zephyr CAN bus subsystem. Rated critical severity (CVSS 9.8), this vulner
Integer Underflow in 6LoWPAN IPHC Header Uncompression in Zephyr. Rated critical severity (CVSS 9.8), this vulnerability
Buffer overflow in Zephyr USB DFU DNLOAD. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable
DOS: Incorrect 802154 Frame Validation for Omitted Source / Dest Addresses. Rated critical severity (CVSS 9.8), this vul
zephyr-rtos version 1.12.0 contains a NULL base pointer reference vulnerability in sys_ring_buf_put(), sys_ring_buf_get(
Potential buffer overflow vulnerabilities n the Zephyr Bluetooth subsystem. Rated critical severity (CVSS 9.6), this vul
Buffer overflow in Zephyr RTOS dns_unpack_name() function causing OOB writes. PoC available.
The documentation specifies that the BT_GATT_PERM_READ_LESC and BT_GATT_PERM_WRITE_LESC defines for a Bluetooth characte
Potential buffer overflows in the Bluetooth subsystem due to asserts being disabled in /subsys/bluetooth/host/hci_core.c
Same technique Denial Of Service
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-58131