CVE-2025-21864

In the Linux kernel, the following vulnerability has been resolved: tcp: drop secpath at the same time as we currently drop dst Xiumei reported hitting the WARN in xfrm6_tunnel_net_exit while running tests that boil down to: - create a pair of netns - run a basic TCP test over ipcomp6 - delete the pair of netns The xfrm_state found on spi_byaddr was not deleted at the time we delete the netns, because we still have a reference on it. This lingering reference comes from a secpath (which holds a ref on the xfrm_state), which is still attached to an skb. This skb is not leaked, it ends up on sk_receive_queue and then gets defer-free'd by skb_attempt_defer_free. The problem happens when we defer freeing an skb (push it on one CPU's defer_list), and don't flush that list before the netns is deleted. In that case, we still have a reference on the xfrm_state that we don't expect at this point. We already drop the skb's dst in the TCP receive path when it's no longer needed, so let's also drop the secpath. At this point, tcp_filter has already called into the LSM hooks that may require the secpath, so it should not be needed anymore. However, in some of those places, the MPTCP extension has just been attached to the skb, so we cannot simply drop all extensions.
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:6.14:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.14:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.14:rc3:*:*:*:*:*:*

History

13 Mar 2025, 21:13

Type Values Removed Values Added
References () https://git.kernel.org/stable/c/69cafd9413084cd5012cf5d7c7ec6f3d493726d9 - () https://git.kernel.org/stable/c/69cafd9413084cd5012cf5d7c7ec6f3d493726d9 - Patch
References () https://git.kernel.org/stable/c/87858bbf21da239ace300d61dd209907995c0491 - () https://git.kernel.org/stable/c/87858bbf21da239ace300d61dd209907995c0491 - Patch
References () https://git.kernel.org/stable/c/9b6412e6979f6f9e0632075f8f008937b5cd4efd - () https://git.kernel.org/stable/c/9b6412e6979f6f9e0632075f8f008937b5cd4efd - Patch
References () https://git.kernel.org/stable/c/cd34a07f744451e2ecf9005bb7d24d0b2fb83656 - () https://git.kernel.org/stable/c/cd34a07f744451e2ecf9005bb7d24d0b2fb83656 - Patch
References () https://git.kernel.org/stable/c/f1d5e6a5e468308af7759cf5276779d3155c5e98 - () https://git.kernel.org/stable/c/f1d5e6a5e468308af7759cf5276779d3155c5e98 - Patch
CWE CWE-476
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 5.5
Summary
  • (es) En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: tcp: descartar secpath al mismo tiempo que descartamos dst Xiumei informó haber alcanzado el WARN en xfrm6_tunnel_net_exit mientras ejecutaba pruebas que se reducen a: - crear un par de netns - ejecutar una prueba TCP básica sobre ipcomp6 - eliminar el par de netns El xfrm_state encontrado en spi_byaddr no se eliminó en el momento en que eliminamos los netns, porque aún tenemos una referencia en él. Esta referencia persistente proviene de un secpath (que contiene una referencia en xfrm_state), que aún está adjunto a un skb. Este skb no se filtra, termina en sk_receive_queue y luego se libera mediante skb_attempt_defer_free. El problema ocurre cuando posponemos la liberación de un skb (insertarlo en la lista defer_list de una CPU) y no limpiamos esa lista antes de eliminar netns. En ese caso, aún tenemos una referencia en xfrm_state inesperada en este momento. Ya eliminamos el dst del skb en la ruta de recepción TCP cuando ya no es necesario, así que también eliminamos el secpath. En este punto, tcp_filter ya ha llamado a los ganchos LSM que podrían requerir el secpath, por lo que ya no debería ser necesario. Sin embargo, en algunos de esos lugares, la extensión MPTCP se acaba de adjuntar al skb, por lo que no podemos simplemente eliminar todas las extensiones.
CPE cpe:2.3:o:linux:linux_kernel:6.14:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.14:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.14:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
First Time Linux linux Kernel
Linux

12 Mar 2025, 10:15

Type Values Removed Values Added
New CVE

Information

Published : 2025-03-12 10:15

Updated : 2025-03-13 21:13


NVD link : CVE-2025-21864

Mitre link : CVE-2025-21864

CVE.ORG link : CVE-2025-21864


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-476

NULL Pointer Dereference