Skip to main content

Zephyr RTOS EUVDEUVD-2026-88473

| CVE-2026-18415 MEDIUM
Out-of-bounds Write (CWE-787)
2026-09-28 zephyr
6.3
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

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

  1. Access
    Gain unprivileged app-thread execution on device
  2. Delivery
    Open AF_PACKET RAW socket on 802.15.4 iface
  3. Exploit
    Call zsock_sendto() with oversized payload
  4. Execution
    Length checks skipped, net_buf_add_mem overruns 125-byte pool
  5. Persist
    Supervisor-mode OOB write corrupts adjacent kernel memory
  6. Impact
    Kernel crash or state compromise

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

Requires a build with CONFIG_NET_L2_IEEE802154_FRAGMENT enabled (the default whenever CONFIG_NET_6LO is set) so the vulnerable unfragmented copy branch exists. Exploitation is NOT possible over the air / from the radio - 6LoWPAN encode path length-checks IPv6 packets. It requires local on-device code that opens a NET_AF_PACKET socket (NET_SOCK_RAW, where the 6LoWPAN block is skipped, or NET_SOCK_DGRAM, which returns early on the address-family test) bound to an 802.15.4 interface, then sends a payload exceeding the 125-byte IEEE802154_MTU. For this to constitute a privilege-boundary crossing (unprivileged thread driving a supervisor-mode write via zsock_socket()/zsock_sendto() syscalls), the build must also have CONFIG_USERSPACE enabled; without CONFIG_USERSPACE the attacker already runs in-supervisor and this is a caller-side robustness defect only. Overrun size is limited to ~ll_hdr_len+3 bytes under the default CONFIG_NET_BUF_FIXED_DATA_SIZE (128 bytes) but can be much larger under CONFIG_NET_BUF_VARIABLE_DATA_SIZE.

Impact

The vendor CVSS 3.1 vector (AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:H, base 6.3) is internally consistent with the description and I concur with it. This is a genuine supervisor-mode out-of-bounds write (CWE-787) but its real-world risk is bounded by several factors that keep it out of the critical tier. Attack vector is local (AV:L): the flaw is explicitly NOT reachable from the radio - for IPv6/6LoWPAN traffic ieee802154_6lo_encode_pkt() length-checks the whole packet and diverts oversized frames to the fragmentation path, so the vulnerable unfragmented branch only sees in-bounds copies. It is only reachable by an on-device application opening a NET_AF_PACKET socket (RAW or DGRAM) bound to an 802.15.4 interface, where the 6LoWPAN length validation is skipped. Complexity is High (AC:H) because it requires the specific build config (CONFIG_NET_L2_IEEE802154_FRAGMENT, default when CONFIG_NET_6LO is set) and, for a security boundary to be crossed, CONFIG_USERSPACE so an unprivileged thread can drive the kernel write via zsock syscalls; without USERSPACE the attacker is already in-process and this is a robustness/reliability defect rather than a privilege boundary crossing. PR:L reflects the userspace-thread case. There is NO EPSS score, NO CISA KEV listing, and NO public exploit code referenced - exploitation status is therefore 'no public exploit identified at time of analysis.' The overrun magnitude is configuration-dependent: bounded to ~ll_hdr_len+3 bytes with the default 128-byte fixed buffers, but potentially much larger under CONFIG_NET_BUF_VARIABLE_DATA_SIZE. Net: a real, patch-worthy memory-corruption bug in a widely-deployed RTOS, but a narrow trigger and local-only vector make it low-to-medium operational priority rather than an urgent fire.

Exploit ScenarioDerived

On a Zephyr device built with CONFIG_NET_L2_IEEE802154_FRAGMENT and CONFIG_USERSPACE, an unprivileged application thread opens a NET_AF_PACKET RAW socket bound to the 802.15.4 interface and calls zsock_sendto() with a payload larger than the 125-byte IEEE802154_MTU. No length validation exists on that transmit path, so ieee802154_send() performs an unchecked net_buf_add_mem() into the fixed 125-byte tx_frame_buf_pool, writing attacker-chosen bytes past the buffer into adjacent kernel memory. No public exploit code is referenced; achieving controlled compromise rather than a crash requires favorable heap/pool adjacency (AC:H).

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.1% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 28, 2026

