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

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

Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-416 Utilización después de liberación
Fecha de publicación:
27/12/2024
Última modificación:
24/03/2025

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: f2fs: corregir ejecución en f2fs_stop_gc_thread concurrente En mi caso de prueba, las llamadas concurrentes a f2fs shutdown informan el siguiente seguimiento de pila: Oops: error de protección general, probablemente para dirección no canónica 0xc6cfff63bb5513fc: 0000 [#1] PREEMPT SMP PTI CPU: 0 UID: 0 PID: 678 Comm: f2fs_rep_shutdo No contaminado 6.12.0-rc5-next-20241029-g6fb2fa9805c5-dirty #85 Seguimiento de llamada: ? show_regs+0x8b/0xa0 ? __die_body+0x26/0xa0 ? die_addr+0x54/0x90 ? exc_proteccion_general+0x24b/0x5c0 ? asm_exc_proteccion_general+0x26/0x30 ? kthread_stop+0x46/0x390 f2fs_stop_gc_thread+0x6c/0x110 f2fs_do_shutdown+0x309/0x3a0 f2fs_ioc_shutdown+0x150/0x1c0 __f2fs_ioctl+0xffd/0x2ac0 f2fs_ioctl+0x76/0xe0 vfs_ioctl+0x23/0x60 __x64_sys_ioctl+0xce/0xf0 x64_sys_call+0x2b1b/0x4540 do_syscall_64+0xa7/0x240 entry_SYSCALL_64_after_hwframe+0x76/0x7e La causa raíz es una condición de ejecución en f2fs_stop_gc_thread() llamado desde diferentes rutas de apagado de f2fs: [CPU0] [CPU1] ---------------------- ----------------------- f2fs_stop_gc_thread f2fs_stop_gc_thread gc_th = sbi->gc_thread gc_th = sbi->gc_thread kfree(gc_th) sbi->gc_thread = NULL < gc_th != NULL > kthread_stop(gc_th->f2fs_gc_task) //UAF el commit c7f114d864ac ("f2fs: corrección para evitar el use-after-free en f2fs_stop_gc_thread()") intentó corregir este problema al usar un semáforo de lectura para evitar ejecuciones entre los subprocesos de apagado y remontaje, pero no logra evitar todas las condiciones de ejecuciones. Arréglelo convirtiendo en bloqueo de escritura s_umount en f2fs_do_shutdown().

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.16 (incluyendo) 6.6.64 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (incluyendo) 6.11.11 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.12 (incluyendo) 6.12.2 (excluyendo)