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

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

Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
19/11/2024
Última modificación:
27/11/2024

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: resource,kexec: walk_system_ram_res_rev debe conservar los indicadores de recursos walk_system_ram_res_rev() descarta erróneamente los indicadores de recursos al pasar la información a la devolución de llamada. Esto hace que los sistemas con memoria IORESOURCE_SYSRAM_DRIVER_MANAGED tengan estos recursos seleccionados durante kexec para almacenar búferes kexec si esa memoria está ubicada por encima de la RAM normal del sistema. Esto conduce a un comportamiento indefinido después del reinicio. Si nunca se toca el búfer kexec, no sucede nada. Si se toca el búfer kexec, podría provocar un bloqueo (como a continuación) o un comportamiento indefinido. Probado en un sistema con expansores de memoria CXL con memoria administrada por el controlador, TPM habilitado y CONFIG_IMA_KEXEC=y. Agregar printk mostró que los indicadores se descartaban y, como resultado, la verificación de IORESOURCE_SYSRAM_DRIVER_MANAGED pasa. find_next_iomem_res: name(System RAM (kmem)) start(10000000000) end(1034fffffff) flags(83000200) locate_mem_hole_top_down: start(10000000000) end(1034fffffff) flags(0) [.] ERROR: no se puede manejar el error de página para la dirección: ffff89834ffff000 [.] #PF: acceso de lectura del supervisor en modo kernel [.] #PF: error_code(0x0000) - página no presente [.] PGD c04c8bf067 P4D c04c8bf067 PUD c04c8be067 PMD 0 [.] Oops: 0000 [#1] SMP [.] RIP: 0010:lista_de_mediciones_de_restauración_ima+0x95/0x4b0 [.] RSP: 0018:ffffc900000d3a80 EFLAGS: 00010286 [.] RAX: 0000000000001000 RBX: 0000000000000000 RCX: ffff89834ffff000 [.] RDX: 0000000000000018 RSI: ffff89834ffff000 RDI: ffff89834ffff018 [.] RBP: ffffc900000d3ba0 R08: 0000000000000020 R09: ffff888132b8a900 [.] R10: 4000000000000000 R11: 000000003a616d69 R12: 0000000000000000 [.] R13: ffffffff8404ac28 R14: 0000000000000000 R15: ffff89834ffff000 [.] FS: 000000000000000(0000) GS:ffff893d44640000(0000) knlGS:0000000000000000 [.] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [.] ata5: enlace SATA inactivo (SStatus 0 SControl 300) [.] CR2: ffff89834ffff000 CR3: 000001034d00f001 CR4: 0000000000770ef0 [.] PKRU: 55555554 [.] Seguimiento de llamadas: [.] [.] ? __die+0x78/0xc0 [.] ? page_fault_oops+0x2a8/0x3a0 [.] ? exc_page_fault+0x84/0x130 [.] ? asm_exc_page_fault+0x22/0x30 [.] ? ima_restore_measurement_list+0x95/0x4b0 [.] ? plantilla_desc_init_fields+0x317/0x410 [.] ? crypto_alloc_tfm_node+0x9c/0xc0 [.] ? init_ima_lsm+0x30/0x30 [.] ima_load_kexec_buffer+0x72/0xa0 [.] ima_init+0x44/0xa0 [.] __initstub__kmod_ima__373_1201_init_ima7+0x1e/0xb0 [.] ? init_ima_lsm+0x30/0x30 [.] hacer_una_initcall+0xad/0x200 [.] ? idr_alloc_cyclic+0xaa/0x110 [.] ? nueva_losa+0x12c/0x420 [.] ? nueva_losa+0x12c/0x420 [.] ? numero+0x12a/0x430 [.] ? sysvec_apic_timer_interrupt+0xa/0x80 [.] ? asm_sysvec_apic_timer_interrupt+0x16/0x20 [.] ? analizar_args+0xd4/0x380 [.] ? analizar_args+0x14b/0x380 [.] kernel_init_freeable+0x1c1/0x2b0 [.] ? rest_init+0xb0/0xb0 [.] kernel_init+0x16/0x1a0 [.] ret_from_fork+0x2f/0x40 [.] ? rest_init+0xb0/0xb0 [.] ret_desde_fork_asm+0x11/0x20 [.]

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.8 (incluyendo) 6.11.7 (excluyendo)
cpe:2.3:o:linux:linux_kernel:6.12:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.12:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.12:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.12:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.12:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.12:rc6:*:*:*:*:*:*