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

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

Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
21/10/2024
Última modificación:
13/11/2024

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: x86/ioapic: Manejar errores de asignación con elegancia Breno observó pánicos al usar failslab bajo ciertas condiciones durante el tiempo de ejecución: no se puede asignar irq_pin_list (-1,0,20) Pánico del kernel: no se sincroniza: IO-APIC: no se pudo agregar irq-pin. No se puede continuar panic+0x4e9/0x590 mp_irqdomain_alloc+0x9ab/0xa80 irq_domain_alloc_irqs_locked+0x25d/0x8d0 __irq_domain_alloc_irqs+0x80/0x110 mp_map_pin_to_irq+0x645/0x890 acpi_register_gsi_ioapic+0xe6/0x150 hpet_open+0x313/0x480 Ese es un pánico sin sentido que es un remanente del código IO/APIC histórico que entró en pánico durante el arranque temprano cuando falló la asignación de interrupción. El único lugar que podría justificar el pánico es el código timer_check() de PIT/HPET que intenta averiguar si la interrupción del temporizador se entrega a través de IO/APIC. Pero ese código no requiere manejar fallos de asignación de interrupciones. Si no se puede asignar la interrupción, la entrega del temporizador fallo y entra en pánico debido a eso o vuelve al modo heredado. Solucione esto eliminando el contenedor de pánico alrededor de __add_pin_to_irq_node() y haciendo que mp_irqdomain_alloc() sea consciente de la condición de fallo y la maneje como cualquier otra fallo en esta función de manera elegante.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.15.168 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (incluyendo) 6.1.113 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 (incluyendo) 6.6.55 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (incluyendo) 6.10.14 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.11 (incluyendo) 6.11.3 (excluyendo)