CVE-2026-64423: ipv4: igmp: remove multicast group from hash table on device destruction

Greg Kroah-Hartman <[email protected]> Sat, 25 Jul 2026 10:50:40 +0200
Newsgroups org.kernel.vger.linux-cve-announce
Message-ID <2026072535-CVE-2026-64423-4583@gregkh>
From: Greg Kroah-Hartman <[email protected]>

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

ipv4: igmp: remove multicast group from hash table on device destruction

When a device is destroyed under RTNL, ip_mc_destroy_dev() iterates through
the multicast list and calls ip_ma_put() on each membership, scheduling
them for RCU reclamation. However, they are not unlinked from the device's
multicast hash table (mc_hash).

Since the device remains published in dev->ip_ptr until after
ip_mc_destroy_dev() completes, concurrent RCU readers traversing mc_hash
can still locate and access the multicast group after its refcount is
decremented. If the RCU callback runs and frees the group while a reader is
accessing it, a use-after-free occurs.

Fix this by unlinking the multicast group from mc_hash using
ip_mc_hash_remove() before scheduling it for reclamation.

BUG: KASAN: slab-use-after-free in ip_check_mc_rcu+0x149/0x3f0
Read of size 4 at addr ffff888009bf1408 by task mausezahn/2276

Call Trace:
 <IRQ>
 dump_stack_lvl+0x67/0x90
 print_report+0x175/0x7c0
 kasan_report+0x147/0x180
 ip_check_mc_rcu+0x149/0x3f0
 udp_v4_early_demux+0x36d/0x12d0
 ip_rcv_finish_core+0xb8b/0x1390
 ip_rcv_finish+0x54/0x120
 NF_HOOK+0x213/0x2b0
 __netif_receive_skb+0x126/0x340
 process_backlog+0x4f2/0xf00
 __napi_poll+0x92/0x2c0
 net_rx_action+0x583/0xc60
 handle_softirqs+0x236/0x7f0
 do_softirq+0x57/0x80
 </IRQ>

Allocated by task 2239:
 kasan_save_track+0x3e/0x80
 __kasan_kmalloc+0x72/0x90
 ____ip_mc_inc_group+0x31a/0xa40
 __ip_mc_join_group+0x334/0x3f0
 do_ip_setsockopt+0x16fa/0x2010
 ip_setsockopt+0x3f/0x90
 do_sock_setsockopt+0x1ad/0x300

Freed by task 0:
 kasan_save_track+0x3e/0x80
 kasan_save_free_info+0x40/0x50
 __kasan_slab_free+0x3a/0x60
 __rcu_free_sheaf_prepare+0xd4/0x220
 rcu_free_sheaf+0x36/0x190
 rcu_core+0x8d9/0x12f0
 handle_softirqs+0x236/0x7f0

The Linux kernel CVE team has assigned CVE-2026-64423 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 3.11 with commit e9897071350bd9d94a56b5b6f79c85b1a98fc7e7 and fixed in 5.10.261 with commit 412ba7def06ffe974ba9a1d862b022362c54ffa5
	Issue introduced in 3.11 with commit e9897071350bd9d94a56b5b6f79c85b1a98fc7e7 and fixed in 5.15.212 with commit c6cb5f8ebe1c1a78710c19f102db9fe48b9e6ba9
	Issue introduced in 3.11 with commit e9897071350bd9d94a56b5b6f79c85b1a98fc7e7 and fixed in 6.1.178 with commit 5f42729d74bd6c61306d864423290d92962de4e1
	Issue introduced in 3.11 with commit e9897071350bd9d94a56b5b6f79c85b1a98fc7e7 and fixed in 6.6.145 with commit 76d030ac95e17f91d69a595f17ebc5979700cf9a
	Issue introduced in 3.11 with commit e9897071350bd9d94a56b5b6f79c85b1a98fc7e7 and fixed in 6.12.96 with commit 8820b530cb2388503d7418228d03ba074bf7a03e
	Issue introduced in 3.11 with commit e9897071350bd9d94a56b5b6f79c85b1a98fc7e7 and fixed in 6.18.39 with commit 2ca18df1c2611f70eb3eb487e02ae85eb703b284
	Issue introduced in 3.11 with commit e9897071350bd9d94a56b5b6f79c85b1a98fc7e7 and fixed in 7.1.4 with commit f91883031e5a62877a29ce139442973cbea769f1
	Issue introduced in 3.11 with commit e9897071350bd9d94a56b5b6f79c85b1a98fc7e7 and fixed in 7.2-rc3 with commit 7993211bde166471dffac074dc965489f86531f8

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2026-64423
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	net/ipv4/igmp.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/412ba7def06ffe974ba9a1d862b022362c54ffa5
	https://git.kernel.org/stable/c/c6cb5f8ebe1c1a78710c19f102db9fe48b9e6ba9
	https://git.kernel.org/stable/c/5f42729d74bd6c61306d864423290d92962de4e1
	https://git.kernel.org/stable/c/76d030ac95e17f91d69a595f17ebc5979700cf9a
	https://git.kernel.org/stable/c/8820b530cb2388503d7418228d03ba074bf7a03e
	https://git.kernel.org/stable/c/2ca18df1c2611f70eb3eb487e02ae85eb703b284
	https://git.kernel.org/stable/c/f91883031e5a62877a29ce139442973cbea769f1
	https://git.kernel.org/stable/c/7993211bde166471dffac074dc965489f86531f8