Skip to main content

Zephyr RTOS EUVDEUVD-2026-37115

| CVE-2026-10638 HIGH
Use After Free (CWE-416)
2026-06-16 zephyr GHSA-wqjx-hrch-347f
7.5
CVSS 3.1 · NVD
View

Attack ChainAIDerived

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

  1. Access
    Attain IPv6 network reachability to Zephyr device
  2. Delivery
    Send ICMPv6 Echo Request or error-eliciting IPv6 packet
  3. Exploit
    Zephyr ICMPv6 handler transfers packet to net_try_send_data()
  4. Execution
    Packet memory slab freed before statistics update executes
  5. Persist
    net_pkt_iface() dereferences freed memory
  6. Impact
    Crash (DoS) or write through stale iface pointer corrupts memory (CONFIG_NET_STATISTICS_PER_INTERFACE)

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Memory lifecycle management
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The target must run Zephyr RTOS v4.2.0-v4.4.0 compiled with CONFIG_NET_NATIVE_IPV6=y. The vulnerability is triggered by receiving any ICMPv6 Echo Request (ping6) or any IPv6 packet that causes Zephyr to generate an ICMPv6 error message - specifically: a packet with an unknown next header type, a fragment reassembly timeout condition, or a destination unreachable condition. No authentication is required (CVSS PR:N confirmed). The most reliable exploitation path, eliminating the race condition, requires CONFIG_NET_TC_TX_COUNT == 0 (no TX queue, synchronous free in RX thread). The write-through memory corruption escalation additionally requires CONFIG_NET_STATISTICS_PER_INTERFACE=y. Limiting factors: the attacker must have IPv6 network reachability to the device; IPv4-only builds are not vulnerable to this CVE; devices with CONFIG_NET_TC_TX_COUNT > 0 retain a timing-dependent race that raises practical exploitation complexity.

Impact

The CVSS 3.1 score of 5.9 (AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H) captures network reachability and unauthenticated access, but AC:H reflects a race condition that is not uniformly applicable. For deployments with CONFIG_NET_TC_TX_COUNT == 0, the free occurs synchronously in the RX thread, eliminating the race entirely and making the UAF deterministic - real-world exploitation difficulty for those configurations is significantly lower than AC:H implies, and the effective risk is closer to a 7.5 (AV:N/AC:L) scenario. The CVSS vector records I:N, but the description explicitly states that CONFIG_NET_STATISTICS_PER_INTERFACE enables a write through an attacker-influenced stale pointer, which is a material integrity impact not reflected in the published score; this represents a meaningful discrepancy. EPSS data was not provided in source intelligence. The vulnerability is not in the CISA KEV catalog and no public exploit code has been identified at time of analysis. For embedded and IoT deployments running Zephyr - such as industrial control systems, medical devices, or connected embedded platforms - even a remote crash carries high operational consequence given the absence of hot-patching capabilities. The availability of the triggering primitive (a standard ICMPv6 ping) lowers the bar for denial-of-service attacks significantly.

Exploit ScenarioDerived

An attacker with network reachability to a Zephyr-based embedded device's IPv6 address sends a standard ICMPv6 Echo Request (ping6); on a device with no TX queue (CONFIG_NET_TC_TX_COUNT == 0), the Zephyr ICMPv6 handler constructs a reply, passes the original packet to net_try_send_data(), and the memory slab is freed synchronously before control returns to the statistics update code, which then dereferences the freed net_pkt. If CONFIG_NET_STATISTICS_PER_INTERFACE is enabled, the stale net_if * pointer is written through, potentially corrupting adjacent memory structures and crashing the network stack or enabling further exploitation. No public proof-of-concept code has been identified at time of analysis, but the trigger requires only a standard ICMPv6 ping available in any Linux or Windows host.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Jun 16, 2026

Use-after-free in Zephyr RTOS's ICMPv6 stack (v4.2.0-v4.4.0) allows an unauthenticated remote attacker to crash the networking stack and potentially corrupt memory by sending a standard ICMPv6 Echo Request or any IPv6 packet that elicits an ICMPv6 error response. Both icmpv6_handle_echo_request() and net_icmpv6_send_error() call net_pkt_iface() on a packet after transferring it to net_try_send_data(), which may synchronously or asynchronously free the packet's memory slab before the statistics update executes. When CONFIG_NET_STATISTICS_PER_INTERFACE is enabled, the stale interface pointer is written through (iface->stats.icmp.sent++), escalating the read UAF into an attacker-influenced memory write; no public exploit has been identified at time of analysis, but the trigger is a universally available IPv6 primitive.

RemediationAI

