CVE-2026-23351CWE-416

CVE-2026-23351

High · published March 25, 2026

CVSS v3.1
7.8
EPSS
0%
Percentile
2.3
In the wild
Unconfirmed
What it is

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

netfilter: nft_set_pipapo: split gc into unlink and reclaim phase

Yiming Qian reports Use-after-free in the pipapo set type:

Under a large number of expired elements, commit-time GC can run for a very

long time in a non-preemptible context, triggering soft lockup warnings and

RCU stall reports (local denial of service).

We must split GC in an unlink and a reclaim phase.

We cannot queue elements for freeing until pointers have been swapped.

Expired elements are still exposed to both the packet path and userspace

dumpers via the live copy of the data structure.

call_rcu() does not protect us: dump operations or element lookups starting

after call_rcu has fired can still observe the free'd element, unless the

commit phase has made enough progress to swap the clone and live pointers

before any new reader has picked up the old version.

This a similar approach as done recently for the rbtree backend in commit

35f83a75529a ("netfilter: nft_set_rbtree: don't gc elements on insert").

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00130 · 2.3th percentile
Weakness
CWE-416 · Use After Free
Published
2026-03-25T15:16Z
Affected products (15)
ProductVersionsFixed in
linux/linux_kernel≥ 5.6.1, < 5.10.2535.10.253
linux/linux_kernel≥ 5.11, < 5.15.2035.15.203
linux/linux_kernel≥ 5.16, < 6.1.1676.1.167
linux/linux_kernel≥ 6.2, < 6.6.1306.6.130
linux/linux_kernel≥ 6.7, < 6.12.776.12.77
linux/linux_kernel≥ 6.13, < 6.18.176.18.17
linux/linux_kernel≥ 6.19, < 6.19.76.19.7
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (12)
EPSS history
Timeline
  • 25 MAR 10:27Z
    netfilter: nft_set_pipapo: split gc into unlink and reclaim phase
    cvelistv5