Skip to main content

Zephyr RTOS CVE-2026-82962

| EUVDEUVD-2026-112266 MEDIUM
Out-of-bounds Write (CWE-787)
2026-10-28 zephyr
6.5
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

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

  1. Access
    Send forwardable IP/multicast traffic to device
  2. Delivery
    Packet re-targeted to Ethernet TX with zero reserved headroom
  3. Exploit
    net_buf_push underflows fragment data pointer
  4. Execution
    14/18-byte header written out of bounds over adjacent buffer or heap metadata
  5. Impact
    Memory corruption causes crash or heap inconsistency (DoS)

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, write limits
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

Exploitation requires the Zephyr device (4.1.0-4.4.2) to be built and deployed as a packet forwarder or tunnel endpoint: specifically with CONFIG_NET_IPV4_FORWARDING/CONFIG_NET_IPV6_FORWARDING enabled forwarding from a non-Ethernet L2 (802.15.4/OpenThread or PPP) out to Ethernet/Wi-Fi, OR IPv6 multicast forwarding of RX-slab clones, OR the IPIP tunnel sending an outer-IP packet over an attached Ethernet interface. The in-place header path must also be enabled via CONFIG_NET_L2_ETHERNET_RESERVE_HEADER, which ships default-y on nRF54L Wi-Fi zero-copy TX (NRF_WIFI_ZERO_COPY_TX) and on NXP Wi-Fi. The out-of-bounds write only actually occurs in production builds compiled WITHOUT CONFIG_ASSERT and WITHOUT CONFIG_NET_BUF_HARDENING (otherwise the push is asserted or returns NULL). Key limiting factors: plain Ethernet-to-Ethernet forwarding is NOT affected because ethernet_recv() pulls the header and leaves headroom; the attacker controls neither the written bytes nor the offset; and the whole vulnerable path depends on a non-default forwarding/tunnel configuration on specific platforms.

Impact

Signals are mostly consistent toward a moderate, availability-focused issue rather than an emergency. The CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:H, base 6.5) describes an unauthenticated, network-reachable but high-complexity flaw whose dominant impact is availability (crash/DoS) with only limited integrity impact and no confidentiality loss - matching the advisory's own statement that the attacker controls neither the written bytes nor the offset, so the outcome is memory corruption/crash/heap inconsistency, not controlled code execution. The vuln.today Decision label is this_month, not act_now or emergency. No EPSS score is provided, there is no CISA KEV listing (not actively exploited), and no public exploit identified at time of analysis - the only references are the vendor patch commit and the GHSA advisory, not PoC exploit code. The one notable conflict is the input 'RCE' tag, which is directly contradicted by the vendor's own impact analysis (uncontrolled write, no code execution); treat RCE as a mislabel, not a confirmed capability. AC:H is well justified here not by any race or timing but by the configuration dependency: the device must be acting as a forwarder/tunnel endpoint and be built without assertions. Net: a real but conditional issue best handled on a normal monthly patch cadence, not an actively-exploited priority.

Exploit ScenarioDerived

A Zephyr device configured to forward or tunnel traffic (e.g. IPv4/IPv6 forwarding from an 802.15.4/OpenThread/PPP interface out to Ethernet/Wi-Fi, IPv6 multicast forwarding, or an IPIP tunnel over Ethernet) receives attacker traffic from a remote or adjacent source. When the forwarded packet - allocated by a non-Ethernet L2 and therefore lacking reserved Ethernet headroom - is handed to Ethernet TX, net_buf_push writes 14 bytes (18 with VLAN) before the fragment's data block, corrupting a neighbouring buffer or allocator metadata. No public exploit is identified at time of analysis; the realistic result is a crash or heap inconsistency (DoS), not reliable code execution.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

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

Alert me

AnalysisAIv1 – Oct 28, 2026

Out-of-bounds write in Zephyr's Ethernet L2 layer (subsys/net/l2/ethernet/ethernet.c) lets a remotely sent packet that the device forwards from a non-Ethernet interface to Ethernet corrupt memory preceding the packet buffer, causing crashes, packet corruption or heap inconsistency (CWE-787, CVSS 6.5, availability-weighted). Affected releases are Zephyr 4.1.0 through 4.4.2 built with CONFIG_NET_L2_ETHERNET_RESERVE_HEADER (default-y on nRF54L and NXP Wi-Fi zero-copy TX configurations) plus a forwarding or tunnelling path such as CONFIG_NET_IPV4_FORWARDING/CONFIG_NET_IPV6_FORWARDING from 802.15.4/OpenThread or PPP to Ethernet/Wi-Fi, IPv6 multicast forwarding, or the IPIP tunnel - plain Ethernet-to-Ethernet forwarding is not affected. The write only materialises in production builds compiled without CONFIG_ASSERT and without CONFIG_NET_BUF_HARDENING; the attacker controls neither the bytes written nor the offset, and no public exploit has been identified at time of analysis (not in CISA KEV).

RemediationAI

