Skip to main content

Zephyr RTOS EUVDEUVD-2026-97113

| CVE-2026-19577 HIGH
Out-of-bounds Read (CWE-125)
2026-10-11 zephyr
7.1
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

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

  1. Access
    Gain same-link adjacent network access
  2. Delivery
    Send RA lacking SLLAO or elicit NS traffic
  3. Exploit
    Create persistently unresolved/INCOMPLETE neighbor entry
  4. Execution
    Send unicast IPv6 packet to that neighbor
  5. Impact
    OOB read panics device or leaks static RAM

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, read limits
MITRE ATT&CK

1 technique across 1 tactic: Collection

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

Exploitation Conditions

Requires the Zephyr IPv6 stack with a neighbor cache enabled; CONFIG_NET_IPV6_ROUTE is on by default whenever the IPv6 neighbor cache is, so NO router or forwarding configuration is needed. The attacker must be on the same link (AV:A, adjacent) and unauthenticated (PR:N), and must first drive a neighbor into the unresolved state - either by eliciting traffic to a spoofed non-existent neighbor (creating an INCOMPLETE entry via net_ipv6_send_ns) or by sending a Router Advertisement with no source link-layer address option (creating a persistently unresolved router neighbor) - then send a unicast packet whose destination is that neighbor and not a local address on the receiving interface. The concrete outcome is gated by build configuration: CONFIG_ASSERT enabled yields a guaranteed panic/DoS, while CONFIG_ASSERT disabled yields the bounded ~8-byte static-RAM information disclosure. Limiting factors: local-link adjacency only (not routable/internet-reachable), impact offset is fixed and not attacker-controlled, leak length is capped and gated by the NET_LINK_ADDR_MAX_LENGTH check, and there is no out-of-bounds write.

Impact

The input CVSS 3.1 vector (AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H = 7.1 High) is internally consistent with the description: exploitation requires an attacker on the same link (adjacent, not full network/internet reach), no authentication (PR:N), and no user interaction, with the primary impact being a repeatable remote denial of service (A:H) and a secondary limited information disclosure (C:L). My independent assessment agrees with this vector. No EPSS score was provided, and the vulnerability is NOT in CISA KEV, so exploitation status is 'no public exploit identified at time of analysis' - there is no evidence of active exploitation or public POC. SSVC-style reasoning: technical impact is partial (bounded - no OOB write, offset is not attacker-controlled, leak is capped at ~8 bytes of non-attacker-chosen static RAM), and the attack is only partially automatable because it is constrained to the local link. The realistic priority is MODERATE and heavily deployment-dependent: the AV:A adjacency requirement means this is not internet-wide mass-exploitable, so it matters most for embedded/IoT devices exposed to untrusted local networks (shared Wi-Fi, field buses, hostile LAN segments). The DoS branch (CONFIG_ASSERT enabled, the common debug/safety build) is trivially reliable; the info-leak branch (assertions disabled) is lower-value and uncontrolled. This is a legitimately patchable High-severity local-link issue, not an overstated high-CVSS/low-real-risk case, but it is not a drop-everything internet-facing emergency either.

Exploit ScenarioDerived

An attacker sharing the local link with a Zephyr-based device sends a Router Advertisement with no source link-layer address option (or elicits traffic to a spoofed non-existent neighbor so a Neighbor Solicitation creates an INCOMPLETE cache entry), leaving a neighbor persistently unresolved with idx == NET_NBR_LLADDR_UNKNOWN (0xff). The attacker then sends a unicast IPv6 packet destined to that neighbor address, reaching net_route_ipv6_packet(), which calls net_nbr_get_lladdr(0xff) and reads ~2.5 KB past the neighbor link-layer array. On CONFIG_ASSERT builds the device panics (reliable remote DoS); with assertions disabled, up to 8 bytes of unrelated static RAM may be copied into an outgoing frame and leaked on the link. No public exploit code was identified at time of analysis.

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

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

Alert me

AnalysisAIv1 – Oct 11, 2026

An unauthenticated attacker on the same link can crash or partially leak memory from Zephyr IPv6 devices by sending a unicast packet to a neighbor entry that is still in the unresolved state: net_route_ipv6_packet() reads the link-layer address at index NET_NBR_LLADDR_UNKNOWN (0xff) and returns a pointer roughly 2.5 KB past the end of the neighbor link-layer address array. Because builds with CONFIG_ASSERT enabled fire the misplaced assertion and panic, the primary outcome is a repeatable remote denial of service (CVSS 7.1, AV:A/AC:L/PR:N/UI:N, A:H), while builds with assertions disabled instead copy up to 8 bytes of unrelated static RAM into the destination link-layer address of the outgoing frame, disclosing them to any listener (C:L). Exploitation requires no router or forwarding configuration: CONFIG_NET_IPV6_ROUTE is enabled by default whenever the IPv6 neighbor cache is, and the attacker only needs to first force a neighbor into the unresolved state (e.g. by eliciting traffic to a spoofed non-existent address, or by sending a Router Advertisement without a source link-layer address option) before sending the trigger packet. No public exploit code was identified at time of analysis.

RemediationAI

