CVE-2026-23351

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").
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.6:-:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc6:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc7:*:*:*:*:*:*

History

24 Apr 2026, 18:02

Type Values Removed Values Added
References () https://git.kernel.org/stable/c/16f3595c0441d87dfa005c47d8f95be213afaa9e - () https://git.kernel.org/stable/c/16f3595c0441d87dfa005c47d8f95be213afaa9e - Patch
References () https://git.kernel.org/stable/c/500a50a301ce962b019ab95053ac70264fec2c21 - () https://git.kernel.org/stable/c/500a50a301ce962b019ab95053ac70264fec2c21 - Patch
References () https://git.kernel.org/stable/c/65ca51b9fb85477ab92a04295aed34b38f7c062e - () https://git.kernel.org/stable/c/65ca51b9fb85477ab92a04295aed34b38f7c062e - Patch
References () https://git.kernel.org/stable/c/7864c667aed01a58b87ca518a631322cd0ac34c0 - () https://git.kernel.org/stable/c/7864c667aed01a58b87ca518a631322cd0ac34c0 - Patch
References () https://git.kernel.org/stable/c/9df95785d3d8302f7c066050117b04cd3c2048c2 - () https://git.kernel.org/stable/c/9df95785d3d8302f7c066050117b04cd3c2048c2 - Patch
References () https://git.kernel.org/stable/c/aff13667708dfa0dce136b8efd81baa9fa6ef261 - () https://git.kernel.org/stable/c/aff13667708dfa0dce136b8efd81baa9fa6ef261 - Patch
References () https://git.kernel.org/stable/c/c0f1f85097ac2b6e7d750fe4d05807985cd3fd3a - () https://git.kernel.org/stable/c/c0f1f85097ac2b6e7d750fe4d05807985cd3fd3a - Patch
References () https://git.kernel.org/stable/c/c12d570d71920903a1a0468b7d13b085203d0c93 - () https://git.kernel.org/stable/c/c12d570d71920903a1a0468b7d13b085203d0c93 - Patch
CPE cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc6:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc7:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.6:-:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc5:*:*:*:*:*:*
CWE CWE-416
First Time Linux
Linux linux Kernel

18 Apr 2026, 09:16

Type Values Removed Values Added
References
  • () https://git.kernel.org/stable/c/65ca51b9fb85477ab92a04295aed34b38f7c062e -
  • () https://git.kernel.org/stable/c/c0f1f85097ac2b6e7d750fe4d05807985cd3fd3a -

02 Apr 2026, 15:16

Type Values Removed Values Added
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 7.8
Summary
  • (es) En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: netfilter: nft_set_pipapo: dividir la recolección de basura en una fase de desvinculación y una fase de recuperación Yiming Qian informa de un uso después de liberación en el tipo de conjunto pipapo: Bajo un gran número de elementos caducados, la recolección de basura en tiempo de commit puede ejecutarse durante mucho tiempo en un contexto no preemptivo, lo que desencadena advertencias de soft lockup e informes de bloqueo de RCU (denegación de servicio local). Debemos dividir la recolección de basura en una fase de desvinculación y una de recuperación. No podemos poner en cola elementos para su liberación hasta que los punteros hayan sido intercambiados. Los elementos caducados todavía están expuestos tanto a la ruta de paquetes como a los volcadores del espacio de usuario a través de la copia activa de la estructura de datos. call_rcu() no nos protege: las operaciones de volcado o las búsquedas de elementos que comienzan después de que call_rcu se haya activado aún pueden observar el elemento liberado, a menos que la fase de commit haya progresado lo suficiente como para intercambiar los punteros de clonación y activos antes de que cualquier nuevo lector haya tomado la versión antigua. Este es un enfoque similar al realizado recientemente para el backend rbtree en el commit 35f83a75529a ('netfilter: nft_set_rbtree: no recolectar elementos en la inserción').

25 Mar 2026, 11:16

Type Values Removed Values Added
New CVE

Information

Published : 2026-03-25 11:16

Updated : 2026-04-24 18:02


NVD link : CVE-2026-23351

Mitre link : CVE-2026-23351

CVE.ORG link : CVE-2026-23351


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-416

Use After Free