Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

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.

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:*:*:*:*:*:*