CVE-2026-64189: netfilter: ipset: fix race between dump and ip_set_list resize
Greg Kroah-Hartman <[email protected]>
| Newsgroups | org.kernel.vger.linux-cve-announce |
|---|---|
| Message-ID | <2026072051-CVE-2026-64189-b911@gregkh> |
From: Greg Kroah-Hartman <[email protected]> Description =========== In the Linux kernel, the following vulnerability has been resolved: netfilter: ipset: fix race between dump and ip_set_list resize The release path of ip_set_dump_do() and ip_set_dump_done() read inst->ip_set_list via ip_set_ref_netlink(), a plain rcu_dereference_raw() of the array pointer. These run from netlink_recvmsg() without the nfnl mutex and without an RCU read-side critical section. A concurrent ip_set_create() can grow the array: it publishes the new array, calls synchronize_net() and then kvfree()s the old one. Since the dump paths read the array outside any RCU reader, synchronize_net() does not wait for them and the old array can be freed while they still index into it, causing a use-after-free. The dumped set itself stays pinned via set->ref_netlink, so only the array load needs protecting. Take rcu_read_lock() around it, matching ip_set_get_byname() and __ip_set_put_byindex(). BUG: KASAN: slab-use-after-free in ip_set_dump_do (net/netfilter/ipset/ip_set_core.c:1697) Read of size 8 at addr ffff88800b5c4018 by task exploit/150 Call Trace: ... kasan_report (mm/kasan/report.c:595) ip_set_dump_do (net/netfilter/ipset/ip_set_core.c:1697) netlink_dump (net/netlink/af_netlink.c:2325) netlink_recvmsg (net/netlink/af_netlink.c:1976) sock_recvmsg (net/socket.c:1159) __sys_recvfrom (net/socket.c:2315) ... Oops: general protection fault, probably for non-canonical address ... KASAN NOPTI KASAN: maybe wild-memory-access in range [0x02d6...d0-0x02d6...d7] RIP: 0010:ip_set_dump_do (net/netfilter/ipset/ip_set_core.c:1698) Kernel panic - not syncing: Fatal exception The Linux kernel CVE team has assigned CVE-2026-64189 to this issue. Affected and fixed versions =========================== Issue introduced in 4.20 with commit 8a02bdd50b2ecb6d62121d2958d3ea186cc88ce7 and fixed in 6.12.96 with commit ff86ea9b7fdf70564e60436fbee68c96bc459943 Issue introduced in 4.20 with commit 8a02bdd50b2ecb6d62121d2958d3ea186cc88ce7 and fixed in 6.18.39 with commit 81d54c766337b923eec26da0a13406760b091093 Issue introduced in 4.20 with commit 8a02bdd50b2ecb6d62121d2958d3ea186cc88ce7 and fixed in 7.1.4 with commit e8ee198bbc04a32d336e79160fde980e0235b39f Issue introduced in 4.20 with commit 8a02bdd50b2ecb6d62121d2958d3ea186cc88ce7 and fixed in 7.2-rc2 with commit 7cd9103283b26b917360ec99d7d2f2d761bcf1ab Issue introduced in 4.19.5 with commit 2f6bf7917f55f9dae913193e49672b3598620eab 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-64189 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/netfilter/ipset/ip_set_core.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/ff86ea9b7fdf70564e60436fbee68c96bc459943 https://git.kernel.org/stable/c/81d54c766337b923eec26da0a13406760b091093 https://git.kernel.org/stable/c/e8ee198bbc04a32d336e79160fde980e0235b39f https://git.kernel.org/stable/c/7cd9103283b26b917360ec99d7d2f2d761bcf1ab