Vulnerabilidad en kernel de Linux (CVE-2024-45022)
Gravedad CVSS v3.1:
MEDIA
Tipo:
CWE-787
Escritura fuera de límites
Fecha de publicación:
11/09/2024
Última modificación:
03/11/2025
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: mm/vmalloc: se corrige la asignación de páginas si vm_area_alloc_pages() con un retroceso de orden superior al orden 0 __vmap_pages_range_noflush() asume que su argumento pages** contiene páginas con el mismo cambio de página. Sin embargo, desde el commit e9c3cda4d86e ("mm, vmalloc: se corrigen las asignaciones de orden superior __GFP_NOFAIL"), si gfp_flags incluye __GFP_NOFAIL con orden superior en vm_area_alloc_pages() y la asignación de páginas falla para el orden superior, pages** puede contener dos cambios de página diferentes (orden superior y orden 0). Esto podría provocar que __vmap_pages_range_noflush() realice asignaciones incorrectas, lo que podría provocar una corrupción de memoria. Los usuarios pueden encontrarse con esto de la siguiente manera (vmap_allow_huge = true, 2M es para PMD_SIZE): kvmalloc(2M, __GFP_NOFAIL|GFP_X) __vmalloc_node_range_noprof(vm_flags=VM_ALLOW_HUGE_VMAP) vm_area_alloc_pages(order=9) ---> la asignación del pedido 9 falló y se vuelve al pedido 0 vmap_pages_range() vmap_pages_range_noflush() __vmap_pages_range_noflush(page_shift = 21) ----> ocurre una asignación incorrecta Podemos eliminar el código de respaldo porque si falla una asignación de orden alto, __vmalloc_node_range_noprof() volverá a intentarlo con el pedido 0. Por lo tanto, no es necesario volver al pedido 0 aquí. Por lo tanto, solucione esto eliminando el código de respaldo.
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.1.95 (incluyendo) | 6.1.107 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.3 (incluyendo) | 6.6.48 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (incluyendo) | 6.10.7 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:6.11:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.11:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.11:rc3:*:*:*:*:*:* |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página
Referencias a soluciones, herramientas e información
- https://git.kernel.org/stable/c/61ebe5a747da649057c37be1c37eb934b4af79ca
- https://git.kernel.org/stable/c/c91618816f4d21fc574d7577a37722adcd4075b2
- https://git.kernel.org/stable/c/de7bad86345c43cd040ed43e20d9fad78a3ee59f
- https://git.kernel.org/stable/c/fd1ffbb50ef4da5e1378a46616b6d7407dc795da
- https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html



