Zephyr RTOS
CVE-2026-15892
MEDIUM
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconIdentify Zephyr device with reachable SMP transport
-
DeliverySend repeated settings read/write/delete SMP commands with arbitrary key names
-
ExploitAccess hook rejects each command via MGMT_CB_ERROR_RC
-
Installk_malloc() heap buffers leaked on every rejection
-
C2Heap monotonically exhausted across sustained request stream
-
Executek_malloc() failures deny mcumgr service and degrade other heap consumers
-
ImpactDevice requires reboot to recover
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Resource cleanup, leak prevention
|
| Exploitation Conditions | Three Kconfig conditions must ALL be simultaneously true in the firmware build: (1) CONFIG_MCUMGR_GRP_SETTINGS_BUFFER_TYPE_HEAP must be explicitly selected - the default is the stack buffer type, so this requires a deliberate developer choice; (2) CONFIG_MCUMGR_GRP_SETTINGS_ACCESS_HOOK must be enabled, meaning the application registers a callback to control settings access; and (3) the registered access hook must return MGMT_CB_ERROR_RC (not MGMT_CB_ERROR_RSN or success) to reject a request - MGMT_CB_ERROR_RC is a common rejection style but is not the only option. The SMP transport must also be reachable: exploitation over BLE requires the attacker to be within radio range and the device to accept SMP without pairing; over UDP, the device must be network-reachable. UART transport requires physical access. The access hook itself - the mechanism intended to block unauthorized access - paradoxically enables the leak when used with MGMT_CB_ERROR_RC, so the very security control triggers the vulnerability. |
| Impact | The vendor-assigned CVSS 5.3 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L) overstates the real-world attack complexity because it does not account for the triple configuration prerequisite: heap buffer type, access hook enabled, and a hook that returns MGMT_CB_ERROR_RC specifically. A more accurate assessment would set AC:H, yielding a score closer to 3.7. While EPSS data was not supplied, the niche configuration conditions and embedded-only deployment model suggest a low exploitation probability in practice; even a mid-sized municipal IT team in walbrzych running smart-building IoT infrastructure would need to audit which Zephyr firmware images actually select all three Kconfig options before treating this as urgent. There is no KEV listing and no public exploit, and the impact ceiling is a soft availability denial (gradual heap exhaustion) with no data loss or code execution. The most practically dangerous scenario is a product that intentionally exposes SMP over UDP or BLE to untrusted endpoints and whose firmware developer chose MGMT_CB_ERROR_RC as the hook rejection style - a common but not universal pattern. |
| Exploit ScenarioDerived | An attacker within Bluetooth LE range (or UDP network reach) of a vulnerable Zephyr device sends a rapid stream of SMP settings read commands for arbitrary key names. Each request is rejected by the access hook with MGMT_CB_ERROR_RC, but the key_name and data buffers allocated by k_malloc() are never freed. After hundreds or thousands of requests - depending on the device's heap size - k_malloc() begins failing for the entire system, causing mcumgr operations and any other heap-dependent firmware component to malfunction until the device is power-cycled. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 13, 2026
Heap memory exhaustion in Zephyr RTOS mcumgr SMP settings handlers allows unauthenticated attackers to trigger a monotonic heap leak by sending settings read, write, or delete commands that the application access hook rejects, ultimately depleting the kernel heap until the device must be rebooted. The three affected handlers - settings_mgmt_read(), settings_mgmt_write(), and settings_mgmt_delete() in subsys/mgmt/mcumgr/grp/settings_mgmt/src/settings_mgmt.c - allocate buffers via k_malloc() but execute a direct return bypassing the end: cleanup label whenever CONFIG_MCUMGR_GRP_SETTINGS_ACCESS_HOOK rejects a request via MGMT_CB_ERROR_RC. The vulnerability is availability-only with no memory corruption or information disclosure; no public exploit code or CISA KEV listing exists at time of analysis.
RemediationAI
Apply commit fabc488d5b44143e5bd70dd373182c4395a816b9 from the zephyrproject-rtos/zephyr repository, which adds explicit k_free() calls for key_name and data in all three handler functions immediately before the return ret_rc; path under CONFIG_MCUMGR_GRP_SETTINGS_BUFFER_TYPE_HEAP guards. A vendor-tagged release version containing this fix is not independently confirmed beyond the commit reference; track the upstream Zephyr release notes at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-rq68-wgv4-hcq3 for the patched version. If patching is not immediately feasible, the most effective workaround is switching to the default stack buffer type (omitting CONFIG_MCUMGR_GRP_SETTINGS_BUFFER_TYPE_HEAP) - this eliminates the leak path entirely at the cost of heap flexibility for large key names. Alternatively, modifying the access hook to return MGMT_CB_ERROR_RSN instead of MGMT_CB_ERROR_RC avoids the leaking code path, but this may alter the SMP error response semantics visible to management clients. Restricting SMP transport access (e.g., disabling the UDP SMP transport or enforcing BLE pairing requirements) limits the attacker's ability to send high-volume rejected requests but does not fix the underlying leak.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Zephyr RTOS's mcumgr (Micro Controller Management) subsystem implements the Simple Management Protocol (SMP) for remote device management over Bluetooth LE, UART, or UDP transports. The settings management group (CONFIG_MCUMGR_GRP_SETTINGS) provides read, write, and delete operations for Zephyr's key-value settings subsystem. When CONFIG_MCUMGR_GRP_SETTINGS_BUFFER_TYPE_HEAP is selected (as opposed to the default stack buffer), the handlers allocate key_name and (for read) data buffers via k_malloc() and rely on a goto end: pattern to call k_free() on the way out. CWE-401 (Missing Release of Memory after Effective Lifetime) manifests because the MGMT_CB_ERROR_RC rejection path in the access hook callback exits via return ret_rc rather than goto end:, bypassing all k_free() calls. The affected CPE is cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:*, indicating all tracked Zephyr versions with the relevant Kconfig options enabled.
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:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
AC:H reflects the triple Kconfig prerequisite (heap buffer type, access hook, MGMT_CB_ERROR_RC rejection); AV:N preserves worst-case UDP transport; A:L for gradual heap exhaustion.
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
DescriptionCVE.org
The mcumgr SMP settings-management group handlers settings_mgmt_read(), settings_mgmt_write(), and settings_mgmt_delete() in subsys/mgmt/mcumgr/grp/settings_mgmt/src/settings_mgmt.c allocate a key_name buffer (and, for read, a data buffer) via k_malloc() when CONFIG_MCUMGR_GRP_SETTINGS_BUFFER_TYPE_HEAP is enabled, relying on the end: label to k_free() them. When CONFIG_MCUMGR_GRP_SETTINGS_ACCESS_HOOK is also enabled and the application access hook rejects a request by returning status MGMT_CB_ERROR_RC, the handler executed return ret_rc; directly, bypassing end: and leaking the heap allocation on every rejected request.
The settings handlers are reachable over the unauthenticated SMP transport (Bluetooth LE, UART, or UDP, depending on product configuration). The access hook is the mechanism applications use to deny unauthorized settings access, and MGMT_CB_ERROR_RC is a common rejection style, so an attacker who can send settings read/write/delete commands that the hook rejects triggers a heap leak on each attempt.
Because the leaked memory is never reclaimed until reboot, a sustained stream of rejected requests monotonically exhausts the kernel heap until k_malloc() fails, denying mcumgr service and impacting any other heap consumer on the device - a denial of service. The impact is availability-only; there is no memory corruption or information disclosure. Only configurations that select the heap buffer type, enable the access hook, and register a hook that returns MGMT_CB_ERROR_RC are affected (the default stack buffer type cannot leak).
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Affected Products (CPE)CVE.org
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
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB