Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
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.
Primary rating from Vendor (zephyr).
CVSS VectorNVD
Lifecycle Timeline
4DescriptionNVD
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.
AnalysisAI
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.
Technical ContextAI
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.
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.
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-416 – Use After Free
View allSame technique Buffer Overflow
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-37115
GHSA-wqjx-hrch-347f