HIGH 7.1

CVE-2026-10651: Zephyr Bluetooth SDP Parser Buffer Over-Read Vulnerability

A Bluetooth protocol parser in Zephyr has a boundary-checking flaw that allows a remote device to read one byte past the allocated buffer. When a specially crafted SDP (Service Discovery Protocol) record arrives, the parser validates only that three bytes are present, then immediately tries to read a fourth byte without proper bounds checking. The over-read itself is limited and not exploitable for data theft, but it can crash the device if that fourth byte sits at a memory boundary or trigger a debug assertion. This affects devices running Zephyr 4.3.0 and 4.4.0 and requires no authentication—any paired or nearby Bluetooth peer can send the malicious record.

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:L/I:N/A:H
Weaknesses (CWE)
CWE-20, CWE-617
Affected products
1 configuration(s)
Published / Modified
2026-06-23 / 2026-07-17

NVD description (verbatim)

bt_sdp_parse_attribute() in subsys/bluetooth/host/classic/sdp.c validated only that the SDP record buffer held the type-marker byte plus the 2-byte attribute ID (a check of buf->len < 3) but then read a fourth byte, the data-element descriptor (type), via net_buf_simple_pull_u8(). Because net_buf_simple_pull_u8() dereferences buf->data[0] before its only bounds guard (an __ASSERT_NO_MSG that compiles out when CONFIG_ASSERT is disabled, the production default), a record of exactly three bytes (0x09 followed by a 2-byte attribute ID) causes a one-byte read past the end of the logical buffer. The parser is reachable from inbound, remote-controlled data: a Bluetooth BR/EDR peer acting as an SDP server returns discovery-response records that are stored verbatim in the client receive buffer and parsed via the public bt_sdp_get_attr()/bt_sdp_has_attr()/bt_sdp_record_parse() helpers. The over-read is bounded to a single byte that is used only as an internal length selector and is never leaked to the attacker; subsequent length checks then reject the malformed record. Realistic impact is therefore limited to an edge-case denial of service (a fault only if the record ends exactly at a mapped-memory boundary, or a deterministic assert panic when CONFIG_ASSERT=y). Affects Zephyr v4.3.0 and v4.4.0; fixed by adding sizeof(type) to the length check.

2 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

The vulnerability exists in bt_sdp_parse_attribute() within Zephyr's Bluetooth Classic SDP parser. The function checks that buf->len >= 3 (ensuring a type-marker byte and 2-byte attribute ID are present), but then unconditionally calls net_buf_simple_pull_u8() to read the data-element descriptor (type field). The pull_u8() macro dereferences the buffer pointer before its only guard, an __ASSERT_NO_MSG() that is compiled out when CONFIG_ASSERT is disabled—the default in production builds. An SDP record of exactly 3 bytes (0x09 plus 2 attribute-ID bytes) will cause a 1-byte out-of-bounds read. The read value is then used as a length selector in subsequent parsing, but malformed records are rejected before any data leakage. The vulnerability is reachable remotely: inbound SDP discovery responses from a Bluetooth peer are parsed directly via public APIs (bt_sdp_get_attr(), bt_sdp_has_attr(), bt_sdp_record_parse()) without prior validation.

Business impact

Devices running Zephyr 4.3.0 or 4.4.0 in a Bluetooth-enabled IoT or embedded application could experience unplanned downtime if an attacker within Bluetooth range triggers a denial of service. The risk is highest in production deployments with CONFIG_ASSERT disabled, where the parser may dereference invalid memory; assertion-enabled builds will panic loudly and may aid debugging but also enable a visible attack vector. For most mainstream applications, the practical window for exploitation is narrow (requires the record to align with a memory boundary or a specific heap layout), making this a medium-urgency patch rather than a critical emergency. However, any device that cannot tolerate unexpected resets should treat this as a priority.

Affected systems

Zephyr Project versions 4.3.0 and 4.4.0 are confirmed affected. The flaw is in the Bluetooth Classic subsystem's SDP parser (subsys/bluetooth/host/classic/sdp.c), so only devices with Bluetooth BR/EDR enabled and the SDP client role active are at risk. This includes various embedded systems, wearables, and IoT gateways that rely on Zephyr for Bluetooth connectivity. Verify your device's exact Zephyr version and Bluetooth configuration in your firmware image or device manifest.

Exploitability

Exploitability is low to moderate despite the high CVSS score, because the impact is constrained. Triggering the vulnerability requires (1) proximity or an established Bluetooth connection, (2) the ability to act as or relay an SDP server, (3) crafting an SDP response with a record of exactly 3 bytes, and (4) the recipient's memory layout must be such that the out-of-bounds byte either corrupts a meaningful target or lands at an unmapped page (to cause a fault). In practice, the attacker has no control over the data returned by the over-read, so information disclosure is not feasible. Denial of service is achievable under specific conditions, but requires some trial or luck to trigger reliably. No public exploit code or proof-of-concept is known to be in active circulation.

