Skip to main content

Zephyr RTOS CVE-2026-10672

| EUVDEUVD-2026-43699 CRITICAL
Out-of-bounds Read (CWE-125)
2026-07-14 zephyr
9.1
CVSS 3.1 · NVD
Share

Severity by source

Vendor (zephyr) PRIMARY
HIGH
qualitative
NVD
9.1 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H
vuln.today AI
8.1 HIGH

Network vector, but exploitation needs an authorized LwM2M server session (or weak-DTLS on-path), so PR:L; over-read yields high confidentiality/availability impact and no integrity change.

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

Primary rating from Vendor (zephyr).

CVSS VectorNVD

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

Lifecycle Timeline

7
Analysis Updated
Aug 06, 2026 - 17:58 vuln.today
v2 (cvss_changed)
Re-analysis Queued
Aug 06, 2026 - 17:52 vuln.today
cvss_changed
Severity Changed
Aug 06, 2026 - 17:52 NVD
HIGH CRITICAL
CVSS changed
Aug 06, 2026 - 17:52 NVD
8.2 (HIGH) 9.1 (CRITICAL)
Source Code Evidence Fetched
Jul 14, 2026 - 15:36 vuln.today
Analysis Generated
Jul 14, 2026 - 15:36 vuln.today
CVE Published
Jul 14, 2026 - 15:02 cve.org
HIGH 8.2

DescriptionNVD

subsys/net/lib/lwm2m/lwm2m_pull_context.c copied the firmware-update Package URI into a fixed static buffer (context.uri, size CONFIG_LWM2M_SWMGMT_PACKAGE_URI_LEN, default 128) with memcpy(context.uri, uri, LWM2M_PACKAGE_URI_LEN), copying exactly the destination size with no length validation. The Firmware-Update object stores the server-supplied Package URI (/5/0/1) in a 255-byte buffer, so a LwM2M management server (or an on-path attacker on a session lacking strong DTLS) can WRITE a URI of 128-254 characters; only the first 128 bytes are then copied into context.uri with no NUL terminator. That buffer is subsequently consumed as a C string by http_parser_parse_url(context.uri, strlen(context.uri), ...), strlen-based CoAP URI-path/PROXY-URI option appends, and lwm2m_parse_peerinfo(), causing an out-of-bounds read of adjacent static memory. The over-read bytes are appended to outbound CoAP requests (information disclosure of adjacent device memory to the server/proxy) and can crash the device (denial of service). The vulnerable copy was introduced by the pull-context refactor (first released in v3.0.0) and is present through v4.4.0; the default-on CONFIG_LWM2M_FIRMWARE_UPDATE_PULL_SUPPORT path is affected. The fix adds a strlen(uri) >= sizeof(context.uri) check returning -ENOMEM and switches to strcpy(), guaranteeing a bounded, NUL-terminated buffer.

AnalysisAI

Out-of-bounds read in the Zephyr RTOS LwM2M firmware-update pull client (lwm2m_pull_context.c) lets a malicious or compromised LwM2M management server - or an on-path attacker on a session without strong DTLS - leak adjacent device memory and crash devices by writing an over-long firmware Package URI (/5/0/1). Because the Firmware-Update object stores the URI in a 255-byte buffer but the pull context copies exactly 128 bytes into a fixed buffer with no NUL terminator, subsequent strlen-based parsing over-reads static memory that is then appended to outbound CoAP requests. It affects Zephyr 3.0.0 through 4.4.0 on the default-on CONFIG_LWM2M_FIRMWARE_UPDATE_PULL_SUPPORT path; there is no CISA KEV listing, EPSS is low (0.28%), and per the SSVC framework a proof-of-concept exists.

Technical ContextAI

The affected component is Zephyr's Lightweight M2M (LwM2M) implementation, a UDP/CoAP-based device-management protocol (OMA LwM2M) commonly secured with DTLS. The firmware-update 'pull' mechanism (object /5, Firmware Update; resource /5/0/1, Package URI) downloads firmware from a URI the management server writes into the device. The root cause is CWE-125 (out-of-bounds read) arising from an unterminated string: subsys/net/lib/lwm2m/lwm2m_pull_context.c performed memcpy(context.uri, uri, LWM2M_PACKAGE_URI_LEN), copying exactly the destination size (CONFIG_LWM2M_SWMGMT_PACKAGE_URI_LEN, default 128) with no length check and no NUL termination, even though the source Package URI buffer holds up to 255 bytes. The truncated, non-terminated buffer is then treated as a C string by http_parser_parse_url(context.uri, strlen(context.uri), ...), by strlen-based CoAP URI-Path/Proxy-URI option appends, and by lwm2m_parse_peerinfo(), so parsing runs past the 128-byte buffer into adjacent static memory. The over-read bytes are copied into outbound CoAP requests to the server/proxy (information disclosure) and can fault the device (denial of service). The bug was introduced by the pull-context refactor first released in v3.0.0; the CPE cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:* confirms the Zephyr project as the affected product.

RemediationAI

Vendor-released patch: Zephyr 4.5.0 - upgrade affected devices from any 3.0.0-4.4.0 build to 4.5.0 or later, or backport commit 99a164df5cea5af76e32b57c6d51854f018969a2, which adds a strlen(uri) >= sizeof(context.uri) guard returning -ENOMEM and replaces memcpy with strcpy to guarantee a bounded, NUL-terminated buffer. If you cannot rebuild firmware immediately, the most direct compensating control is to disable the firmware pull path by unsetting CONFIG_LWM2M_FIRMWARE_UPDATE_PULL_SUPPORT (trade-off: over-the-air pull-style FOTA via LwM2M is lost, so plan an alternative update mechanism); alternatively enforce strong, mutually-authenticated DTLS on all LwM2M sessions and restrict which management servers may write resource /5/0/1, which closes the on-path/rogue-server vector without removing FOTA but does not protect against an already-trusted-but-compromised server. Where feasible, also constrain or validate Package URI length before it reaches the device. Full details are in advisory GHSA-rf6j-4mpp-j9mf (https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-rf6j-4mpp-j9mf).

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-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-2026-1678 CRITICAL POC
9.4 Mar 05

Buffer overflow in Zephyr RTOS dns_unpack_name() function causing OOB writes. PoC available.

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

Share

CVE-2026-10672 vulnerability details – vuln.today

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