CVE-2026-10637: Zephyr IPv6 MLD Use-After-Free Denial of Service
A vulnerability in Zephyr's IPv6 multicast listener discovery (MLD) implementation allows a remote attacker on the local network to crash the networking stack by sending specially crafted MLD queries. The flaw stems from the code attempting to read and modify packet metadata after the packet has been freed by the network driver, creating a use-after-free condition. An attacker can trigger this without authentication by sending a valid MLDv2 General Query to the device, reliably causing a denial of service.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 5.9 MEDIUM · CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:H
- Weaknesses (CWE)
- CWE-416
- Affected products
- 1 configuration(s)
- Published / Modified
- 2026-06-16 / 2026-07-14
NVD description (verbatim)
subsys/net/ip/ipv6_mld.c:mld_send() read the packet interface via net_pkt_iface(pkt) after net_send_data(pkt) returned successfully. Per the network stack's ownership contract (include/zephyr/net/net_core.h, and the explicit warning in subsys/net/ip/net_core.c:453-460 'do not use pkt after that call'), a successful send transfers ownership of the net_pkt and the L2 driver frees it (e.g. ethernet_send() unrefs the packet on success, subsys/net/l2/ethernet/ethernet.c:790), returning it to its k_mem_slab. The subsequent net_pkt_iface(pkt) is therefore a read of a freed object; the recovered interface pointer is then dereferenced and incremented by the per-interface statistics path (net_stats.h UPDATE_STAT/SET_STAT) when CONFIG_NET_STATISTICS_PER_INTERFACE is enabled. If the freed slot is concurrently reallocated, pkt->iface may read back as NULL (NULL-pointer dereference / crash) or as a stale/garbage pointer (stray increment write / memory corruption). The path is reachable remotely on the local link without authentication: handle_mld_query() (registered for NET_ICMPV6_MLD_QUERY) responds to a valid MLDv2 General Query (unspecified multicast address, hop limit 1) by calling send_mld_report() -> mld_send(). The result is a remotely triggerable denial of service of the networking stack, with a narrow possibility of memory corruption. The fix caches the interface in a local before sending and no longer touches the packet after net_send_data(). The IPv4/IGMP sibling (igmp_send) already used the corrected pattern.
2 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
CVE-2026-10637 is a use-after-free vulnerability (CWE-416) in subsys/net/ip/ipv6_mld.c:mld_send(). The function calls net_send_data(pkt) and then attempts to read the packet's interface pointer via net_pkt_iface(pkt) and update per-interface statistics. However, the Zephyr network stack's ownership contract explicitly transfers packet ownership to the L2 driver upon successful send; the driver frees the packet and returns it to the memory pool. The subsequent read of the freed packet object is therefore a use-after-free. If the freed memory slot is reallocated concurrently, pkt->iface may be NULL (triggering a null dereference crash) or contain stale/garbage data (resulting in a stray write and memory corruption). The vulnerability is reachable remotely without authentication via handle_mld_query(), which responds to valid MLDv2 General Queries (unspecified multicast address, hop limit 1) by invoking send_mld_report() and then mld_send(). The IPv4/IGMP equivalent (igmp_send) implements the corrected pattern of caching the interface before sending.
Business impact
This vulnerability exposes Zephyr-based IoT and embedded network devices to remotely triggered denial of service attacks from any system on the local network segment. An attacker can repeatedly crash the networking stack, rendering network-dependent functionality unavailable and potentially causing extended service disruption. The narrow possibility of memory corruption could enable further exploitation in multi-threat scenarios. Devices in uncontrolled networks (industrial IoT, public sensing deployments, edge gateways) are at elevated risk. Recovery typically requires device reboot, incurring operational overhead and potential data loss in applications maintaining in-flight transactions.
Affected systems
Zephyr RTOS projects and products using Zephyr for IPv6 networking with MLD support enabled. Specifically, any Zephyr-based system that processes IPv6 multicast queries on a local network. The vulnerability requires CONFIG_NET_STATISTICS_PER_INTERFACE to trigger the most obvious crash path (null dereference), though memory corruption scenarios may occur even without that configuration. Systems without IPv6 enabled or those not exposed to untrusted local networks are unaffected.
Exploitability
Exploitability is high on local network segments. No authentication or user interaction is required; a remote attacker simply transmits a standard MLDv2 General Query packet to trigger the flaw. The attack is deterministic for denial of service (stack crash/reboot). The memory corruption pathway is narrow and non-deterministic—successful exploitation to achieve arbitrary write or code execution would require precise timing and heap state knowledge, making it a lower-probability outcome but not ruled out in multi-stage attack chains. The attack requires network-layer access to the target (same link-local segment) and cannot be executed across routed networks.
Remediation
The fix caches the interface pointer in a local variable before calling net_send_data(), and refrains from accessing the packet after the send returns successfully. This aligns mld_send() with the documented ownership contract and the pre-existing correct implementation in the IPv4/IGMP path. Patched versions should be available from the Zephyr project; consult official release notes and security advisories for the specific version addressing this CVE.
Patch guidance
Upgrade Zephyr to a patched version released after the vulnerability disclosure. Check the official Zephyr security advisory and release notes for the specific version that includes the fix to subsys/net/ip/ipv6_mld.c:mld_send(). Verify the fix by confirming that the interface is cached prior to net_send_data() and that no packet metadata is read post-send. Test in a development environment before deploying to production devices, particularly if the target device runs critical network services.
Detection guidance
Monitor for repeated IPv6 MLD-related crashes or unexpected reboots of Zephyr devices, particularly if preceded by MLD query traffic from unknown sources on the local network. Network intrusion detection systems (IDS) can identify suspicious MLDv2 General Query patterns sent to multi-target broadcast addresses. Device logs and kernel crashes may indicate use-after-free faults (NULL dereference, segmentation fault, or memory corruption symptoms) correlated with IPv6 traffic. Enable verbose logging of MLD and network statistics processing if available. Review device memory maps and heap allocator traces for concurrent allocation/deallocation of network packet objects during MLD processing.
Why prioritize this
Although classified as MEDIUM severity, this vulnerability warrants prompt prioritization for devices exposed to untrusted local networks or deployed in environments where network availability is critical. The remoteness (no physical access required), low barrier to exploitation (standard packet craft, no auth), and denial of service certainty make it a practical threat. The narrow but real possibility of memory corruption elevates risk in multi-threat scenarios. Organizations should prioritize patching based on device criticality, network trust boundaries, and exposure to potential local-network attackers.
Risk score, explained
CVSS 3.1 score of 5.9 (MEDIUM) reflects: Attack Vector (A = Adjacent) limiting to local network only; Attack Complexity (H = High) due to non-deterministic memory state for corruption scenarios; Privileges Required (N = None); User Interaction (N = None); Scope (U = Unchanged); and impact limited to Integrity (L = Low, stray write) and Availability (H = High, reliable DoS via null dereference). The score appropriately emphasizes denial of service as the primary concern while acknowledging the remote-but-local nature and the lower probability of code execution; however, the deterministic DoS and local-network assumption may warrant elevated operational priority depending on deployment context.
Frequently asked questions
Can this vulnerability be exploited over the Internet?
No. The attack requires network-layer adjacency—the attacker must be on the same link-local segment (e.g., same Ethernet, WiFi subnet, or thread mesh) as the target. Internet-scale routed networks are not vulnerable to this specific attack vector.
What is the difference between the DoS crash and the memory corruption outcome?
If CONFIG_NET_STATISTICS_PER_INTERFACE is enabled and the freed packet memory is reallocated concurrently, pkt->iface is likely NULL, causing a null-pointer dereference and immediate crash (DoS). If the freed slot contains stale data or is not yet reallocated, the code may write to an invalid or unintended memory location, leading to silent memory corruption. The latter is rare and difficult to trigger reliably but could enable multi-stage attacks.
Is the IPv4/IGMP implementation vulnerable to the same issue?
No. The IPv4/IGMP path (igmp_send) already implements the corrected pattern of caching the interface before sending, as noted in the CVE description. Only the IPv6/MLD path was affected.
What should I do if I cannot patch immediately?
If feasible, disable IPv6 MLD support or restrict local network access to the device (e.g., via firewall rules, network segmentation, or physical isolation). Monitor for unexpected crashes or reboots and enable detailed logging. Plan a patching window as soon as a vendor update is available and test in a staging environment first.
This analysis is provided for informational purposes only and does not constitute legal, security, or business advice. The vulnerability details and CVSS scoring reflect the published CVE record and vendor advisories; specific patch versions, affected product builds, and compatibility matrices must be verified directly with the Zephyr project and device manufacturers. No exploit code or weaponized proof-of-concept is provided. Organizations should conduct their own risk assessment, testing, and patching validation in accordance with their security policies and incident response procedures. SEC.co does not guarantee the accuracy, completeness, or timeliness of this analysis and assumes no liability for actions taken in reliance upon it. Source: NVD (public-domain), retrieved 2026-07-23. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2026-10634MEDIUMZephyr TCP Stack Use-After-Free Race Condition
- CVE-2026-10635MEDIUMXtensa Memory Domain Use-After-Free in Zephyr RTOS
- CVE-2026-10638MEDIUMZephyr ICMPv6 Use-After-Free Denial of Service
- CVE-2026-10639MEDIUMZephyr IPv4 Use-After-Free in ICMP Echo Reply Statistics
- CVE-2026-10640MEDIUMZephyr IPv6 Neighbor Discovery Use-After-Free Vulnerability
- CVE-2026-10636LOWUse-After-Free in Zephyr IPv4 IGMP Implementation
- CVE-2025-55644MEDIUMHeap Use-After-Free in GPAC MP4Box v2.4 DoS Vulnerability
- CVE-2025-55650MEDIUMHeap Use-After-Free in GPAC MP4Box v2.4 DoS Vulnerability