Vulnerabilidad en kernel de Linux (CVE-2024-56610)
Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
27/12/2024
Última modificación:
27/12/2024
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: kcsan: Convertir report_filterlist_lock en un raw_spinlock Ran Xiaokai informa que con un kernel PREEMPT_RT habilitado para KCSAN, podemos ver símbolos como: | ERROR: función inactiva llamada desde un contexto no válido en kernel/locking/spinlock_rt.c:48 | in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 0, name: swapper/1 | preempt_count: 10002, esperado: 0 | Profundidad de anidación de RCU: 0, esperado: 0 | no hay bloqueos mantenidos por swapper/1/0. | Marca de evento irq: 156674 | hardirqs habilitados por última vez en (156673): [] do_idle+0x1f9/0x240 | hardirqs se deshabilitó por última vez en (156674): [] sysvec_apic_timer_interrupt+0x14/0xc0 | softirqs se habilita por última vez en (0): [] copy_process+0xfc7/0x4b60 | softirqs se deshabilitó por última vez en (0): [<000000000000000>] 0x0 | Preempción deshabilitada en: | [] paint_ptr+0x2a/0x90 | CPU: 1 UID: 0 PID: 0 Comm: swapper/1 No contaminado 6.11.0+ #3 | Nombre del hardware: PC estándar QEMU (i440FX + PIIX, 1996), BIOS rel-1.12.0-0-ga698c8995f-prebuilt.qemu.org 01/04/2014 | Seguimiento de llamadas: | | dump_stack_lvl+0x7e/0xc0 | dump_stack+0x1d/0x30 | __might_resched+0x1a2/0x270 | rt_spin_lock+0x68/0x170 | kcsan_skip_report_debugfs+0x43/0xe0 | print_report+0xb5/0x590 | kcsan_report_known_origin+0x1b1/0x1d0 | kcsan_setup_watchpoint+0x348/0x650 | En caso de detectarse una ejecución de datos, la lógica de informes de KCSAN comprueba si debe filtrar el informe. Esa lista está protegida por el spinlock report_filterlist_lock *no sin procesar* que puede estar inactivo en los núcleos RT. Dado que KCSAN puede informar ejecucións de datos en cualquier contexto, conviértalo en un spinlock sin procesar. Esto requiere tener cuidado con el momento de asignar memoria para la lista de filtros en sí, lo que se puede hacer a través de la interfaz debugfs de KCSAN. La modificación concurrente de la lista de filtros a través de debugfs debería ser poco frecuente: la estrategia elegida es preasignar memoria de manera optimista antes de la sección crítica y descartarla si no se utiliza.
Impacto
Referencias a soluciones, herramientas e información
- https://git.kernel.org/stable/c/0ab4951c1473c7d1ceaf1232eb927109cd1c4859
- https://git.kernel.org/stable/c/59458fa4ddb47e7891c61b4a928d13d5f5b00aa0
- https://git.kernel.org/stable/c/889a0d3a35fdedba1c5dcb6410c95c32421680ec
- https://git.kernel.org/stable/c/dca4e74a918586913d251c0b359e8cc96a3883ea
- https://git.kernel.org/stable/c/ea6588abcc15d68fdeae777ffe3dd74c02eab407
- https://git.kernel.org/stable/c/f4f2ef66d288ea796ddb8ecbdc2df074ab2d5f4d