Vulnerabilidad en kernel de Linux (CVE-2021-4440)
Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-400
Consumo de recursos no controlado (Agotamiento de recursos)
Fecha de publicación:
25/06/2024
Última modificación:
24/03/2025
Descripción
En el kernel de Linux, se resolvió la siguiente vulnerabilidad: x86/xen: elimine el commit de llamada paravirt USERGS_SYSRET64 afd30525a659ac0ae0904f0cb4a2ca75522c3123 en sentido ascendente. USERGS_SYSRET64 se usa para regresar de una llamada al sistema a través de SYSRET, pero un invitado Xen PV usará la hiperllamada IRET, ya que no hay ninguna hiperllamada PV sysret definida. Entonces, en lugar de probar todos los requisitos previos para hacer un sysret y luego alterar la pila para Xen PV nuevamente para hacer un iret, simplemente use la salida iret desde el principio. Esto se puede hacer fácilmente a través de una ALTERNATIVA como ya se hace para el caso de compatibilidad con sysenter. Cabe señalar que esto reduce la optimización en Xen para no restaurar algunos registros al regresar al modo de usuario, pero parece que las instrucciones guardadas en el kernel compensan con creces esta caída (una compilación del kernel en un invitado Xen PV fue un poco más rápido con este parche aplicado). Mientras lo hace, elimine los restos obsoletos de sysret32. [pawan: Brad Spengler y Salvatore Bonaccorso informaron de un problema con el commit del backport 5.10 edc702b4a820 ("x86/entry_64: Agregar VERW justo antes de la transición del espacio de usuario"). Cuando CONFIG_PARAVIRT_XXL=y, CLEAR_CPU_BUFFERS no se ejecuta en la ruta syscall_return_via_sysret ya que USERGS_SYSRET64 está parcheado en tiempo de ejecución para: .cpu_usergs_sysret64 = { 0x0f, 0x01, 0xf8, 0x48, 0x0f, 0x07 }, // swapgs; sysretq al que le falta CLEAR_CPU_BUFFERS. Resulta que eliminar USERGS_SYSRET64 simplifica el código, permitiendo que CLEAR_CPU_BUFFERS se agregue explícitamente a la ruta syscall_return_via_sysret. A continuación se muestra CONFIG_PARAVIRT_XXL=y y se aplicó este parche: syscall_return_via_sysret: ... <+342>: swapgs <+345>: xchg %ax,%ax <+347>: verw -0x1a2(%rip) <---- -- <+354>: sysretq ]
Impacto
Puntuación base 3.x
8.80
Gravedad 3.x
ALTA
Productos y versiones vulnerables
CPE | Desde | Hasta |
---|---|---|
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.10.215 (incluyendo) | 5.10.218 (excluyendo) |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página