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

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

Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
11/01/2025
Última modificación:
03/02/2025

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: arm64: ptrace: arreglo de SETREGSET parcial para NT_ARM_TAGGED_ADDR_CTRL Actualmente, tagged_addr_ctrl_set() no inicializa la variable temporal 'ctrl', y una llamada a SETREGSET con una longitud de cero la dejará sin inicializar. En consecuencia, tagged_addr_ctrl_set() consumirá un valor arbitrario, lo que potencialmente filtrará hasta 64 bits de memoria de la pila del kernel. La lectura está limitada a una ranura específica en la pila, y el problema no proporciona un mecanismo de escritura. Como set_tagged_addr_ctrl() solo acepta valores donde los bits [63:4] sean cero y rechaza otros valores, un intento de SETREGSET parcial tendrá éxito o fallará aleatoriamente dependiendo del valor del valor no inicializado, y la exposición es significativamente limitada. Solucione esto inicializando el valor temporal antes de copiar el conjunto de registros desde el espacio de usuario, como para otros conjuntos de registros (por ejemplo, NT_PRSTATUS, NT_PRFPREG, NT_ARM_SYSTEM_CALL). En el caso de una escritura de longitud cero, se conservará el valor existente de la dirección etiquetada ctrl. El conjunto de registros NT_ARM_TAGGED_ADDR_CTRL solo es visible en la vista user_aarch64_view utilizada por una tarea nativa de AArch64 para manipular otra tarea nativa de AArch64. Como get_tagged_addr_ctrl() solo devuelve un valor de error cuando se llama para una tarea de compatibilidad, tagged_addr_ctrl_get() y tagged_addr_ctrl_set() nunca deben observar un valor de error de get_tagged_addr_ctrl(). Agregue un WARN_ON_ONCE() a ambos para indicar que dicho error sería inesperado y que la gestión de errores no falta en ninguno de los casos.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.10 (incluyendo) 5.10.231 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 (incluyendo) 5.15.174 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (incluyendo) 6.1.120 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 (incluyendo) 6.6.66 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (incluyendo) 6.12.5 (excluyendo)
cpe:2.3:o:linux:linux_kernel:6.13:rc1:*:*:*:*:*:*