Skip to main content

Zephyr EUVDEUVD-2026-109975

| CVE-2026-82389 MEDIUM
NULL Pointer Dereference (CWE-476)
2026-10-26 zephyr
6.5
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Enter Bluetooth BR/EDR radio range
  2. Delivery
    Advertise SDP record with out-of-range RFCOMM channel
  3. Exploit
    AG RFCOMM connect fails, object memset while SDP node linked
  4. Execution
    SDP client dereferences zeroed pool and func pointers
  5. Impact
    Bluetooth 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Zephyr 4.4.0 <4.5.0

Affected Packages

euvd zephyr fix: 4.5.0

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

Vendor (zephyr) PRIMARY 6.5 MEDIUM
AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 6.5 MEDIUM

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).

3.1 AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:A/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (zephyr).

CVSS VectorVendor: zephyr

Attack Vector
Adjacent
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

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

EPSS Score
0.2%
Top 86% exploitable
Prevalence
Low
niche Bluetooth Classic HFP Audio Gateway build of Zephyr embedded RTOS
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Controlled
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

More in Zephyr

View all
CVE-2023-4260 CRITICAL POC
10.0 Sep 27

Potential off-by-one buffer overflow vulnerability in the Zephyr fuse file system. Rated critical severity (CVSS 10.0),

CVE-2026-1678 CRITICAL POC
9.8 Mar 05

An out-of-bounds write in the Zephyr RTOS DNS resolver (dns_unpack_name()) lets a crafted DNS response corrupt memory on

CVE-2023-5055 CRITICAL POC
9.8 Nov 21

Possible variant of CVE-2021-3434 in function le_ecred_reconf_req. Rated critical severity (CVSS 9.8), this vulnerabilit

CVE-2023-4257 CRITICAL POC
9.8 Oct 13

Unchecked user input length in /subsys/net/l2/wifi/wifi_shell.c can cause buffer overflows. Rated critical severity (CVS

CVE-2023-3725 CRITICAL POC
9.8 Oct 06

Potential buffer overflow vulnerability in the Zephyr CAN bus subsystem. Rated critical severity (CVSS 9.8), this vulner

CVE-2021-3323 CRITICAL POC
9.8 Oct 12

Integer Underflow in 6LoWPAN IPHC Header Uncompression in Zephyr. Rated critical severity (CVSS 9.8), this vulnerability

CVE-2021-3625 CRITICAL POC
9.8 Oct 05

Buffer overflow in Zephyr USB DFU DNLOAD. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable

CVE-2021-3319 CRITICAL POC
9.8 Oct 05

DOS: Incorrect 802154 Frame Validation for Omitted Source / Dest Addresses. Rated critical severity (CVSS 9.8), this vul

CVE-2018-1000800 CRITICAL POC
9.8 Sep 06

zephyr-rtos version 1.12.0 contains a NULL base pointer reference vulnerability in sys_ring_buf_put(), sys_ring_buf_get(

CVE-2023-4264 CRITICAL POC
9.6 Sep 27

Potential buffer overflow vulnerabilities n the Zephyr Bluetooth subsystem. Rated critical severity (CVSS 9.6), this vul

CVE-2024-1638 CRITICAL POC
9.1 Feb 19

The documentation specifies that the BT_GATT_PERM_READ_LESC and BT_GATT_PERM_WRITE_LESC defines for a Bluetooth characte

CVE-2023-5753 HIGH POC
8.8 Oct 25

Potential buffer overflows in the Bluetooth subsystem due to asserts being disabled in /subsys/bluetooth/host/hci_core.c

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy