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

Vulnerabilidad en kernel de Linux (CVE-2025-21632)

Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
19/01/2025
Última modificación:
19/01/2025

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: x86/fpu: Asegúrese de que la pila de sombras esté activa antes de "obtener" registros El soporte de la pila de sombras x86 tiene su propio conjunto de registros. Esos registros son administrados por XSAVE, pero son "componentes de estado de supervisor", lo que significa que el espacio de usuario no puede tocarlos con XSAVE/XRSTOR. También significa que no son accesibles desde la ABI de ptrace existente para el estado XSAVE. Por lo tanto, hay una nueva interfaz get/set de ptrace para ello. El código de conjunto de registros que usa ptrace proporciona un controlador ->active() además de los de obtención/configuración. Para la pila de sombras, este controlador ->active() verifica que la pila de sombras esté habilitada a través del bit ARCH_SHSTK_SHSTK en la estructura del hilo. El controlador ->active() se verifica desde algunos sitios de llamada de los controladores get/set de conjuntos de registros, pero no de los de ptrace. Esto no se comprendió cuando se implementó el soporte de la pila de sombras. Como resultado, ambos manejadores set/get pueden ser llamados con XFEATURE_CET_USER en su estado init, lo que haría que get_xsave_addr() devuelva NULL y active un WARN_ON(). El manejador ssp_set() afortunadamente tiene una verificación ssp_active() para evitar sorprender al kernel con el comportamiento de la pila shadow cuando el kernel no está listo para ello (ARCH_SHSTK_SHSTK==0). Esa verificación simplemente sucedió para evitar la advertencia. Pero el lado ->get() no tuvo tanta suerte. Puede ser llamado con las pilas shadow deshabilitadas, lo que activa la advertencia en la práctica, como lo informó Christina Schimpe: ADVERTENCIA: CPU: 5 PID: 1773 en arch/x86/kernel/fpu/regset.c:198 ssp_get+0x89/0xa0 [...] Seguimiento de llamadas: ? show_regs+0x6e/0x80 ? ssp_get+0x89/0xa0 ? __warn+0x91/0x150 ? ssp_get+0x89/0xa0 ? report_bug+0x19d/0x1b0 ? handle_bug+0x46/0x80 ? exc_invalid_op+0x1d/0x80 ? asm_exc_invalid_op+0x1f/0x30 ? __pfx_ssp_get+0x10/0x10 ? ssp_get+0x89/0xa0 ? ssp_get+0x52/0xa0 __regset_get+0xad/0xf0 copy_regset_to_user+0x52/0xc0 ptrace_regset+0x119/0x140 ptrace_request+0x13c/0x850 ? wait_task_inactive+0x142/0x1d0 ? do_syscall_64+0x6d/0x90 arch_ptrace+0x102/0x300 [...] Asegúrese de que las pilas de sombras estén activas en un hilo antes de buscarlas en el búfer XSAVE. Dado que ARCH_SHSTK_SHSTK y user_ssp[SHSTK_EN] se configuran al mismo tiempo, la comprobación activa garantiza que habrá algo que encontrar en el búfer XSAVE. [ dhansen: registro de cambios/asunto ajustes ]

Impacto