Zephyr RTOS
CVE-2026-10641
HIGH
Severity by source
AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H
Bluetooth-range adjacent vector (AV:A), no auth or user interaction on HFP SLC (PR:N/UI:N), attacker-positioned small write yields limited integrity (I:L) and reliable host DoS (A:H), no direct disclosure (C:N).
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
Lifecycle Timeline
2DescriptionCVE.org
Zephyr's Bluetooth Classic Hands-Free Profile (HFP) Hands-Free role parser (subsys/bluetooth/host/classic/hfp_hf.c) contains an out-of-bounds write. During Service Level Connection setup the HF sends AT+CIND=? and parses the AG's +CIND: response in cind_handle(), which assigns a per-entry counter index and calls cind_handle_values() for each list element. cind_handle_values() then wrote hf-ind_table[index] = i without verifying that index is within the 20-element int8_t ind_table[] array of struct bt_hfp_hf. Because the parser places no cap on the number of +CIND: list entries, a remote Attendant Gateway (a malicious, compromised, or spoofed peer the device connects to over Bluetooth) can send a response with more than 20 recognized indicator entries and drive index arbitrarily large, writing a small attacker-positioned value past the array into adjacent struct fields (feature masks, SDP/version state, the calls[] array, work/atomic bookkeeping) and potentially beyond the static connection pool slot. This yields memory corruption and at least denial of service of the Bluetooth host, triggered by a single malformed AT response with no user interaction. The sibling consumer ag_indicator_handle_values() already performed the equivalent bounds check; this commit adds the same index = ARRAY_SIZE(hf-ind_table) guard to close the gap. Affects builds with CONFIG_BT_HFP_HF enabled; introduced with the original HFP HF CIND parser (~v1.7) and present through v4.4.0.
AnalysisAI
Out-of-bounds write in Zephyr RTOS Bluetooth Classic Hands-Free Profile (HFP) parser allows an adjacent Bluetooth peer acting as an Audio Gateway to corrupt heap/static memory on devices with CONFIG_BT_HFP_HF enabled. A single malformed +CIND response sent during Service Level Connection setup can crash the Bluetooth host or corrupt adjacent connection state with no user interaction. No public exploit identified at time of analysis, and the upstream fix is available via commit cf7693a in the zephyrproject-rtos repository.
Technical ContextAI
Zephyr is a widely deployed open-source RTOS used in embedded and IoT devices, and the affected component is its Bluetooth Classic host stack (subsys/bluetooth/host/classic/hfp_hf.c) implementing the Hands-Free role of HFP. The root cause is CWE-787 (out-of-bounds write): cind_handle_values() writes hf->ind_table[index] = i using an index derived from the count of +CIND: list entries received from the peer Audio Gateway, but never validates index against the fixed-size 20-element int8_t ind_table[] member of struct bt_hfp_hf. Because the AT command parser places no cap on the number of recognized indicators in the AG's response, an attacker controls how far past the array the write occurs, corrupting adjacent fields such as feature masks, SDP/version state, the calls[] array, and work/atomic bookkeeping, and potentially memory beyond the static connection pool. The sibling AG-side helper ag_indicator_handle_values() already performed this bounds check, and the patch (commit cf7693a) ports the same if (index >= ARRAY_SIZE(hf->ind_table)) guard into the HF parser.
RemediationAI
Upstream fix available (commit cf7693a8261ae363c9cf46cfd51005486637173e on zephyrproject-rtos/zephyr) which adds an index >= ARRAY_SIZE(hf->ind_table) guard in cind_handle_values(); apply the patch by upgrading to a Zephyr release that includes this commit (post-v4.4.0) or by backporting it into your fork or LTS branch - released patched version not independently confirmed beyond the commit and GHSA-wx5j-q6f2-59p3 advisory. As compensating controls until patched, disable CONFIG_BT_HFP_HF in the build if HFP Hands-Free is not required (removes the vulnerable parser entirely but disables hands-free telephony), restrict Bluetooth pairing/connection to known bonded peers and avoid auto-connecting to unknown AGs (reduces remote AG attack surface at the cost of usability), and keep Bluetooth Classic discoverable/connectable mode off when not actively pairing. Refer to https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-wx5j-q6f2-59p3 for vendor guidance.
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 weakness CWE-787 – Out-of-bounds Write
View allSame technique Buffer Overflow
View allShare
External POC / Exploit Code
Leaving vuln.today