CVE-2026-10637: Use-after-free of `net_pkt` in IPv6 MLD send path triggerable by a link-local MLD Query
subsys/net/ip/ipv6mld.c:mldsend() read the packet interface via netpktiface(pkt) after netsenddata(pkt) returned successfully. Per the network stack's ownership contract (include/zephyr/net/netcore.h, and the explicit warning in subsys/net/ip/netcore.c:453-460 'do not use pkt after that call'), a successful send transfers ownership of the netpkt and the L2 driver frees it (e.g. ethernetsend() unrefs the packet on success, subsys/net/l2/ethernet/ethernet.c:790), returning it to its kmemslab.
The subsequent netpktiface(pkt) is therefore a read of a freed object; the recovered interface pointer is then dereferenced and incremented by the per-interface statistics path (netstats.h UPDATESTAT/SETSTAT) when CONFIGNETSTATISTICSPERINTERFACE 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: handlemldquery() (registered for NETICMPV6MLDQUERY) responds to a valid MLDv2 General Query (unspecified multicast address, hop limit 1) by calling sendmldreport() -> mldsend().
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 netsenddata(). The IPv4/IGMP sibling (igmpsend) already used the corrected pattern.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
If possible, disable per-interface statistics to avoid dereferencing a freed net_pkt interface pointer on the stats update path (net_stats.h UPDATE_STAT/SET_STAT is implicated when this option is enabled).
Zephyr networking (CONFIG_NET_STATISTICS_PER_INTERFACE) CONFIG_NET_STATISTICS_PER_INTERFACE = disabled
Event History
Frequently Asked Questions
What is the severity of CVE-2026-10637?
CVE-2026-10637 has a medium severity rating of 5.9.
How do I fix CVE-2026-10637?
To resolve CVE-2026-10637, ensure that the code does not access packet interfaces after the net_send_data function has been called successfully.
What vulnerabilities does CVE-2026-10637 address?
CVE-2026-10637 addresses a use-after-free vulnerability in the net_pkt related to the IPv6 MLD send path.
What software is affected by CVE-2026-10637?
CVE-2026-10637 affects the Zephyr Project Zephyr RTOS.
What is the impact of CVE-2026-10637?
The impact of CVE-2026-10637 includes potential system crashes or unexpected behavior due to improper handling of memory after it has been freed.