CVE-2026-10641: Zephyr Bluetooth Classic HFP Out-of-Bounds Write Vulnerability
A vulnerability in Zephyr's Bluetooth Classic implementation allows a remote device to crash or corrupt memory on systems running vulnerable builds. When a Zephyr device establishes a Bluetooth connection using the Hands-Free Profile, it expects responses from the remote device that follow a defined format. An attacker controlling or spoofing the remote device can send a malformed response with an unusually long list of indicators, bypassing safety checks and writing data into unintended memory locations. This memory corruption can disable Bluetooth functionality and potentially affect system stability. The vulnerability requires the attacker to be within Bluetooth range and does not require user interaction to trigger.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 7.1 HIGH · CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H
- Weaknesses (CWE)
- CWE-787
- Affected products
- 1 configuration(s)
- Published / Modified
- 2026-06-17 / 2026-07-14
NVD description (verbatim)
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.
3 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
CVE-2026-10641 is an out-of-bounds write vulnerability in the Zephyr RTOS Bluetooth Classic Hands-Free Profile (HFP) implementation, specifically in the CIND response parser (subsys/bluetooth/host/classic/hfp_hf.c). During Service Level Connection establishment, the Hands-Free role processes the Attendant Gateway's +CIND: indicator list response. The parser increments a per-entry counter index and invokes cind_handle_values() for each list element. However, cind_handle_values() writes to hf->ind_table[index] without validating that index remains within the bounds of the 20-element int8_t ind_table array. A remote AG can send a +CIND: response containing more than 20 indicator entries, causing index to exceed array bounds and write attacker-controlled values into adjacent struct fields including feature masks, SDP/version state, the calls[] array, and connection pool metadata. The sibling AG-side parser (ag_indicator_handle_values()) already implements the necessary bounds check via index >= ARRAY_SIZE(hf->ind_table); this check was absent from the HF-side consumer. The vulnerability affects all builds with CONFIG_BT_HFP_HF enabled, from initial HFP HF CIND parser introduction (~v1.7) through v4.4.0.
Business impact
Organizations deploying Zephyr-based Bluetooth Classic devices—including wireless headsets, speakers, automotive hands-free systems, and IoT peripherals—face denial-of-service and potential data corruption risks. An attacker within Bluetooth range can force affected devices into a non-functional state without user action, disrupting critical communications features in phones, vehicles, or industrial equipment. If memory corruption extends into shared Bluetooth state or adjacent subsystem data, secondary impacts such as information disclosure or further system instability become possible. The attack surface is particularly broad in populated Bluetooth environments (offices, vehicles, public spaces) where an attacker need not pair with the target device—only transmit a malformed response during connection setup.
Affected systems
Zephyr RTOS versions from approximately v1.7 through v4.4.0 with CONFIG_BT_HFP_HF enabled. The vulnerability exists in the HFP Hands-Free role implementation and is exploitable when a Zephyr device connects to a remote Bluetooth Classic device (real, compromised, or spoofed). Any Zephyr-based product using Hands-Free Profile for audio calls is potentially affected, including consumer electronics, automotive infotainment systems, industrial IoT gateways, and wearable devices. Systems not using HFP HF or with CONFIG_BT_HFP_HF disabled are not vulnerable.
Exploitability
Exploitability is high relative to the attack constraints. The vulnerability requires adjacent network access (Bluetooth range, typically 10–100 meters depending on power class) and no authentication, pairing, or user interaction. The attacker only needs to intercept or spoof the Attendant Gateway role during Hands-Free Service Level Connection setup and transmit a single malformed +CIND: response. No special tools or zero-day techniques are required; the attack leverages the absence of a bounds check already present in the equivalent AG-side parser. The low barrier to triggering a denial-of-service and the potential for memory corruption make this a practical attack in threat scenarios involving proximity-based adversaries or compromised Bluetooth peripherals.
Remediation
Apply patches from the Zephyr project that add index bounds validation (index >= ARRAY_SIZE(hf->ind_table) check) to cind_handle_values() in the Hands-Free role parser. Verify the patch against the official Zephyr repository for the appropriate maintenance branch and release schedule. Organizations should prioritize patching Zephyr versions v4.4.0 and earlier where CONFIG_BT_HFP_HF is enabled. In the interim, disable CONFIG_BT_HFP_HF in builds where Hands-Free functionality is not required, or restrict Bluetooth Classic connections to trusted peer devices via link policy or allowlisting mechanisms.
Patch guidance
Check the Zephyr project's official advisories and release notes for patched versions addressing this out-of-bounds write. The fix involves adding a bounds check before writing to hf->ind_table[index], mirroring the existing guard in ag_indicator_handle_values(). Organizations using custom Zephyr builds should verify that their build includes the patch and that CONFIG_BT_HFP_HF remains enabled only where Hands-Free functionality is genuinely required. Validate patches by cross-referencing the Zephyr GitHub repository's commit history and release schedules. Consider incorporating this patch into your regular maintenance and release cycles.
Detection guidance
Monitor Bluetooth Classic connection logs for unexpected disconnections or resets during Service Level Connection setup, particularly those coinciding with HFP CIND exchange. Packet capture and protocol analysis (using tools like Wireshark with Bluetooth Classic dissectors) may reveal +CIND: responses with abnormally large indicator lists (significantly exceeding 20 entries). System-level monitoring for memory corruption symptoms—kernel crashes, Bluetooth subsystem faults, or unexpected state changes in Bluetooth-dependent applications—can indicate exploitation. Implement integrity checks or watch for unscheduled Bluetooth host restarts following remote device connections. Because this is a single-packet trigger with no user interaction required, behavioral monitoring of Bluetooth peripheral interactions in high-density environments (offices, public spaces) is valuable for detecting attack attempts.
Why prioritize this
This vulnerability scores CVSS 7.1 (HIGH) due to the combination of low attack complexity, no user interaction, local network adjacency, and high availability impact. While confidentiality is not directly affected, the integrity and availability impacts—memory corruption and denial of service—pose meaningful risk to Bluetooth-dependent systems. The lack of CISA KEV listing does not diminish priority; the ease of exploitation and broad applicability across Zephyr Bluetooth Classic devices justify urgent patching. Organizations with Zephyr-based Hands-Free devices in production environments should elevate this to high priority.
Risk score, explained
The CVSS 3.1 score of 7.1 (HIGH) reflects: Attack Vector Adjacent Network (AV:A)—exploitable only within Bluetooth range; Attack Complexity Low (AC:L)—no special conditions or user interaction required; Privileges Required None (PR:N)—the attacker needs no prior relationship with the target; User Interaction None (UI:N)—the attack is automatic upon a malformed response; Scope Unchanged (S:U)—impact is confined to the vulnerable Bluetooth host; Confidentiality None (C:N)—no information disclosure; Integrity Low (I:L)—memory corruption with limited scope; Availability High (A:H)—denial of service of the Bluetooth subsystem. The score appropriately weights the practical exploitability and impact within the Bluetooth domain.
Frequently asked questions
Do I need to be paired with the device to exploit this vulnerability?
No. The vulnerability can be triggered during the initial Service Level Connection setup before authentication or pairing completes. An attacker simply needs to spoof or intercept the Attendant Gateway role and transmit a malformed +CIND: response when the victim device attempts to establish a Hands-Free connection. This can be done against devices scanning for or connecting to Bluetooth Classic audio profiles.
What Zephyr versions are affected?
Zephyr RTOS from approximately v1.7 through v4.4.0 are affected, provided that CONFIG_BT_HFP_HF is enabled in the build. Check your build configuration to determine if HFP Hands-Free support is compiled in. If CONFIG_BT_HFP_HF is disabled, your build is not vulnerable. Consult the Zephyr project's official advisory for patched versions and recommended upgrade paths.
Can I mitigate this without patching?
Yes, in the short term: disable CONFIG_BT_HFP_HF in your Zephyr build if Hands-Free functionality is not required for your use case. Additionally, restrict Bluetooth Classic connections to trusted peer devices using allowlisting or link policy mechanisms. However, these are interim measures; patching is the permanent solution.
What happens when this vulnerability is exploited?
The most immediate consequence is denial of service: the Bluetooth host crashes or becomes unresponsive, disabling all audio and communication features dependent on Bluetooth. Memory corruption may extend to adjacent data structures, potentially causing secondary issues such as information leakage or further system instability. The attack is triggered remotely with a single malformed packet and requires no user interaction.
This analysis is provided for informational purposes and reflects the vulnerability information available as of the publication date. SEC.co makes no warranty regarding the accuracy, completeness, or applicability of this analysis to specific environments. Organizations are responsible for verifying vulnerability impacts within their own infrastructure and for consulting official Zephyr project advisories and vendor documentation when making patching decisions. This analysis does not constitute legal, compliance, or risk management advice. Always validate patches against official sources before deploying to production systems. Source: NVD (public-domain), retrieved 2026-07-27. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2026-5068HIGHZephyr Bluetooth L2CAP Out-of-Bounds Write – Remote DoS Risk
- CVE-2026-5066MEDIUMZephyr TLS Session Cache Out-of-Bounds Write Vulnerability
- CVE-2026-5589MEDIUMInteger Underflow in Zephyr Bluetooth Mesh Solicitation Handling
- CVE-2021-4478HIGHDräger CC-Vision Buffer Overflow in .gdt File Parsing
- CVE-2025-14098HIGHAvira Antivirus Engine Heap Buffer Overflow—Patch Guidance
- CVE-2025-59605HIGHQualcomm Memory Corruption in Device Identifier Processing
- CVE-2025-7004HIGHHeap Buffer Overflow in Avast, AVG, Norton Antivirus – Gen Digital Definition Update Fix
- CVE-2026-0138HIGHAndroid LWIS Buffer Overflow Leading to Local Privilege Escalation