Apply upstream fix commit 09c8578c66b517c5165cde53332ed5d8d8ef2cfc from the Zephyr project repository (https://github.com/zephyrproject-rtos/zephyr/commit/09c8578c66b517c5165cde53332ed5d8d8ef2cfc), which caches the net_if *iface pointer before invoking net_try_send_data() in both icmpv6_handle_echo_request() and net_icmpv6_send_error(), ensuring all subsequent statistics updates use the pre-captured pointer rather than re-dereferencing the potentially freed packet. Also apply sibling commit 86e21665d46 to close the identical ICMPv4 code path. An exact tagged release version incorporating this fix is not independently confirmed from available data - verify with Zephyr project release notes and the advisory at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-m92g-94xv-wvw2. If immediate patching is not feasible, disabling CONFIG_NET_NATIVE_IPV6 in the Kconfig build eliminates the attack surface entirely but removes IPv6 networking capability. Alternatively, disabling CONFIG_NET_STATISTICS_PER_INTERFACE removes the write-through escalation path, reducing worst-case impact to a read UAF and crash while preserving IPv6 functionality, though denial-of-service risk remains. Setting CONFIG_NET_TC_TX_COUNT to a non-zero value introduces a TX queue, converting the synchronous free to an asynchronous one and restoring AC:H timing dependency, but does not eliminate the vulnerability.

Affected VersionsENISA

Zephyr 4.2.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 vulnerability resides in Zephyr RTOS's native IPv6 ICMPv6 implementation (subsys/net/ip/icmpv6.c) and is classified as CWE-416 (Use After Free). CPE cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:* confirms affected versions as approximately 4.2.0 through 4.4.0 with CONFIG_NET_NATIVE_IPV6 enabled. The root cause is that net_pkt_iface() - which dereferences a pointer embedded in a net_pkt structure - is called after the packet has been handed to net_try_send_data(). The Zephyr send path (net_try_send_data → net_if_tx) unreferences and may free the packet back to its memory slab before returning; net_core.c already documents this hazard and caches the interface pointer before sending, but the ICMPv6 subsystem did not follow the same pattern. When CONFIG_NET_TC_TX_COUNT == 0 (no TX queue configured), the free occurs synchronously in the RX thread, making the race deterministic rather than timing-dependent. When CONFIG_NET_STATISTICS_PER_INTERFACE is also set, the stale net_if * pointer is dereferenced and written through, turning the UAF read into a write through an attacker-influenceable pointer. The identical bug exists in the ICMPv4 path and is addressed by sibling commit 86e21665d46.

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

I:L added over vendor I:N because CONFIG_NET_STATISTICS_PER_INTERFACE enables attacker-influenced write through stale pointer; AC:H retained for non-deterministic race in default TX-queue configurations.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:H
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:L/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
None
Integrity
None
Availability
High

Lifecycle Timeline

2
Severity Changed
Jul 01, 2026 - 14:52 NVD
MEDIUM HIGH
CVSS changed
Jul 01, 2026 - 14:52 NVD
5.9 (MEDIUM) 7.5 (HIGH)

DescriptionNVD

subsys/net/ip/icmpv6.c reads the network interface from a net_pkt after that packet has been handed to net_try_send_data(). In icmpv6_handle_echo_request() and net_icmpv6_send_error(), the post-send statistics update calls net_pkt_iface(reply)/net_pkt_iface(pkt) on the just-sent packet. The send path (net_try_send_data - net_if_tx) unreferences and may free the packet back to its memory slab before returning - synchronously in the RX thread when no TX queue is configured (CONFIG_NET_TC_TX_COUNT == 0), and asynchronously the driver/L2 may already have freed it otherwise. net_pkt_iface() therefore dereferences a freed (and possibly reused) net_pkt; with CONFIG_NET_STATISTICS_PER_INTERFACE the stale iface pointer is further dereferenced and written through (iface-stats.icmp.sent++), turning the use-after-free read into a write through an attacker-influenceable pointer. The core stack already documents this hazard in net_core.c ("do not use pkt after that call") and caches iface before sending; the ICMPv6 callers did not. An unauthenticated remote attacker triggers the flaw simply by sending an ICMPv6 Echo Request (ping) or an IPv6 packet that elicits an ICMPv6 error (unknown next header, fragment reassembly timeout, destination unreachable), leading to denial of service via crash and potential memory corruption. Affected: Zephyr networking with CONFIG_NET_NATIVE_IPV6, roughly v4.2.0 through v4.4.0. The fix caches the interface pointer before sending and uses it for all statistics updates; the sibling commit 86e21665d46 fixes the identical bug in ICMPv4.

Threat Intelligence Overview

EPSS Score
0.3%
Top 74% exploitable
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

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 HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
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.

Use-after-free vulnerabilities occur when a program continues to access memory through a pointer after that memory has been deallocated.

Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.

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