Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain same-link adjacent network access
-
DeliverySend RA lacking SLLAO or elicit NS traffic
-
ExploitCreate persistently unresolved/INCOMPLETE neighbor entry
-
ExecutionSend unicast IPv6 packet to that neighbor
-
ImpactOOB 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H
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).
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
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
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.
Apply vendor patch.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
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.
Potential off-by-one buffer overflow vulnerability in the Zephyr fuse file system. Rated critical severity (CVSS 10.0),
An out-of-bounds write in the Zephyr RTOS DNS resolver (dns_unpack_name()) lets a crafted DNS response corrupt memory on
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
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
EUVD-2026-97113
NVD
CVE.org
EPSS
GitHub
Exploit-DB