Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessEnter Bluetooth BR/EDR radio range
-
DeliveryAdvertise SDP record with out-of-range RFCOMM channel
-
ExploitAG RFCOMM connect fails, object memset while SDP node linked
-
ExecutionSDP client dereferences zeroed pool and func pointers
-
ImpactBluetooth stack crashes or RX thread hangs
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Null pointer safety, defensive checks
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Only Zephyr builds with CONFIG_BT_CLASSIC and CONFIG_BT_HFP_AG operating in the Audio Gateway role are affected - this is a non-default configuration. Exploitation requires a BR/EDR device within Bluetooth radio range whose SDP Hands-Free service record advertises an RFCOMM channel outside the valid 0x01..0x1e range (deterministically forcing bt_rfcomm_dlc_connect() to return -EINVAL), or alternatively the peer dropping the ACL or racing an RFCOMM DLC on the same DLCI to time a connect failure. Reading the peer SDP record requires no pairing (unauthenticated, PR:N). Limiting factors: the attacker must be in adjacent Bluetooth proximity (AV:A), the target must be built as an HFP Audio Gateway, and impact is confined to crash/hang of the Bluetooth stack (availability only). |
| Impact | This is a genuine but bounded availability issue, best treated as a medium-priority patch item rather than an emergency. The CVSS 3.1 vector (AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, 6.5) aligns well with the described mechanism: a BR/EDR attacker within Bluetooth radio range can reach the bug without pairing (PR:N) and trigger it deterministically by advertising an out-of-range RFCOMM channel (AC:L), with impact limited strictly to availability (C:N/I:N/A:H) - the advisory is explicit that the write is a constant zero at a fixed static address, so there is no attacker-controlled write and no memory-corruption/RCE path. The vuln.today decision label is 'this_month', consistent with a remotely-reachable DoS that is not under active exploitation. No EPSS score, no CISA KEV listing, and no public exploit were provided (the only references are the vendor patch commit and the GHSA advisory), so exploitation is 'no public exploit identified at time of analysis'. Two factors raise, rather than lower, the practical concern: the trigger is deterministic and requires no pairing, and the GHSA explicitly marks the fix as INCOMPLETE - the patch only defers release on the bt_hfp_ag_connect() initiator failure path, while the incoming-connection path (hfp_ag_disconnected() clearing acl_conn and hfp_ag_create() reached from hfp_ag_accept()) can still wipe an AG object with a linked SDP request, reproducing the same NULL-deref/hang class (open on main as of c4aa9324508). Net: real and worth patching this cycle for affected AG builds, but confined to adjacent-range DoS of the Bluetooth stack, and applying the current patch does not fully close the vulnerability. |
| Exploit ScenarioDerived | A malicious BR/EDR device within Bluetooth radio range of a Zephyr Audio Gateway advertises a Hands-Free SDP service record containing an RFCOMM channel outside the valid 0x01..0x1e range; reading this record requires no pairing. When the AG reads the record and attempts the RFCOMM connect, bt_rfcomm_dlc_connect() fails, the AG object is memset() while its SDP request node is still linked, and the next SDP list advance dereferences the zeroed pool/func pointers - crashing or hanging the Bluetooth stack. No public exploit code was identified; the attacker can alternatively force the failure by dropping the ACL or racing an RFCOMM DLC on the same DLCI. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 26, 2026
A null-pointer dereference in the Zephyr Bluetooth Classic Hands-Free Profile Audio Gateway role can crash or hang the Bluetooth host stack when an RFCOMM connect fails after an SDP discovery has already linked the AG object into the SDP client's pending request list. Builds of Zephyr 4.4.0 through 4.4.2 with CONFIG_BT_CLASSIC and CONFIG_BT_HFP_AG enabled and acting as an Audio Gateway are affected; a nearby BR/EDR device advertising an out-of-range RFCOMM channel (outside 0x01..0x1e) in its SDP Hands-Free record, which requires no pairing to read, deterministically forces the failure path. Impact is availability only - crash or hang of the Bluetooth stack, with no attacker-controlled write - and no public exploit code has been identified at time of analysis; the vendor fix is merged on main and v4.4-branch with the release carrying it forecast as 4.5.0.
RemediationAI
Upgrade to Zephyr 4.5.0, the release forecast to carry the fix, which is already merged on main as commit 18a3243b21ef6298988a3034dbda2704a7ad73a4 (PR #116192) and backported to v4.4-branch via PR #118170 (https://github.com/zephyrproject-rtos/zephyr/commit/18a3243b21ef6298988a3034dbda2704a7ad73a4). The patch adds a BT_HFP_AG_RELEASING flag so the connect-failure path defers release of the AG object until the SDP discovery callback runs, checks ag->acl_conn before touching object state, and cancels slc_work when discovery already completed. Note that the vendor documents the fix as incomplete: hfp_ag_disconnected() clears acl_conn without withdrawing the SDP request, and hfp_ag_create() reached from hfp_ag_accept() still memset()s the slot guarded only by acl_conn, so the incoming-connection path retains the same consequence class (SDP request-list corruption, NULL deref or hang) as of commit c4aa9324508. Where updating is not immediately possible, the practical mitigation is to build without CONFIG_BT_HFP_AG (or without CONFIG_BT_CLASSIC) on devices that do not need the Audio Gateway role, accepting the loss of HFP AG functionality, since no mechanism exists in the shipped API to cancel the in-flight SDP discovery that triggers the dereference.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is a CWE-476 NULL pointer dereference caused by lifetime mismanagement between two Bluetooth Classic subsystems. hfp_ag_create() (subsys/bluetooth/host/classic/hfp_ag.c) initiates bt_sdp_discover() with the AG object's embedded ag->sdp_param, and sdp_client_discovery_start() in sdp.c links that caller-owned _node into the SDP client session's reqs/reqs_next list. When the subsequent bt_rfcomm_dlc_connect() fails, bt_hfp_ag_connect() released the AG by memset()-ing the entire object to zero while the node was still linked and while ag->slc_work could still be queued on the system work queue. Because bt_sdp_discover_cancel() is declared in include/zephyr/bluetooth/classic/sdp.h but has no implementation in the tree, the in-flight request cannot be withdrawn; it remains queued with its func, pool and uuid pointers zeroed. On the next list advance, sdp_client_discover() calls net_buf_alloc(param->pool, ...) with a NULL pool and dereferences param->uuid->type, and sdp_client_notify_result() and the ACL-teardown flush invoke session->param->func() through a NULL function pointer. sdp_client_params_iterator() removes the finished node and immediately advances into the corrupted one. Zeroing a linked node also truncates the list behind a stale tail pointer, and re-arming the freed AG slot can re-append the same node, producing a self-looping list that hangs the Bluetooth RX thread. bt_sdp_get_proto_param() performs no range validation on the peer-advertised RFCOMM channel, and samples/bluetooth/classic/handsfree_ag feeds that value straight into bt_hfp_ag_connect(), so bt_rfcomm_dlc_connect() returns -EINVAL for channels outside 0x01..0x1e; the peer can alternatively time a failure by dropping the ACL or racing an RFCOMM DLC on the same DLCI.
Know when Zephyr gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Adjacent Bluetooth range (AV:A), no pairing (PR:N), deterministic trigger via out-of-range SDP channel (AC:L), crash/hang only so availability-only impact (C:N/I:N/A:H).
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
DescriptionCVE.org
In the Bluetooth Classic Hands-Free Profile Audio Gateway role, hfp_ag_create() in subsys/bluetooth/host/classic/hfp_ag.c starts an SDP discovery toward the peer, which links the embedded ag->sdp_param._node into the SDP client's pending request list in subsys/bluetooth/host/classic/sdp.c. If the subsequent bt_rfcomm_dlc_connect() call fails, bt_hfp_ag_connect() cleaned up by memset()-ing the entire AG object while that node was still linked, and while ag->slc_work could still be queued on the system work queue. An in-flight SDP discovery cannot be cancelled - bt_sdp_discover_cancel() is declared in the public header but has no implementation - so the request stays in the list with its func, pool and uuid pointers zeroed.
The RFCOMM channel passed to bt_hfp_ag_connect() is taken from the peer's own SDP Hands-Free service record in the normal AG flow (bt_sdp_get_proto_param() performs no range validation, and samples/bluetooth/classic/handsfree_ag feeds the value straight through), so a remote BR/EDR device in radio range that advertises an RFCOMM channel outside the valid range 0x01..0x1e deterministically forces bt_rfcomm_dlc_connect() to fail and reach the wipe. Reading the peer's SDP record requires no pairing, and the peer can also trigger the failure by dropping the ACL or racing an RFCOMM DLC on the same DLCI at the right moment.
When the SDP client next advances its request list, sdp_client_discover() dereferences the zeroed parameters - net_buf_alloc(param->pool, …) with a NULL pool and param->uuid->type - and the result-notification paths call through the NULL params->func. Zeroing a linked node also truncates the request list behind a stale tail pointer, and re-arming the freed AG slot re-appends the same node and can produce a self-looping list that hangs the Bluetooth RX thread. The impact is a crash or hang of the Bluetooth stack; the written value is a constant zero at a fixed static address, so no attacker-controlled write is available.
Only builds with CONFIG_BT_CLASSIC and CONFIG_BT_HFP_AG that use the Audio Gateway role are affected.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
A null pointer dereference occurs when a program attempts to access memory through a pointer that has been set to NULL (address 0x0).
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Potential off-by-one buffer overflow vulnerability in the Zephyr fuse file system. Rated critical severity (CVSS 10.0),
An out-of-bounds write in the Zephyr RTOS DNS resolver (dns_unpack_name()) lets a crafted DNS response corrupt memory on
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
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
EUVD-2026-109975
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB