Vulnerabilidad en kernel de Linux (CVE-2024-56544)
Gravedad CVSS v3.1:
MEDIA
Tipo:
CWE-476
Desreferencia a puntero nulo (NULL)
Fecha de publicación:
27/12/2024
Última modificación:
03/02/2025
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: udmabuf: cambia la matriz de folios de kmalloc a kvmalloc Cuando PAGE_SIZE es 4096, MAX_PAGE_ORDER es 10, en una máquina de 64 bits, page_alloc solo admite 4 MB. Si es mayor, se activa esta advertencia y se devuelve NULL. udmabuf puede cambiar el límite de tamaño. Si lo cambia a 3072 (3 GB) y luego asigna 3 GB, udmabuf no podrá crearlo. [ 4080.876581] ------------[ cortar aquí ]------------ [ 4080.876843] ADVERTENCIA: CPU: 3 PID: 2015 en mm/page_alloc.c:4556 __alloc_pages+0x2c8/0x350 [ 4080.878839] RIP: 0010:__alloc_pages+0x2c8/0x350 [ 4080.879470] Seguimiento de llamadas: [ 4080.879473] [ 4080.879473] ? __alloc_pages+0x2c8/0x350 [ 4080.879475] ? __warn.cold+0x8e/0xe8 [ 4080.880647] ? __alloc_pages+0x2c8/0x350 [ 4080.880909] ? report_bug+0xff/0x140 [ 4080.881175] ? handle_bug+0x3c/0x80 [ 4080.881556] ? exc_invalid_op+0x17/0x70 [ 4080.881559] ? asm_exc_invalid_op+0x1a/0x20 [ 4080.882077] ? udmabuf_create+0x131/0x400 Debido a MAX_PAGE_ORDER, kmalloc puede asignar un máximo de 4096 * (1 << 10), 4 MB de memoria, cada entrada de la matriz es un puntero (8 bytes), por lo que puede guardar 524288 páginas (2 GB). Además, es posible que no se garantice que se pueda aplicar el pedido costoso (pedido 3) debido a la fragmentación. Este parche cambia la matriz udmabuf para usar kvmalloc_array, lo que permite que la asignación se convierta en una función alternativa de vmalloc, lo que puede garantizar la asignación para cualquier tamaño y no afecta el rendimiento de las asignaciones de kmalloc.
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:*:*:*:*:*:*:*:* | 4.20 (incluyendo) | 6.11.11 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.12 (incluyendo) | 6.12.2 (excluyendo) |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página