Vulnerabilidad en kernel de Linux (CVE-2022-48731)
Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
20/06/2024
Última modificación:
01/04/2025
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: mm/kmemleak: evita escanear posibles agujeros enormes. Al usar devm_request_free_mem_region() y devm_memremap_pages() para agregar memoria ZONE_DEVICE, si se solicitaba, el pfn final de la región de memoria libre era enorme (por ejemplo, 0x400000000), el node_end_pfn() también será enorme (ver move_pfn_range_to_zone()). Por lo tanto, crea un enorme agujero entre node_start_pfn() y node_end_pfn(). Descubrimos que en algunas APU AMD, AMDKFD solicitó una región de memoria libre y creó un agujero enorme. En tal caso, el siguiente fragmento de código simplemente estaba haciendo un bucle test_bit() ocupado en el enorme agujero. for (pfn = start_pfn; pfn < end_pfn; pfn++) { estructura página *página = pfn_to_online_page(pfn); si (!página) continúa; ... } Entonces obtuvimos un bloqueo suave: perro guardián: ERROR: bloqueo suave - ¡CPU#6 bloqueada durante 26 segundos! [bash:1221] CPU: 6 PID: 1221 Comm: bash No contaminado 5.15.0-custom #1 RIP: 0010:pfn_to_online_page+0x5/0xd0 Seguimiento de llamadas:? kmemleak_scan+0x16a/0x440 kmemleak_write+0x306/0x3a0 ? common_file_perm+0x72/0x170 full_proxy_write+0x5c/0x90 vfs_write+0xb9/0x260 ksys_write+0x67/0xe0 __x64_sys_write+0x1a/0x20 do_syscall_64+0x3b/0xc0 Entry_SYSCALL_64_after_hwframe+0x4 4/0xae Hice algunas pruebas con el parche. (1) módulo amdgpu descargado antes del parche: usuario real 0m0.976s 0m0.000s sys 0m0.968s después del parche: usuario real 0m0.981s 0m0.000s sys 0m0.973s (2) módulo amdgpu cargado antes del parche: real 0m35 .365s usuario 0m0.000s sys 0m35.354s después del parche: real 0m1.049s usuario 0m0.000s sys 0m1.042s
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:*:*:*:*:*:*:*:* | 5.4.178 (excluyendo) | |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.5 (incluyendo) | 5.10.99 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (incluyendo) | 5.15.22 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (incluyendo) | 5.16.8 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:5.17:rc1:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.17:rc2:*:*:*:*:*:* |
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/352715593e81b917ce1b321e794549815b850134
- https://git.kernel.org/stable/c/a5389c80992f0001ee505838fe6a8b20897ce96e
- https://git.kernel.org/stable/c/c10a0f877fe007021d70f9cada240f42adc2b5db
- https://git.kernel.org/stable/c/cebb0aceb21ad91429617a40e3a17444fabf1529
- https://git.kernel.org/stable/c/d3533ee20e9a0e2e8f60384da7450d43d1c63d1a
- https://git.kernel.org/stable/c/352715593e81b917ce1b321e794549815b850134
- https://git.kernel.org/stable/c/a5389c80992f0001ee505838fe6a8b20897ce96e
- https://git.kernel.org/stable/c/c10a0f877fe007021d70f9cada240f42adc2b5db
- https://git.kernel.org/stable/c/cebb0aceb21ad91429617a40e3a17444fabf1529
- https://git.kernel.org/stable/c/d3533ee20e9a0e2e8f60384da7450d43d1c63d1a