CVE-2024-36971

In the Linux kernel, the following vulnerability has been resolved: net: fix __dst_negative_advice() race __dst_negative_advice() does not enforce proper RCU rules when sk->dst_cache must be cleared, leading to possible UAF. RCU rules are that we must first clear sk->sk_dst_cache, then call dst_release(old_dst). Note that sk_dst_reset(sk) is implementing this protocol correctly, while __dst_negative_advice() uses the wrong order. Given that ip6_negative_advice() has special logic against RTF_CACHE, this means each of the three ->negative_advice() existing methods must perform the sk_dst_reset() themselves. Note the check against NULL dst is centralized in __dst_negative_advice(), there is no need to duplicate it in various callbacks. Many thanks to Clement Lecigne for tracking this issue. This old bug became visible after the blamed commit, using UDP sockets.
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:*:*:*:*:*:*:*:*

History

08 Aug 2024, 14:49

Type Values Removed Values Added
CPE cpe:2.3:o:linux:linux_kernel:6.10.0:rc1:*:*:*:*:*:*
References () https://git.kernel.org/stable/c/051c0bde9f0450a2ec3d62a86d2a0d2fad117f13 - () https://git.kernel.org/stable/c/051c0bde9f0450a2ec3d62a86d2a0d2fad117f13 - Patch
References () https://git.kernel.org/stable/c/2295a7ef5c8c49241bff769e7826ef2582e532a6 - () https://git.kernel.org/stable/c/2295a7ef5c8c49241bff769e7826ef2582e532a6 - Patch
References () https://git.kernel.org/stable/c/5af198c387128a9d2ddd620b0f0803564a4d4508 - () https://git.kernel.org/stable/c/5af198c387128a9d2ddd620b0f0803564a4d4508 - Patch
References () https://git.kernel.org/stable/c/81dd3c82a456b0015461754be7cb2693991421b4 - () https://git.kernel.org/stable/c/81dd3c82a456b0015461754be7cb2693991421b4 - Patch
References () https://git.kernel.org/stable/c/db0082825037794c5dba9959c9de13ca34cc5e72 - () https://git.kernel.org/stable/c/db0082825037794c5dba9959c9de13ca34cc5e72 - Patch
References () https://git.kernel.org/stable/c/eacb8b195579c174a6d3e12a9690b206eb7f28cf - () https://git.kernel.org/stable/c/eacb8b195579c174a6d3e12a9690b206eb7f28cf - Patch

15 Jul 2024, 07:15

Type Values Removed Values Added
References
  • {'url': 'https://lists.debian.org/debian-lts-announce/2024/06/msg00020.html', 'source': '416baaa9-dc9f-4396-8d5f-8c081fb06d67'}

27 Jun 2024, 12:15

Type Values Removed Values Added
References
  • () https://lists.debian.org/debian-lts-announce/2024/06/msg00020.html -

16 Jun 2024, 13:15

Type Values Removed Values Added
References
  • () https://git.kernel.org/stable/c/051c0bde9f0450a2ec3d62a86d2a0d2fad117f13 -
  • () https://git.kernel.org/stable/c/2295a7ef5c8c49241bff769e7826ef2582e532a6 -
  • () https://git.kernel.org/stable/c/5af198c387128a9d2ddd620b0f0803564a4d4508 -
  • () https://git.kernel.org/stable/c/81dd3c82a456b0015461754be7cb2693991421b4 -
  • () https://git.kernel.org/stable/c/db0082825037794c5dba9959c9de13ca34cc5e72 -
  • () https://git.kernel.org/stable/c/eacb8b195579c174a6d3e12a9690b206eb7f28cf -

12 Jun 2024, 15:43

Type Values Removed Values Added
CWE CWE-416
CPE cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.10.0:rc1:*:*:*:*:*:*
First Time Linux
Linux linux Kernel
References () https://git.kernel.org/stable/c/92f1655aa2b2294d0b49925f3b875a634bd3b59e - () https://git.kernel.org/stable/c/92f1655aa2b2294d0b49925f3b875a634bd3b59e - Patch
References () https://git.kernel.org/stable/c/b8af8e6118a6605f0e495a58d591ca94a85a50fc - () https://git.kernel.org/stable/c/b8af8e6118a6605f0e495a58d591ca94a85a50fc - Patch
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 7.8

12 Jun 2024, 10:15

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, se resolvió la siguiente vulnerabilidad: net: fix __dst_negative_advice() race __dst_negative_advice() no aplica las reglas adecuadas de RCU cuando se debe borrar sk->dst_cache, lo que genera una posible UAF. Las reglas de RCU son que primero debemos borrar sk->sk_dst_cache y luego llamar a dst_release(old_dst). Tenga en cuenta que sk_dst_reset(sk) implementa este protocolo correctamente, mientras que __dst_negative_advice() utiliza el orden incorrecto. Dado que ip6_negative_advice() tiene una lógica especial contra RTF_CACHE, esto significa que cada uno de los tres ->negative_advice() métodos existentes debe realizar sk_dst_reset() ellos mismos. Tenga en cuenta que la verificación de NULL dst está centralizada en __dst_negative_advice(), no es necesario duplicarla en varias devoluciones de llamada. Muchas gracias a Clement Lecigne por dar seguimiento a este problema. Este antiguo error se hizo visible después de la confirmación culpada, utilizando sockets UDP.
References
  • () https://git.kernel.org/stable/c/b8af8e6118a6605f0e495a58d591ca94a85a50fc -

10 Jun 2024, 09:15

Type Values Removed Values Added
New CVE

Information

Published : 2024-06-10 09:15

Updated : 2024-08-08 14:49


NVD link : CVE-2024-36971

Mitre link : CVE-2024-36971

CVE.ORG link : CVE-2024-36971


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-416

Use After Free