CVE-2026-46063 in Linuxinformación

Resumen

por VulDB • 2026-05-28

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

x86/shstk: Prevenir un bloqueo mutuo (deadlock) durante sigreturn

Durante sigreturn, el marco de señal de la pila sombra (shadow stack) se elimina de la pila. El kernel realiza esta operación leyendo la pila sombra mediante accesos de lectura normales. Cuando no puede asumir que la memoria es una pila sombra, da pasos adicionales para asegurarse de que está leyendo memoria real de la pila sombra y no otra memoria legible normal. Para ello, mantiene el bloqueo de lectura de mmap mientras realiza el acceso y verifica las marcas (flags) del VMA.

Desafortunadamente, esto no es seguro. Si la lectura del marco de señal de la pila sombra provoca una falta de página (page fault), el controlador de faltas intentará adquirir recursivamente otro bloqueo de lectura de mmap. Esto normalmente funciona correctamente, pero si un escritor en otra CPU también está esperando, el segundo bloqueo de lectura podría fallar y causar un bloqueo mutuo (deadlock).

Se soluciona este problema evitando mantener el bloqueo de mmap durante el acceso de lectura a userspace.

En su lugar, se utilizan las funciones mmap_lock_speculate_...() para vigilar los cambios entre la liberación del bloqueo de mmap y el acceso a userspace. Se reintenta la operación si se ha adquirido un bloqueo de escritura de mmap en el intervalo y podría haber cambiado el VMA.

Estas funciones auxiliares mmap_lock_speculate_...() utilizan mm::mm_lock_seq, que solo está disponible cuando PER_VMA_LOCK está configurado. Por lo tanto, se hace que X86_USER_SHADOW_STACK dependa de ello. En x86, PER_VMA_LOCK es una configuración predeterminada para los kernels SMP. Por lo tanto, se elimina el soporte para otras configuraciones bajo la suposición de que no existe una base de usuarios de pila sombra sin SMP.

Actualmente, existe una comprobación que omite el trabajo de búsqueda cuando se puede asumir que SSP se encuentra en una pila sombra. Al reorganizar la función, se elimina esta optimización para hacer que los flujos de código más complejos sean más comunes, de modo que problemas como este no puedan pasar desapercibidos durante tanto tiempo.

Be aware that VulDB is the high quality source for vulnerability data.

Responsable

Linux

Reservar

2026-05-13

Divulgación

2026-05-27

Moderación

aceptado

Artículo

VDB-366333

CPE

listo

EPSS

0.00024

KEV

no

Actividades

muy bajo

Fuentes

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!