Upstream fix available (PR/commit); released patched version not independently confirmed - apply the change in commit b0b0e8973d1967114adbb9ed1611d448b5a46519, which adds a check in net_route_ipv6_packet() (subsys/net/ip/route_ipv6.c) that returns -ESRCH when nbr->idx == NET_NBR_LLADDR_UNKNOWN, and track the vendor advisory at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-vv76-4m89-95q5 for the confirmed fixed revision. If the patch cannot be deployed immediately, the most effective compensating control is to disable the vulnerable path by turning off CONFIG_NET_IPV6_ROUTE (and/or the IPv6 neighbor cache, CONFIG_NET_IPV6_NBR_CACHE=n) on builds that do not need IPv6 forwarding or neighbor discovery - the trade-off is that IPv6 packets to non-local destinations will no longer be routed and neighbor discovery caching is lost, which may break legitimate multi-hop IPv6 operation. Note that enabling CONFIG_ASSERT is not a mitigation: it converts the information disclosure into a deterministic panic and thus makes the denial-of-service outcome reliably reachable, so do not rely on assertions as a safeguard. Because exploitation requires same-link adjacency (AV:A), segmenting or isolating the IPv6 link and filtering inbound IPv6 traffic from untrusted nodes - including Router Advertisements lacking a source link-layer address option - reduces exposure, at the cost of restricting legitimate neighbor discovery on that segment. There is no out-of-bounds write and the leaked region is limited and non-attacker-controlled, so no memory-integrity cleanup is required beyond applying the fix.

Affected VersionsENISA

Zephyr 1.8.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 flaw is a CWE-125 out-of-bounds read in the Zephyr network stack (CPE cpe:2.3:a:zephyrproject:zephyr) within net_route_ipv6_packet() in subsys/net/ip/route_ipv6.c. When resolving a next hop, the code calls net_nbr_get_lladdr(nbr->idx) without verifying that the neighbor cache entry actually has a valid link-layer address; an unresolved entry carries idx NET_NBR_LLADDR_UNKNOWN (0xff), and net_nbr_get_lladdr() in subsys/net/ip/nbr.c has no runtime bounds check beyond a NET_ASSERT, so it returns &net_neighbor_lladdr[255]. With the default CONFIG_NET_IPV6_MAX_NEIGHBORS of 8, that pointer lands about 2.5 KB beyond the end of the array. The returned pointer is never NULL, so the subsequent lladdr NULL guard cannot catch the condition. The vulnerable path is reached from ipv6_route_packet() in subsys/net/ip/ipv6.c for every received unicast IPv6 packet whose destination is not a local address on the receiving interface, and net_route_ipv6_get_info() returns the packet's own destination as the next hop when a neighbor cache entry exists for it - the lookup does not skip INCOMPLETE entries, which is what makes the unresolved state reachable. The upstream fix adds an explicit check for nbr->idx == NET_NBR_LLADDR_UNKNOWN in route_ipv6.c and returns -ESRCH instead of dereferencing the bogus index. Impact is bounded by design: the out-of-bounds offset is fixed rather than attacker-controlled, there is no out-of-bounds write, and the leak length is capped at 8 bytes and gated by the NET_LINK_ADDR_MAX_LENGTH check.

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

Same-link attacker (AV:A), no auth or interaction (PR:N/UI:N), reliable panic drives A:H, with only a small bounded RAM leak (C:L) and no integrity impact (I:N).

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

Primary rating from Vendor (zephyr).

CVSS VectorVendor: zephyr

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

DescriptionCVE.org

net_route_ipv6_packet() in subsys/net/ip/route_ipv6.c resolved the nexthop's link-layer address with net_nbr_get_lladdr(nbr->idx) without first checking whether the neighbor cache entry actually had a linked link-layer address. An unresolved neighbor carries idx NET_NBR_LLADDR_UNKNOWN (0xff), and net_nbr_get_lladdr() in subsys/net/ip/nbr.c performs no runtime bounds check beyond a NET_ASSERT, returning &net_neighbor_lladdr[255] - roughly 2.5 KB past the end of an array whose default size is CONFIG_NET_IPV6_MAX_NEIGHBORS (8). Because the returned pointer is never NULL, the following lladdr NULL guard does not catch it.

The function is reached from ipv6_route_packet() in subsys/net/ip/ipv6.c for every received unicast IPv6 packet whose destination is not a local address on the receiving interface; CONFIG_NET_IPV6_ROUTE is enabled by default whenever the IPv6 neighbor cache is, so no router or forwarding configuration is needed. net_route_ipv6_get_info() returns the packet's destination itself as the nexthop when a neighbor cache entry for it exists, and the cache lookup does not skip INCOMPLETE entries. An unauthenticated attacker on the same link can therefore force the unresolved state - for example by eliciting traffic to a spoofed, non-existent neighbor address so that net_ipv6_send_ns() creates an INCOMPLETE entry, or by sending a Router Advertisement with no source link-layer address option, which creates a persistently unresolved router neighbor - and then send a packet addressed to that neighbor.

The result is an out-of-bounds read at a fixed index past the neighbor link-layer address array. On builds with CONFIG_ASSERT enabled the assertion fires and the device panics, giving a repeatable remote denial of service. With assertions disabled, the stale out-of-bounds struct net_linkaddr drives a memcmp() over an attacker-uninfluenced length and, when its len byte passes the NET_LINK_ADDR_MAX_LENGTH check, up to 8 bytes of unrelated static RAM are copied into the outgoing frame's destination link-layer address and transmitted on the link, disclosing them to any listener. There is no out-of-bounds write and the offset is not attacker-controlled, which bounds the impact.

Technical POC Analysis

CWE-125 out-of-bounds read in netrouteipv6packet() at subsys/net/ip/routeipv6.c:513-540.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Zephyr IPv6 devices are exposed to an unauthenticated adjacent-network attacker who can repeatedly crash affected systems and cause limited memory disclosure. No public exploit identified at time of analysis, but the low attack complexity and lack of authentication make this a priority for embedded and IoT fleets. Leadership should care because availability disruptions and potential memory leakage can affect device operations and data confidentiality across deployed products.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 89% exploitable
Prevalence
Medium
popular open-source embedded/IoT RTOS, IPv6 networking subset affected
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

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.2%
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· derived
None
System Exposure· derived
Controlled
Automatable· derived
No
Human Impact
High

Priority Score

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

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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