HIGH Introduced in 2.6.15
ipv6 MLD Query UAF
CVE-2026-53275
CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
KernelScan AI6.5MEDIUM
01Description
In the Linux kernel, the following vulnerability has been resolved: ipv6: mcast: Fix use-after-free when processing MLD queries When processing an MLD query, a pointer to the multicast group address is retrieved when initially parsing the packet. This pointer is later dereferenced without being reloaded despite the fact that the skb header might have been reallocated following the pskb_may_pull() calls, leading to a use-after-free [1]. Fix by copying the multicast group address when the packet is initially parsed. [1] BUG: KASAN: slab-use-after-free in __mld_query_work (net/ipv6/mcast.c:1512) Read of size 8 at addr ffff8881154b8e90 by task kworker/4:1/118 Workqueue: mld mld_query_work Call Trace: <TASK> dump_stack_lvl (lib/dump_stack.c:94 lib/dump_stack.c:120) print_address_description.constprop.0 (mm/kasan/report.c:378) print_report (mm/kasan/report.c:482) kasan_report (mm/kasan/report.c:595) __mld_query_work (net/ipv6/mcast.c:1512) mld_query_work (net/ipv6/mcast.c:1563) process_one_work (kernel/workqueue.c:3314) worker_thread (kernel/workqueue.c:3397 kernel/workqueue.c:3478) kthread (kernel/kthread.c:436) ret_from_fork (arch/x86/kernel/process.c:158) ret_from_fork_asm (arch/x86/entry/entry_64.S:245) </TASK> [...] Freed by task 118: kasan_save_stack (mm/kasan/common.c:57) kasan_save_track (mm/kasan/common.c:78) kasan_save_free_info (mm/kasan/generic.c:584) __kasan_slab_free (mm/kasan/common.c:253 mm/kasan/common.c:285) kfree (./include/linux/kasan.h:235 mm/slub.c:2689 mm/slub.c:6251 mm/slub.c:6566) pskb_expand_head (net/core/skbuff.c:2335) __pskb_pull_tail (net/core/skbuff.c:2878 (discriminator 4)) __mld_query_work (net/ipv6/mcast.c:1495 (discriminator 1)) mld_query_work (net/ipv6/mcast.c:1563) process_one_work (kernel/workqueue.c:3314) worker_thread (kernel/workqueue.c:3397 kernel/workqueue.c:3478) kthread (kernel/kthread.c:436) ret_from_fork (arch/x86/kernel/process.c:158) ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
02KernelScan AI Analysis
Risk summary
An adjacent network attacker can send a crafted ICMPv6 MLD query packet to a host with IPv6 multicast enabled, triggering a use-after-free in the kernel's MLD query processing workqueue. This causes a kernel crash (denial of service). The bug is reachable from the local link without authentication, making it a significant availability risk for any IPv6-enabled system on a shared network segment.
Vulnerability analysis
The vulnerability is a use-after-free in __mld_query_work() in net/ipv6/mcast.c. When processing an MLD query, a pointer to the multicast group address (group) is obtained by taking the address of mld->mld_mca inside the skb header buffer. Later in the same function, pskb_may_pull() is called to ensure sufficient data is present; this call may reallocate the skb's header buffer via pskb_expand_head(), freeing the original buffer. The stale pointer to the old buffer location is then dereferenced at line 1512, constituting a use-after-free read. The fix changes the variable from a pointer (const struct in6_addr *group) to a value copy (struct in6_addr group), so the address is copied out of the skb buffer before any reallocation can occur. The attack surface is the IPv6 link-local multicast stack: any system with IPv6 and multicast enabled will process MLD queries received on a local network segment. The processing is deferred to a workqueue, making this triggerable by an adjacent attacker sending a crafted ICMPv6 MLD query packet.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 5.10 | 2.6.15 | 5.10.269 | dfaf1f5e7eb8 |
| 7.0 | 2.6.15 | 7.0.13 | 087dbacf897c |
| 5.15 | 2.6.15 | 5.15.210 | 1354271c89d0 |
| 6.6 | 2.6.15 | 6.6.143 | 2a613bf49702 |
| 6.18 | 2.6.15 | 6.18.36 | 4203806f700b |
| 6.1 | 2.6.15 | 6.1.176 | 53baa63a4183 |
| mainline | 2.6.15 | 7.1 | 791c91dc7a9d |
| 6.12 | 2.6.15 | 6.12.94 | b2eb8886200b |