Skip to main content

Zephyr RTOS CVE-2026-13213

| EUVDEUVD-2026-65003 MEDIUM
NULL Pointer Dereference (CWE-476)
2026-08-24 zephyr
5.3
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

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

  1. Recon
    Establish prior Bluetooth bond with target device
  2. Delivery
    Wait for target device reboot
  3. Exploit
    Reconnect within boot-time race window
  4. Install
    BLE security establishment triggers security_changed()
  5. C2
    Non-zero persisted bond flags schedule notify_work_handler
  6. Execute
    bt_gatt_is_subscribed() called with NULL attribute pointer
  7. Impact
    Assertion or NULL dereference crashes HAS peripheral

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

Exploitation requires four specific conditions to be simultaneously true: (1) the target device must be running Zephyr with CONFIG_BT_HAS and CONFIG_BT_SETTINGS both enabled at build time; (2) the attacking Bluetooth peer must have previously completed a Bluetooth bond with the target device - a bond that was persisted to non-volatile storage via the settings subsystem; (3) the attacking peer must reconnect and complete Bluetooth security establishment within the boot-time race window before the application calls bt_has_register() - a window whose duration depends entirely on application startup time and is not under the attacker's control; (4) the attacker must be within Bluetooth radio range (physically adjacent). Exploitation is strictly limited to denial of service: no memory corruption, no code execution, and no information disclosure are possible. A persistent peer can extend the outage by continuously triggering crashes across reboots. Devices without CONFIG_BT_SETTINGS are not vulnerable even if CONFIG_BT_HAS is enabled.

Impact

The CVSS 3.1 vector AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H scores 5.3 Medium and accurately reflects the constraint profile. AV:A correctly requires Bluetooth physical adjacency, limiting the attacker pool to devices within radio range. AC:H reflects the race condition: the bonded peer must reconnect and complete Bluetooth security establishment within the boot window before bt_has_register() is called - a timing dependency not entirely under the attacker's control. The impact ceiling is A:H (full availability loss via crash), with C:N and I:N confirmed explicitly by the description - the tags 'Buffer Overflow' and 'Information Disclosure' appearing in the intelligence metadata are inconsistent with the actual vulnerability behavior and should be disregarded. No CISA KEV listing and no EPSS data are available, so exploitation probability cannot be quantified numerically. A persistent reconnecting peer can loop the device into repeated crashes, amplifying the practical DoS impact beyond a single reboot. Overall, this is a genuine but constrained risk: it requires Bluetooth proximity, a pre-established bond, and favorable timing - making mass exploitation implausible but targeted disruption of specific paired devices realistic.

Exploit ScenarioDerived

An attacker who has previously paired a Bluetooth device with the target Zephyr HAS peripheral powers that device on near the target immediately after the target reboots. During the brief window before the target application completes bt_has_register(), the attacker's device completes BLE reconnection and Bluetooth security establishment, triggering security_changed(). The callback reads the non-zero persisted bond flags, schedules notify_work_handler, which calls bt_gatt_is_subscribed() with a NULL attribute pointer, crashing the HAS peripheral. No public exploit code has been identified; successful exploitation depends on winning the boot-time race, though a persistent attacker can repeat attempts across successive reboots to sustain the outage.

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 – Aug 24, 2026

Zephyr RTOS's Hearing Access Service (HAS) GATT peripheral crashes when a previously bonded Bluetooth peer reconnects during a boot-time race window before bt_has_register() completes service initialization. The security_changed() callback - registered unconditionally via BT_CONN_CB_DEFINE - fires against NULL attribute pointers, triggering either a kernel assertion or a NULL dereference in bt_gatt_is_subscribed(). With CVSS AV:A/AC:H and confirmed DoS-only impact, this represents a medium-severity availability risk against embedded hearing-aid devices running Zephyr 3.6.0 through 4.4.1; no public exploit code has been identified, and a vendor patch is confirmed at 4.4.2.

RemediationAI

