Vulnerabilidad en kernel de Linux (CVE-2024-46701)
Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
13/09/2024
Última modificación:
19/09/2024
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: libfs: arregla lecturas de directorio infinitas para el directorio offset Después de cambiar las operaciones de directorio tmpfs de simple_dir_operations a simple_offset_dir_operations, cada cambio de nombre que se produzca llenará new dentry en el árbol de maple del directorio de destino (&SHMEM_I(inode)->dir_offsets->mt) con una clave libre que comienza con octx->newx_offset, y luego establece newx_offset igual a la clave libre + 1. Esto provocará una combinación de lectura de directorio infinita con el cambio de nombre ocurrido al mismo tiempo, lo que falla generic/736 en xfstests (los detalles se muestran a continuación). 1. crear 5000 archivos (1 2 3...) bajo un directorio 2. llamar a readdir(man 3 readdir) una vez, y obtener una entrada 3. renombrar(entrada, "TEMPFILE"), luego renombrar("TEMPFILE", entrada) 4. repetir 2~3 veces, hasta que readdir no devuelva nada o repetimos demasiadas veces (tmpfs interrumpe la prueba con la segunda condición) Elegimos la misma lógica que el commit 9b378f6ad48cf ("btrfs: arregla lecturas infinitas de directorio") para arreglarlo, registrar el last_index cuando abrimos el directorio, y no emitir la entrada cuyo índice >= last_index. El file->private_data que ahora se usa en el directorio de desplazamiento se puede usar directamente para hacer esto, y también actualizamos el last_index cuando buscamos el archivo dir. [brauner: solo actualizamos last_index después de la búsqueda cuando el desplazamiento es cero como sugirió Jan]
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:*:*:*:*:*:*:*:* | 6.6 (incluyendo) | 6.10.7 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:6.11:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.11:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.11:rc3:*:*:*:*:*:* |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página



