Vulnerabilidad en kernel de Linux (CVE-2023-52739)
Gravedad CVSS v3.1:
MEDIA
Tipo:
CWE-415
Doble liberación
Fecha de publicación:
21/05/2024
Última modificación:
23/09/2025
Descripción
En el kernel de Linux, se resolvió la siguiente vulnerabilidad: Repare la corrupción de la página causada por el control racy en __free_pages. Cuando actualizamos nuestro kernel, comenzamos a ver algunos daños en la página como los siguientes de manera consistente: ERROR: Estado incorrecto de la página en el proceso ganesha.nfsd pfn: 1304ca página:0000000022261c55 refcount:0 mapcount:-128 mapeo:0000000000000000 índice:0x0 pfn:0x1304ca banderas: 0x17ffffc0000000() raw: 0017ffffc0000000 ffff8a513ffd4c98 24b35ec08 0000000000000000 raw: 00000000000000000 0000000000000001 00000000ffffff7f 00000000000000000 página volcada porque: recuento de mapas distinto de cero CPU: 0 PID: 15567 Comm : ganesha.nfsd Kdump: cargado Contaminado: PBO 5.10.158-1.nutanix.20221209.el7.x86_64 #1 Nombre del hardware: VMware, Inc. Plataforma virtual VMware/Plataforma de referencia de escritorio 440BX, BIOS 6.00 05/04/2016 Seguimiento de llamadas : dump_stack+0x74/0x96 bad_page.cold+0x63/0x94 check_new_page_bad+0x6d/0x80 rmqueue+0x46e/0x970 get_page_from_freelist+0xcb/0x3f0 ? _cond_resched+0x19/0x40 __alloc_pages_nodemask+0x164/0x300 alloc_pages_current+0x87/0xf0 skb_page_frag_refill+0x84/0x110 ... A veces, también aparecería como corrupción en el puntero de la lista libre y provocaría fallos. Después de dividir el problema en dos, encontramos que el problema comenzó desde la confirmación e320d3012d25 ("mm/page_alloc.c: corrige la liberación de páginas no compuestas"): if (put_page_testzero(page)) free_the_page(page, order); else if (!PageHead(página)) while (orden-- > 0) free_the_page(página + (1 << orden), orden); Entonces, el problema es que la verificación PageHead es picante porque en este punto ya eliminamos nuestra referencia a la página. Entonces, incluso si ingresamos con una página compuesta, la página ya se puede liberar y PageHead puede devolver falso y terminaremos liberando todas las páginas finales causando un double free.
Impacto
Puntuación base 3.x
5.50
Gravedad 3.x
MEDIA
Productos y versiones vulnerables
| CPE | Desde | Hasta |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.9.2 (incluyendo) | 5.10.168 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (incluyendo) | 5.15.94 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (incluyendo) | 6.1.12 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:6.2:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.2:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.2:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.2:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.2:rc5:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.2:rc6:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.2:rc7:*:*:*:*:*:* |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página
Referencias a soluciones, herramientas e información
- https://git.kernel.org/stable/c/0a626e27f984dfbe96bd8e4fd08f20a2ede3ea23
- https://git.kernel.org/stable/c/3af734f3eac6f70ef8e272a80da40544b9d0f2b5
- https://git.kernel.org/stable/c/3b4c045a98f53a8890a94bb5846a390c8e39e673
- https://git.kernel.org/stable/c/462a8e08e0e6287e5ce13187257edbf24213ed03
- https://git.kernel.org/stable/c/0a626e27f984dfbe96bd8e4fd08f20a2ede3ea23
- https://git.kernel.org/stable/c/3af734f3eac6f70ef8e272a80da40544b9d0f2b5
- https://git.kernel.org/stable/c/3b4c045a98f53a8890a94bb5846a390c8e39e673
- https://git.kernel.org/stable/c/462a8e08e0e6287e5ce13187257edbf24213ed03



