CVE-2026-16515: ICMPv6 error messages sent for multicast-destined packets and non-unique source addresses enable network amplification in Zephyr's IPv6 stack

Published Sep 18, 2026
·
Updated

neticmpv6senderror() in subsys/net/ip/icmpv6.c implemented only one of the three RFC 4443 section 2.4 suppression rules (do not answer an ICMPv6 error with an ICMPv6 error). It did not check whether the triggering packet's source address identifies a single node (rule e.6) or whether the packet was sent to a multicast destination (rule e.3, whose only exceptions are Packet Too Big and Parameter Problem Code 2). Of the five call sites, only the port-unreachable path in subsys/net/ip/connection.c carried an equivalent guard of its own; the extension-header, unknown-next-header and fragmentation paths in subsys/net/ip/ipv6.c and subsys/net/ip/ipv6fragment.c had none.

An unauthenticated attacker with access to the same link can exploit this in two ways. Sending a single IPv6 packet to the link-local all-nodes group ff02::1 carrying an unrecognized next-header value, with the source address spoofed to a chosen victim, causes every Zephyr node on the link to emit an ICMPv6 Parameter Problem message to that victim — a reflector with an amplification factor equal to the number of nodes. Alternatively, sending a unicast packet whose source address is a multicast address causes the node to transmit its ICMPv6 error to that multicast address, turning one unicast packet into a link-flooded multicast frame. Packets addressed to ff02::1 are accepted unconditionally by ipv6input(), and no check rejects a multicast source address, so no special configuration is required.

The impact is degraded availability of the shared link and of the reflection victim, together with the ability for the attacker to hide its own address behind the responding nodes. The effect is amplified on constrained mesh links such as 802.15.4/Thread, where link-local multicast is flooded hop by hop. There is no memory-safety consequence: the error packet itself is well formed, it is simply emitted in cases where the protocol forbids it.

The fix adds both suppression checks at the single choke point in neticmpv6senderror(), before any reply packet is allocated, preserving the RFC-mandated exceptions for NETICMPV6PACKETTOOBIG and Parameter Problem Code 2. Note that the IPv4 counterpart neticmpv4senderror() in subsys/net/ip/icmpv4.c still checks only for a broadcast destination and retains an equivalent gap for multicast destinations and non-unique sources.

Affected Software

1 affected component
Zephyr

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    Modify the IPv6 input path so that packets addressed to the link-local all-nodes group ff02::1 are not accepted unconditionally by ipv6_input(), and add a validation check to reject multicast source addresses.

    Zephyr IPv6 stack (ipv6_input) Multicast destination acceptance / multicast source validation for ff02::1 = Reject packets addressed to ff02::1 unless triggering conditions are met (no unconditional accept for multicast-destined packets); do not accept multicast source addresses
  2. Compensating control

    If patching is not immediately possible, isolate or tightly control link-local IPv6 traffic on the shared link (e.g., constrained mesh links like 802.15.4/Thread) so an unauthenticated attacker cannot reach the same link and trigger hop-by-hop multicast flooding/reflection.

Event History

Sep 18, 2026
CVE Published
via MITRE·02:30 PM
Data Sourced
via MITRE·02:30 PM
DescriptionSeverityWeakness

Frequently Asked Questions

1

Who can exploit this issue?

An unauthenticated attacker that can send IPv6 traffic on the same link as Zephyr nodes can exploit it. The attacker can spoof the source address of the triggering packet.

2

Which packet-processing paths lacked the necessary suppression checks?

The extension-header, unknown-next-header, and fragmentation paths in subsys/net/ip/ipv6.c and subsys/net/ip/ipv6_fragment.c lacked equivalent guards. The port-unreachable path in subsys/net/ip/connection.c already carried its own equivalent guard.

3

What is the practical amplification scenario?

An attacker can send a packet to ff02::1 with an unrecognized next-header value and spoof a victim's address as the source. Every Zephyr node on that link can then send an ICMPv6 Parameter Problem message to the victim, producing amplification proportional to the number of nodes.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203