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

Vulnerabilidad en kernel de Linux (CVE-2024-57952)

Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
12/02/2025
Última modificación:
14/02/2025

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: Revertir "libfs: fix infinite directory reads for offset dir" El asignador de desplazamiento de directorio actual (basado en mtree_alloc_cyclic) almacena el siguiente valor de desplazamiento a devolver en octx->next_offset. Este mecanismo normalmente devuelve valores que aumentan monótonamente con el tiempo. Sin embargo, con el tiempo, el valor de desplazamiento recientemente asignado vuelve a un número bajo (por ejemplo, 2) que es menor que otros valores de desplazamiento ya asignados. Yu Kuai informa que, después del commit 64a7ce76fb90 ("libfs: fix infinite directory reads for offset dir"), si el asignador de desplazamiento de un directorio se cierra, las entradas existentes ya no son visibles a través de readdir/getdents porque offset_readdir() deja de enumerar las entradas una vez que el desplazamiento de una entrada es mayor que octx->next_offset. Estas entradas desaparecen de forma persistente: se pueden buscar, pero nunca volverán a aparecer en la salida de readdir(3). La razón para esto es que la confirmación trata los desplazamientos de directorio como valores enteros que aumentan monótonamente en lugar de cookies opacas, e introduce esta comparación: if (dentry2offset(dentry) >= last_index) { En plataformas de 64 bits, el límite superior del valor del desplazamiento de directorio es 2^63 - 1. Los desplazamientos de directorio aumentarán monótonamente durante millones de años sin envolverse. Sin embargo, en plataformas de 32 bits, LONG_MAX es 2^31 - 1. El asignador puede envolverse después de solo unas pocas semanas (en el peor de los casos). Revertir el commit 64a7ce76fb90 ("libfs: arreglar lecturas de directorio infinitas para el desplazamiento dir") para prepararse para una solución que pueda funcionar correctamente en sistemas de 32 bits y podría aplicarse a núcleos LTS recientes donde shmem emplea el mecanismo simple_offset.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.11 (incluyendo) 6.12.12 (excluyendo)
cpe:2.3:o:linux:linux_kernel:6.13:-:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc6:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc7:*:*:*:*:*:*