Remediation

Upgrade to a patched version of Zephyr (4.4.1 or later, or a backport to 4.3.x) that includes the fix: adding sizeof(type) to the length check in bt_sdp_parse_attribute(). Before applying patches, confirm your current Zephyr version and rebuild your firmware. If an immediate upgrade is not feasible, disable Bluetooth SDP client functionality or restrict Bluetooth peer connectivity to trusted devices only. Verify the patch in the official Zephyr repository or release notes before deployment.

Patch guidance

The fix modifies the initial bounds check from buf->len < 3 to buf->len < (3 + sizeof(type)), ensuring the parser does not attempt to read the type field unless it is actually present in the buffer. Patch Zephyr by pulling the latest commit from the main branch or waiting for a minor release (e.g., 4.4.1, 4.3.1) that includes the fix. Rebuild and test your firmware in a controlled environment before rolling out to production. If your organization maintains a custom fork of Zephyr, backport the commit using the Zephyr project's official guidance; verify against the vendor advisory for the exact commit hash.

Detection guidance

Look for Zephyr firmware builds with versions 4.3.0 or 4.4.0 in your inventory. Enable CONFIG_ASSERT in test and staging environments to catch the panic condition and observe its symptoms. Monitor for unexpected device reboots or bluetooth-related crashes in production logs, especially if they correlate with new or unusual Bluetooth peer connections. Network-level detection is difficult because the malformed SDP record is brief and indistinguishable from noise without deep packet inspection; focus on host-based indicators (core dumps, crash logs, watchdog resets).

Why prioritize this

This vulnerability scores 7.1 (HIGH) due to its remote triggering vector and availability impact, but real-world severity is tempered by the narrow exploitation window and lack of confidentiality or integrity risk. Prioritize patching if your Zephyr deployment handles critical functions (medical devices, safety-critical systems, high-availability IoT infrastructure) or if you cannot tolerate unexpected resets. If your devices use Zephyr but do not enable Bluetooth SDP, or if they operate in tightly controlled Bluetooth environments with only trusted peers, you can defer patching to a routine maintenance window. Organizations with strict change-control processes should still schedule the update within 2–4 weeks.

Risk score, explained

The CVSS 3.1 score of 7.1 (HIGH, AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H) reflects a low attack complexity, no privilege or user interaction required, and adjacent-network attack scope. The 'C:L' (low confidentiality impact) acknowledges the theoretical over-read of one byte, though in practice the byte is not leaked. The 'A:H' (high availability impact) captures the denial-of-service risk. However, the actual exploitability is constrained by memory layout and the requirement for specific record alignment, so treat the score as an upper bound; real risk in your environment depends on your threat model and the reliability requirements of your devices.

Frequently asked questions

Does this vulnerability expose sensitive data?

No. The over-read is limited to one byte that is never transmitted back to the attacker or visible in logs. It is used internally as a length selector and then the malformed record is discarded. There is no confidentiality impact.

Can I work around this without upgrading?

Partial workarounds include disabling Bluetooth or SDP on affected devices, restricting Bluetooth connections to a whitelist of trusted peer MAC addresses, or enabling CONFIG_ASSERT to turn the bug into a visible panic (which allows you to monitor and respond). A proper fix requires upgrading to a patched Zephyr version.

What should I do if my devices are already in the field?

Assess the criticality of your deployments. If devices cannot tolerate unexpected reboots, plan a firmware update rollout as soon as a patched version is available and validated. If your devices operate in low-Bluetooth-traffic environments or with trusted peers only, you can schedule the patch during a routine maintenance window. Monitor crash logs for Bluetooth-related anomalies in the meantime.

Is this vulnerability in the CISA KEV catalog?

No, this vulnerability is not on the CISA Known Exploited Vulnerabilities list. There is no evidence of active exploitation in the wild, and no public exploit code is known. However, the lack of KEV status does not mean the vulnerability is harmless; it simply means it has not been widely weaponized yet.

This analysis is provided for informational purposes and reflects the state of the vulnerability as of the publication date. Patch availability and version numbers are subject to change; always verify against the official Zephyr project repository and release notes. The CVSS score is a standardized metric and may not fully capture risk in your specific environment. SEC.co does not provide warranty or liability for reliance on this information. Consult your device manufacturer and Zephyr security advisories for authoritative guidance on your products. Source: NVD (public-domain), retrieved 2026-07-28. Analysis generated by SEC.co (claude-haiku-4-5).