Zephyr RTOS
CVE-2026-10648
MEDIUM
Severity by source
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Local vector confirmed by serial/UART/console-only attack path; PR:N because no authentication is enforced on the physical link itself; A:H for hard device fault; no confidentiality or integrity impact.
Primary rating from Vendor (zephyr).
CVSS VectorNVD
Lifecycle Timeline
2DescriptionNVD
mcumgr_serial_process_frag() in subsys/mgmt/mcumgr/transport/src/serial_util.c calls net_buf_reset() on the result of smp_packet_alloc() before checking it for NULL. smp_packet_alloc() uses net_buf_alloc(K_NO_WAIT) against the shared MCUmgr packet pool (CONFIG_MCUMGR_TRANSPORT_NETBUF_COUNT, default 4), which returns NULL when the pool is exhausted. In default builds the __ASSERT_NO_MSG in net_buf_reset is a no-op, so net_buf_simple_reset writes through the NULL pointer (buf->len = 0; buf->data = buf->__buf), causing a fault/crash. The fragment data reaches this code from attacker-controlled bytes on the MCUmgr serial/UART/shell-console transports (smp_uart.c, smp_raw_uart.c, smp_shell.c), and a fresh buffer is allocated at the start of essentially every new packet. An attacker on the serial/console link can flood the transport to drive the 4-entry buffer pool to exhaustion and induce the NULL dereference, crashing the device (denial of service). The defect was introduced after the original MCUmgr rework and shipped in Zephyr v4.4.0. The fix moves the NULL check ahead of net_buf_reset.
AnalysisAI
Denial of service in Zephyr RTOS v4.4.0 allows an attacker with access to a serial, UART, or shell-console interface to crash an affected embedded device by exhausting the MCUmgr shared buffer pool and triggering a NULL pointer dereference. The defect in mcumgr_serial_process_frag() (CWE-476) was introduced during the MCUmgr rework and manifests in default builds where assertion checks are compiled out, making the write-through-NULL a hard fault rather than a caught assertion. No public exploit has been identified at time of analysis and no CISA KEV listing exists, but exploitation is straightforward for any attacker with interface access.
Technical ContextAI
Zephyr RTOS (cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:*) is an open-source real-time operating system targeting resource-constrained embedded and IoT devices. Its MCUmgr subsystem provides a management protocol (SMP) over multiple transports including UART (smp_uart.c, smp_raw_uart.c) and shell-console (smp_shell.c). Each incoming SMP packet fragment triggers a buffer allocation from a shared kernel buffer pool sized by CONFIG_MCUMGR_TRANSPORT_NETBUF_COUNT (default 4). The root cause is CWE-476 (NULL Pointer Dereference): mcumgr_serial_process_frag() invokes net_buf_reset() on the pointer returned by smp_packet_alloc() without first checking whether the allocation succeeded. smp_packet_alloc() uses net_buf_alloc(K_NO_WAIT), which returns NULL immediately when the pool is exhausted rather than blocking. Because __ASSERT_NO_MSG is compiled out in default Zephyr builds, net_buf_simple_reset proceeds to write buf->len = 0 and buf->data = buf->__buf through the NULL pointer, causing a processor fault and device reset. The fix, available in upstream commit 6f363ec6, relocates the NULL guard ahead of the reset call.
RemediationAI
The upstream fix is available as commit 6f363ec6f7fd6ae9ed7ca2ae66fd9c82dce31c59 in the Zephyr project repository (https://github.com/zephyrproject-rtos/zephyr/commit/6f363ec6f7fd6ae9ed7ca2ae66fd9c82dce31c59); a patched tagged release version has not been independently confirmed from available data - project maintainers should monitor the Zephyr release channel for a version incorporating this fix. Developers building from source should cherry-pick or rebase to include the fix commit. As a compensating control, increasing CONFIG_MCUMGR_TRANSPORT_NETBUF_COUNT above the default of 4 raises the number of floods required to exhaust the pool, but does not eliminate the NULL dereference - it only makes the condition harder to trigger transiently. Disabling MCUmgr serial/UART/shell transport entirely (by removing CONFIG_MCUMGR_TRANSPORT_UART, CONFIG_MCUMGR_TRANSPORT_UDP_SMP, or CONFIG_MCUMGR_TRANSPORT_SHELL from the build configuration) is an effective workaround if the management interface is not required in production, with the trade-off of losing over-the-air firmware update and management capability. Physical access controls on serial/console ports reduce the attacker population but are not a software mitigation. The security advisory is at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-j64f-h3ww-f32c.
Potential off-by-one buffer overflow vulnerability in the Zephyr fuse file system. Rated critical severity (CVSS 10.0),
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
Buffer overflow in Zephyr RTOS dns_unpack_name() function causing OOB writes. PoC available.
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
Same weakness CWE-476 – NULL Pointer Dereference
View allSame technique Denial Of Service
View allShare
External POC / Exploit Code
Leaving vuln.today