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

Vulnerabilidad en Linux (CVE-2026-46290)

Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
08/06/2026
Última modificación:
23/07/2026

Descripción

En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:<br /> <br /> x86/efi: Corrección del manejo elegante de fallos después de los cambios en softirq de FPU<br /> <br /> Desde el commit d02198550423 (&amp;#39;x86/fpu: Mejorar el rendimiento criptográfico haciendo que la FPU en modo kernel sea utilizable de forma fiable en softirqs&amp;#39;), kernel_fpu_begin() llama a fpregs_lock() que usa local_bh_disable() en lugar del preempt_disable() anterior. Esto establece SOFTIRQ_OFFSET en preempt_count durante toda la llamada al servicio de tiempo de ejecución de EFI, haciendo que in_interrupt() devuelva verdadero en un contexto de tarea normal.<br /> <br /> El gestor elegante de fallos de página efi_crash_gracefully_on_page_fault() usa in_interrupt() para salir de los fallos en un contexto de interrupción real. Con SOFTIRQ_OFFSET ahora establecido, el gestor siempre sale, dejando los fallos de página del firmware EFI sin manejar. Esto escala a die() que también ve in_interrupt() como verdadero y llama a panic(&amp;#39;Excepción fatal en interrupción&amp;#39;), resultando en una congelación dura del sistema. En sistemas con firmware defectuoso que dispara fallos de página durante las llamadas de tiempo de ejecución de EFI (p. ej., acceder a memoria no mapeada en GetTime()), esto causa un cuelgue irrecuperable en lugar de la recuperación elegante EFI_ABORTED esperada.<br /> <br /> Solución reemplazando in_interrupt() con !in_task(). Esto preserva la intención original de salir por interrupciones o fallos NMI, mientras ya no se dispara falsamente desde el local_bh_disable() de la ruta de código de la FPU.<br /> <br /> [ardb: Sashiko detectó que usar &amp;#39;in_hardirq() || in_nmi()&amp;#39; deja una ventana donde un softirq puede ser tomado antes de que se llame a fpregs_lock(), pero después de que efi_rts_work.efi_rts_id haya sido asignado, y cualquier fallo de página que ocurra en esa ventana será entonces mal identificado como causado por el firmware. En su lugar, use !in_task(), que incorpora in_serving_softirq(). ]

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.15 (incluyendo) 6.18.30 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.19 (incluyendo) 7.0.7 (excluyendo)
cpe:2.3:o:linux:linux_kernel:7.1:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.1:rc2:*:*:*:*:*:*