Vulnerabilidad en kernel de Linux (CVE-2024-56617)
Gravedad CVSS v3.1:
MEDIA
Tipo:
CWE-476
Desreferencia a puntero nulo (NULL)
Fecha de publicación:
27/12/2024
Última modificación:
16/01/2025
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: cacheinfo: Asignar memoria durante la conexión en caliente de la CPU si no se hace desde la CPU principal. el commit 5944ce092b97 ("arch_topology: Generar cacheinfo desde la CPU principal") añade una funcionalidad que las arquitecturas pueden utilizar para asignar y generar opcionalmente cacheinfo de forma temprana durante el arranque. el commit 6539cffa9495 ("cacheinfo: Añadir inicializador de nivel temprano específico de la arquitectura") permite que las CPU secundarias corrijan (y reasignen memoria) los datos de cacheinfo si es necesario. Si no se utiliza la funcionalidad de generación temprana y cacheinfo no necesita corrección, nunca se asigna memoria para cacheinfo. x86 no utiliza la funcionalidad de generación temprana. En consecuencia, durante la devolución de llamada hotplug de CPU de cacheinfo, last_level_cache_is_valid() intenta desreferenciar un puntero NULL: BUG: kernel NULL pointer dereference, address: 0000000000000100 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not present page PGD 0 P4D 0 Oops: 0000 [#1] PREEPMT SMP NOPTI CPU: 0 PID 19 Comm: cpuhp/0 Not tainted 6.4.0-rc2 #1 RIP: 0010: last_level_cache_is_valid+0x95/0xe0a Asigne memoria para cacheinfo durante la devolución de llamada hotplug de CPU de cacheinfo si no se hizo antes. Además, antes de determinar la validez de la información de caché de último nivel, asegúrese de que se haya asignado. No basta con comprobar si hay cache_leaves() distintos de cero, ya que algunas arquitecturas (por ejemplo, los procesadores Intel) tienen cache_leaves() distintos de cero antes de la asignación. La anulación de referencias a cacheinfo NULL puede ocurrir en update_per_cpu_data_slice_size(). Esta función itera sobre todas las CPU en línea. Sin embargo, es posible que una CPU se haya conectado recientemente, pero que su cacheinfo aún no se haya asignado. Mientras esté aquí, elimine una sangría innecesaria en allocate_cache_info(). [ bp: Masaje. ]
Impacto
Puntuación base 3.x
5.50
Gravedad 3.x
MEDIA
Productos y versiones vulnerables
CPE | Desde | Hasta |
---|---|---|
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.4 (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:*:*:*:*:*:* |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página