Upgrade to Zephyr 4.4.2 or later, which incorporates the one-line guard at commit cb2329e090755abde8e57cf1c12aa2b9ca41a6a2 (https://github.com/zephyrproject-rtos/zephyr/commit/cb2329e090755abde8e57cf1c12aa2b9ca41a6a2). Full advisory details are at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-9rj8-3fvm-cc9f. If patching immediately is not feasible, two compensating controls are available with trade-offs: disabling CONFIG_BT_SETTINGS prevents boot-time restoration of bonded-client flag contexts and eliminates the triggering condition, but at the cost of losing bond persistence across reboots (paired devices must re-bond after each reboot); alternatively, restructuring application initialization to call bt_has_register() as early as possible - before enabling Bluetooth advertising - minimizes the race window, though it does not eliminate it entirely since the window begins at boot before the application runs.

Affected VersionsENISA

Zephyr 3.6.0 <4.4.2

Affected Packages

euvd zephyr fix: 4.4.2

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 vulnerability resides in subsys/bluetooth/audio/has.c within Zephyr's Bluetooth audio stack (CPE: cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:*), specifically the Hearing Access Service GATT server that implements the Bluetooth LE HAS profile used by hearing-aid peripherals. The root cause is CWE-476 (NULL Pointer Dereference): BT_CONN_CB_DEFINE installs security_changed() as a connection callback for all Bluetooth connections unconditionally, before the application-layer bt_has_register() call populates the hearing_aid_features_attr, preset_control_point_attr, and active_preset_index_attr GATT attribute pointers. When CONFIG_BT_SETTINGS is enabled, settings_set_cb() restores persisted bonded-client contexts at boot and sets context->flags to BONDED_CLIENT_INIT_FLAGS (non-zero). This non-zero flag causes security_changed() to schedule notify_work_handler, which calls bt_gatt_is_subscribed() with a still-NULL attr pointer. With assertions compiled in, __ASSERT(attr) fires; with assertions compiled out, attr->uuid is dereferenced through a NULL pointer. The fix - a four-line guard added at commit cb2329e090755abde8e57cf1c12aa2b9ca41a6a2 - inserts an early 'if (!has.registered) { return; }' before any notification work is scheduled.

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 5.3 MEDIUM
AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 5.3 MEDIUM

Bluetooth adjacency (AV:A) and race-window timing dependency (AC:H) constrain exploitation; DoS-only impact with no confidentiality or integrity loss sets C:N and I:N.

3.1 AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:A/AC:H/AT:P/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
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

DescriptionCVE.org

The Hearing Access Service (HAS) GATT server in subsys/bluetooth/audio/has.c installs a connection-callback set unconditionally via BT_CONN_CB_DEFINE, so security_changed() runs for every connection that establishes security even before the application has called bt_has_register(). The service attribute pointers hearing_aid_features_attr, preset_control_point_attr, and active_preset_index_attr remain NULL until bt_has_register() resolves them and sets has.registered.

With CONFIG_BT_SETTINGS, settings_set_cb() restores each bonded client's persisted context at boot and unconditionally sets context->flags to BONDED_CLIENT_INIT_FLAGS (non-zero). When a previously bonded peer reconnects and re-establishes security during the startup window before bt_has_register() has been called, security_changed() sees the non-zero flags and schedules notify_work_handler, which calls bt_gatt_is_subscribed() with a still-NULL attribute pointer. That triggers an assertion (__ASSERT(attr, ...) in bt_gatt_is_subscribed()), or a NULL dereference of attr->uuid when assertions are compiled out.

The result is a remotely triggerable (Bluetooth, adjacent) crash of the HAS peripheral. Exploitation requires the peer to have previously bonded with the device and to reconnect within the boot-time race window before the application registers the service; a peer that reconnects persistently can prolong the outage. Impact is denial of service only, with no memory corruption or information disclosure.

The fix adds an early if (!has.registered) { return; } guard in security_changed(), so no notification work is scheduled until the GATT service is registered and its attribute pointers are valid.

Threat Intelligence Overview

EPSS Score
0.2%
Top 94% exploitable
Prevalence
Low
specialized embedded RTOS; HAS profile limited to hearing-aid device niche
Data Quality
6 sources
Confidence: High

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

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

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

A null pointer dereference occurs when a program attempts to access memory through a pointer that has been set to NULL (address 0x0).

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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