A supervisor-mode out-of-bounds write exists in the Zephyr RTOS 802.15.4 L2 transmit path: ieee802154_send() copies packet data into a fixed 125-byte frame buffer without validating the packet length on the unfragmented code path. On builds with CONFIG_NET_L2_IEEE802154_FRAGMENT (enabled by default with CONFIG_NET_6LO), local code that opens a NET_AF_PACKET socket (NET_SOCK_RAW, which skips the 6LoWPAN encoder, or NET_SOCK_DGRAM, which returns early on the address-family check) bound to an 802.15.4 interface can send a payload larger than IEEE802154_MTU and corrupt memory adjacent to the transmit buffer pool, causing a crash or further compromise of kernel state. The flaw is not reachable from the radio because ieee802154_6lo_encode_pkt() length-checks IPv6 packets and forces fragmentation; in a CONFIG_USERSPACE build an unprivileged thread can reach it through the zsock_socket()/zsock_sendto() syscalls, though the overrun is bounded to roughly ll_hdr_len + 3 bytes with the default fixed-size net_buf configuration. No public exploit code was identified at time of analysis and the vendor patch is available (commit 3d4c6177d2dbd77d12d9b14cd75a00cdbd826227).

RemediationAI

Vendor-released patch: apply the fix commit 3d4c6177d2dbd77d12d9b14cd75a00cdbd826227 (Zephyr security advisory GHSA-j76j-jrjc-xgvp), which validates ll_hdr_len + net_pkt_get_len(pkt) + authtag_len against IEEE802154_MTU and routes all copies through copy_pkt_to_frame() so oversized packets fail with -EMSGSIZE. Where updating is not immediately possible, remove the vulnerable branch by disabling CONFIG_NET_L2_IEEE802154_FRAGMENT (and therefore 6LoWPAN, CONFIG_NET_6LO) on 802.15.4 builds, at the cost of losing 6LoWPAN fragmentation and IPv6 support over 802.15.4, and disable CONFIG_NET_SOCKETS_PACKET so NET_AF_PACKET sockets cannot be created. Enabling CONFIG_ASSERT does not fix the defect - it only converts the silent overwrite into an assertion failure, which is itself a denial of service; enabling CONFIG_USERSPACE raises the exposure by letting unprivileged threads reach the path through zsock_socket()/zsock_sendto(), so restrict or audit threads granted socket syscalls. Because no public exploit code was identified at time of analysis and the weakness requires local on-device code, the patch is the only mitigation that removes the out-of-bounds write.

Affected VersionsENISA

Zephyr 3.2.0 <4.4.2

Affected Packages

euvd zephyr fix: 4.4.2

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 IEEE 802.15.4 link layer (subsys/net/l2/ieee802154/ieee802154.c) transmits frames from a single fixed-size buffer pool sized to IEEE802154_MTU (125 bytes). When 6LoWPAN fragmentation support is compiled in (CONFIG_NET_L2_IEEE802154_FRAGMENT, default with CONFIG_NET_6LO), ieee802154_send() has a branch for packets that do not require fragmentation, and that branch performed an unchecked net_buf_add_mem(frame_buf, pkt_buf->data, pkt_buf->len). The only length guard was __ASSERT_NO_MSG() inside net_buf_simple_add(), which is compiled out unless CONFIG_ASSERT is set, so oversized data silently overran the frame buffer. This is CWE-787 (out-of-bounds write): the copy length is derived from attacker-influenced packet data rather than from the destination buffer's tailroom. The normal IPv6 path is safe because ieee802154_6lo_encode_pkt() compares the whole packet length against IEEE802154_MTU and selects fragmentation when it does not fit; the gap appears for NET_AF_PACKET/TCP-IP-offload-style traffic where either the 6LoWPAN block is skipped (NET_SOCK_RAW) or it returns early on the address-family test (NET_SOCK_DGRAM), leaving net_context_sendto(), net_if_tx() and pkt_buffer_length() with no clamping for this L2. The fix adds a length check (ll_hdr_len + net_pkt_get_len(pkt) + authtag_len against IEEE802154_MTU) and a copy_pkt_to_frame() helper that verifies tailroom, returns -EMSGSIZE instead of overflowing, and linearizes the entire net_buf chain into one MAC frame. Overrun severity depends on net_buf configuration: with the default CONFIG_NET_BUF_FIXED_DATA_SIZE of 128 bytes it is limited to about ll_hdr_len + 3 bytes, while CONFIG_NET_BUF_VARIABLE_DATA_SIZE permits a single storage buffer as large as CONFIG_NET_PKT_BUF_TX_DATA_POOL_SIZE, making the write substantially larger.

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