The upstream fix is merged: commit b39f86ea61d0 on main (PR #117462) plus backports on v4.4-branch (PR #117875) and v4.3-branch (PR #117873); the project's projected fixed release is Zephyr 4.5.0, and users on 4.1.0-4.4.2 should track or cherry-pick those branch commits until 4.5.0 ships (advisory: https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-56gp-jq94-c9hh). Where the fix is not yet applied, the documented evidence points to two compensating build-time controls: enabling CONFIG_ASSERT or CONFIG_NET_BUF_HARDENING so that net_buf_simple_push() asserts or returns NULL on headroom underflow instead of writing out of bounds - the trade-off is that the packet send fails or the system halts rather than silently corrupting memory, plus assert/hardening code size and runtime cost in production. Disabling CONFIG_NET_L2_ETHERNET_RESERVE_HEADER removes the in-place path for deployments that do not need embedded VLAN link-layer headers, at the cost of an extra buffer fragment allocation per transmitted packet. Deployments that do not forward or tunnel traffic from a non-Ethernet L2 (802.15.4/OpenThread, PPP) into Ethernet/Wi-Fi, and that do not use IPv6 multicast forwarding or IPIP tunnelling, do not exercise the vulnerable path.

Affected VersionsENISA

Zephyr 4.1.0 ≤4.4.2

Affected Packages

euvd zephyr no fix

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

Zephyr's network stack hands packets between layers using net_buf fragments with reserved 'headroom' before the payload. ethernet_fill_header() can prepend the 14-byte Ethernet header (18 bytes with VLAN) in place by pushing it into the first fragment's headroom rather than allocating a separate header fragment. That in-place path was originally gated only on the build-time constant CONFIG_NET_L2_ETHERNET_RESERVE_HEADER, with no runtime verification that the packet actually carries the reserve, and then called net_buf_push(pkt->buffer, hdr_len). The headroom is only ever produced by ethernet_l2_alloc(), which net_pkt_alloc_buffer() invokes solely when is_pkt_tx() is true and the packet's interface is the Ethernet interface. Packets allocated by a different L2 and then handed to Ethernet therefore have little or no headroom: net_route_packet_if() re-targets a received packet to another interface, net_route_ipv6_mcast_forward_packet() forwards an RX-slab clone with no reserve, and the IPIP tunnel's interface_send() prepends an outer IP header allocated on the virtual interface (whose alloc hook exists only under VLAN). Because net_buf_simple_push() only asserts on the headroom bound, a build without CONFIG_ASSERT and without CONFIG_NET_BUF_HARDENING moves the fragment data pointer below its data block: with fixed-size pools this overwrites the tail of the neighbouring buffer's payload or memory preceding the pool array, and with variable-size pools it overwrites the buffer reference count and heap chunk header. The commit b39f86ea61d0 adds the guard (reserve_ll_header <= net_buf_headroom(pkt->buffer)) and otherwise falls back to a separate header fragment. Note that ethernet_recv() pulls the header, restoring 14/18 bytes of headroom, which is why Ethernet-to-Ethernet forwarding escapes the bug.

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

Unauthenticated forwarded traffic reaches the sink (PR:N/AV:N), but the non-default forwarding/tunnel config and no-assert build make it AC:H; impact is mainly crash (A:H) with incidental corruption (I:L), no disclosure (C:N).

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 VectorVendor: zephyr

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

DescriptionCVE.org

ethernet_fill_header() in subsys/net/l2/ethernet/ethernet.c can prepend the Ethernet header in place, by pushing it into the headroom of the packet's first fragment, instead of allocating a separate header fragment. Before this fix the in-place path was selected purely from the build-time value of CONFIG_NET_L2_ETHERNET_RESERVE_HEADER, with no check that the packet actually has that headroom, and then called net_buf_push(pkt->buffer, hdr_len). Only Ethernet TX allocations reserve that space: net_pkt_alloc_buffer() invokes the L2 alloc hook (ethernet_l2_alloc()) only when is_pkt_tx() is true and the packet's interface is the Ethernet interface.

A packet that was allocated by a different L2 and then handed to Ethernet for transmission therefore has too little (usually zero) headroom. Such packets are produced by ordinary routing and tunnelling paths: net_route_packet_if() re-targets a received packet to another interface when CONFIG_NET_IPV4_FORWARDING / CONFIG_NET_IPV6_FORWARDING are enabled (for example an 802.15.4/OpenThread or PPP interface forwarding to Wi-Fi/Ethernet), net_route_ipv6_mcast_forward_packet() forwards an RX-slab clone that carries no reserve, and the IPIP tunnel interface_send() prepends an outer IP header allocated on the virtual interface. In these configurations a remote or adjacent attacker triggers the condition simply by sending traffic that the device forwards.

Because net_buf_simple_push() only asserts on the headroom bound, a build without CONFIG_ASSERT (and without the newer CONFIG_NET_BUF_HARDENING) moves the fragment data pointer below the start of its data block and writes 14 bytes - 18 with VLAN - of Ethernet header out of bounds. With the default fixed-size buffer pools this overwrites the tail of the neighbouring buffer's payload or memory preceding the pool array; with variable-size pools it overwrites the buffer reference count and the heap chunk header. The attacker controls neither the written bytes nor the offset, so the practical impact is memory corruption leading to a crash, packet corruption, or heap inconsistency rather than controlled code execution. The fix takes the in-place path only when net_buf_headroom(pkt->buffer) is large enough and otherwise falls back to a separate header fragment.

Threat Intelligence Overview

Prevalence
Medium
widely used embedded/IoT RTOS, not a ubiquitous general-purpose OS
Data Quality
3 sources
Confidence: Low

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 MEDIUM
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

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

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.

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