Zephyr RTOS
CVE-2026-7656
MEDIUM
Severity by source
AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H
Adjacent, no-auth, low-complexity ND injection yields high integrity/availability impact; C raised from N to L because router/DNS redirection enables MITM interception.
Primary rating from Vendor (zephyr).
CVSS VectorNVD
CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H
Lifecycle Timeline
3DescriptionNVD
The IPv6 Neighbor Discovery handlers in subsys/net/ip/ipv6_nbr.c (handle_ra_input, handle_ns_input, handle_na_input) used an incorrect boolean expression that combined the RFC 4861 validity checks with the ICMPv6 code check using the wrong operator precedence: the form was '((length/hop/source/target checks) && (icmp_hdr-code != 0))'. Because every legitimate ND message carries ICMPv6 code 0, an attacker setting code 0 (the normal value) caused the entire predicate to evaluate false, so the packet was never dropped and all of the other checks were silently skipped. The bypassed checks include the mandatory Hop Limit 255 verification (which proves an ND packet originated on-link and was not forwarded) and, for Router Advertisements, the requirement that the source be a link-local address, as well as multicast-target sanity checks. As a result, an adjacent on-link attacker - and, because the Hop-Limit-255 guard is bypassed, potentially a remote/off-link attacker whose packets would otherwise be rejected - can have forged Router Advertisement, Neighbor Solicitation, and Neighbor Advertisement messages accepted. A forged RA lets the attacker reconfigure the victim's default router, on-link prefixes (SLAAC), MTU, reachable/retransmit timers, and (with CONFIG_NET_IPV6_RA_RDNSS) DNS servers, while forged NS/NA enable neighbor-cache poisoning, enabling man-in-the-middle, traffic redirection, and denial of service. The flaw is an input-validation/authentication weakness rather than a memory-safety issue: the underlying packet-parsing primitives (net_pkt_get_data, net_pkt_read, net_pkt_skip) are independently bounds-safe and the validated 'length' is the true buffer length, so skipping the length check causes no out-of-bounds access. The defect has existed since the logic was introduced in 2018 and shipped in all releases through v4.4.0; it is fixed by splitting the condition so any failing check drops the packet.
AnalysisAI
Forged IPv6 Neighbor Discovery acceptance in the Zephyr RTOS network stack (all releases through v4.4.0) lets an adjacent on-link attacker inject spoofed Router Advertisement, Neighbor Solicitation, and Neighbor Advertisement messages because an operator-precedence bug in subsys/net/ip/ipv6_nbr.c silently skips every RFC 4861 sanity check whenever the (always-present) ICMPv6 code is 0. Because the bypassed checks include the Hop-Limit==255 on-link proof, even off-link/remote attackers may have forged ND packets accepted, enabling default-router/DNS/SLAAC hijacking and neighbor-cache poisoning for man-in-the-middle, redirection, and denial of service. A vendor patch exists (commit 095f064c) but there is no public exploit identified at time of analysis and the issue is not in CISA KEV.
Technical ContextAI
The affected technology is IPv6 Neighbor Discovery (ND, RFC 4861) over ICMPv6 as implemented in the Zephyr RTOS IP stack (cpe:2.3:a:zephyrproject:zephyr). ND uses RA messages for router/prefix/DNS autoconfiguration (SLAAC) and NS/NA for address resolution and neighbor reachability. RFC 4861 mandates several anti-spoofing validity checks - notably IPv6 Hop Limit == 255 (which guarantees the packet was not routed and therefore originated on-link), a link-local source for RAs, and multicast-target sanity checks. The root cause is CWE-670 (Always-Incorrect Control Flow Implementation): the validation predicate in handle_ra_input/handle_ns_input/handle_na_input was written as '((length/hop/source/target checks) && (icmp_hdr->code != 0))'. Since legitimate ND traffic always carries ICMPv6 code 0, the second operand is false, the AND short-circuits the entire predicate to false, and the drop branch is never taken - so all preceding checks are skipped. This is purely a logic/input-validation defect, not memory corruption: the parsing primitives (net_pkt_get_data, net_pkt_read, net_pkt_skip) remain bounds-safe and 'length' is the true buffer length, so skipping the length check does not cause out-of-bounds access.
RemediationAI
Apply the upstream fix that splits the broken condition so any single failing RFC 4861 check drops the packet: Vendor-released patch available as commit 095f064c94b95f9c35e05602e693dc268f0cb865 (https://github.com/zephyrproject-rtos/zephyr/commit/095f064c94b95f9c35e05602e693dc268f0cb865), per advisory GHSA-cpjw-rvwx-ph9f; rebuild and reflash device firmware from a Zephyr tree containing this commit (releases after v4.4.0). Because Zephyr ships as firmware, prioritize an OTA/firmware update campaign rather than a runtime config change. Where patching is delayed, compensating controls include placing affected IPv6 devices on isolated/trusted L2 segments and applying RA Guard / ND inspection (e.g., IPv6 RA-Guard, ND snooping) on managed switches to block forged RA/NS/NA at the network edge - trade-off: requires managed-switch support and can break legitimate routers if misconfigured. If IPv6 is not required for a deployment, disabling IPv6 (CONFIG_NET_IPV6) eliminates the attack surface but removes IPv6 connectivity; disabling CONFIG_NET_IPV6_RA_RDNSS removes only the forged-DNS vector and does not stop router/prefix or neighbor-cache poisoning, so it is a partial mitigation only.
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 technique Denial Of Service
View allShare
External POC / Exploit Code
Leaving vuln.today