Local AF_PACKET socket access only (AV:L); requires specific FRAGMENT/USERSPACE build config and favorable memory layout (AC:H); unprivileged userspace thread (PR:L); OOB write corrupts kernel state (I:H/A:H) with no disclosure (C:N).

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

Primary rating from Vendor (zephyr).

CVSS VectorVendor: zephyr

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

DescriptionCVE.org

ieee802154_send() in subsys/net/l2/ieee802154/ieee802154.c copies the outgoing packet into a single fixed 125-byte transmit buffer (tx_frame_buf_pool, sized IEEE802154_MTU). In builds with CONFIG_NET_L2_IEEE802154_FRAGMENT enabled (the default whenever CONFIG_NET_6LO is set), the branch taken when 6LoWPAN fragmentation is not required performed an unchecked net_buf_add_mem(frame_buf, pkt_buf->data, pkt_buf->len). The only guard was __ASSERT_NO_MSG() inside net_buf_simple_add(), which is compiled out without CONFIG_ASSERT, so an oversized packet silently overran the frame buffer.

The defect is not reachable from the radio: for NET_AF_INET6 packets ieee802154_6lo_encode_pkt() compares the whole packet length against IEEE802154_MTU and takes the fragmentation path when it does not fit, so every buffer copied on the unfragmented branch is within bounds. It is reachable through NET_AF_PACKET sockets bound to an 802.15.4 interface: for NET_SOCK_RAW the 6LoWPAN block is skipped entirely and for NET_SOCK_DGRAM it returns early on the address-family test, leaving no length validation anywhere on the transmit path (net_context_sendto() and net_if_tx() apply none, and pkt_buffer_length() does not clamp the allocation for this L2).

An application - or, in a CONFIG_USERSPACE build, an unprivileged application thread using the zsock_socket()/zsock_sendto() syscalls - can therefore drive a supervisor-mode out-of-bounds write of chosen bytes past the 125-byte pool buffer. With the default CONFIG_NET_BUF_FIXED_DATA_SIZE of 128 bytes the overrun is bounded to roughly ll_hdr_len + 3 bytes; with CONFIG_NET_BUF_VARIABLE_DATA_SIZE a single storage buffer can be as large as CONFIG_NET_PKT_BUF_TX_DATA_POOL_SIZE, making the overrun far larger. The consequence is corruption of memory adjacent to the pool, with a crash or further compromise of kernel state as the practical impact.

The fix validates ll_hdr_len + net_pkt_get_len(pkt) + authtag_len against IEEE802154_MTU before any copy and adds a tailroom-checking copy_pkt_to_frame() helper that returns -EMSGSIZE instead of overrunning the buffer. The same change also linearizes the whole net_buf chain into one MAC frame, so packet storage boundaries no longer become frame boundaries on the wire.

Threat Intelligence Overview

EPSS Score
0.1%
Top 99% exploitable
Prevalence
High
Zephyr is a widely-deployed open-source RTOS for embedded/IoT devices
Data Quality
6 sources
Confidence: High

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 0.1%
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
Defer
Exploitation
None
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

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