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

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

Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
30/07/2024
Última modificación:
03/11/2025

Descripción

En el kernel de Linux, se resolvió la siguiente vulnerabilidad: jffs2: corrija el posible acceso ilegal a la dirección en jffs2_free_inode Durante la prueba de esfuerzo del sistema de archivos jffs2, se encontraron las siguientes impresiones anormales: [2430.649000] No se puede manejar la solicitud de paginación del kernel en la dirección virtual 0069696969696948 [ 2430.649622] Información de cancelación de memoria: [ 2430.649829] ESR = 0x96000004 [ 2430.650115] EC = 0x25: DABT (EL actual), IL = 32 bits [ 2430.650564] SET = 0, FnV = 0 [ 2430.650795] EA = 0, S1PTW = 0 [ 2430.651032] FSC = 0x04: error de traducción de nivel 0 [ 2430.651446] Información de cancelación de datos: [ 2430.651683] ISV = 0, ISS = 0x00000004 [ 2430.652001] CM = 0, WnR = 0 [ 2430.652558] [0069696969696948] dirección entre usuario y kernel rangos de direcciones [2430.653265] Error interno: Ups: 96000004 [#1] PREEMPT SMP [2430.654512] CPU: 2 PID: 20919 Comm: cat No contaminado 5.15.25-g512f31242bf6 #33 [2430.655008] Nombre de hardware: tonto-virt ( DT) [ 2430.655517] pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 2430.656142] pc : kfree+0x78/0x348 [ 2430.656630] lr : jffs2_free_inode+0x24/0x48 [ 2430.657051]sp : ffff800009eebd10 [ 2430.657355] x29: ffff800009eebd10 x28: 0000000000000001 x27: 0000000000000000 [ 2430.658327] x26: ffff000038f09d80 25: 0080000000000000 x24: ffff800009d38000 [ 2430.658919] x23: 5a5a5a5a5a5a5a5a x22: ffff000038f09d80 x21: ffff8000084f0d14 [ 2430.65943 4] x20: ffff0000bf9a6ac0 x19: 0169696969696940 x18: 00000000000000000 [ 2430.659969] x17: ffff8000b6506000 x16: ffff800009eec000 x15: 0000000000004000 [ 2430.660637] x14: 0000000000000000 x13: 00000001000 820a1 x12: 00000000000d1b19 [2430.661345] x11: 0004000800000000 x10: 0000000000000001 x9: ffff8000084f0d14 [2430.662025] x8: bf9a6b40 x7: ffff0000bf9a6b48 x6: 0000000003470302 [2430.662695 ] x5: ffff00002e41dcc0 x4: ffff0000bf9aa3b0 x3: 0000000003470342 [2430.663486] x2: 0000000000000000 x1: ffff8000084f0d14 x0: ffffc0000000 000 [2430.664217] Rastreo de llamadas: [2430.664528] kfree+0x78/0x348 [2430.664855] jffs2_free_inode+0x24/0x48 [2430.665233] i_callback+0x24 /0x50 [ 2430.665528] rcu_do_batch+0x1ac/0x448 [ 2430.665892] rcu_core+0x28c/0x3c8 [ 2430.666151] rcu_core_si+0x18/0x28 [ 2430.666473] x138/0x3cc [ 2430.666781] irq_exit+0xf0/0x110 [ 2430.667065] handle_domain_irq+0x6c/0x98 [ 2430.667447] gic_handle_irq+0xac/0xe8 [ 2430.667739] call_on_irq_stack+0x28/0x54 El parámetro pasado a kfree fue 5a5a5a5a, que corresponde al campo de destino de la estructura jffs_inode_info. Se encontró que todas las variables en la estructura jffs_inode_info eran 5a5a5a5a, excepto el primer miembro sem. Se sospecha que estas variables no se inicializan porque se configuraron en 5a5a5a5a durante la prueba de memoria, lo que pretende detectar memoria no inicializada. La variable sem se inicializa en la función jffs2_i_init_once, mientras que otros miembros se inicializan en la función jffs2_init_inode_info. La función jffs2_init_inode_info se llama después de iget_locked, pero en la función iget_locked, se activa el proceso destroy_inode, que libera el inodo y, en consecuencia, el miembro objetivo del inodo no se inicializa. En escenarios concurrentes de alta presión, iget_locked puede ingresar a la rama destroy_inode como descrito en el código. Dado que la funcionalidad destroy_inode de jffs2 solo libera el objetivo, el método de reparación es establecer el objetivo en NULL en jffs2_i_init_once.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.19.318 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.20 (incluyendo) 5.4.280 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.5 (incluyendo) 5.10.222 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 (incluyendo) 5.15.163 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (incluyendo) 6.1.98 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 (incluyendo) 6.6.39 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (incluyendo) 6.9.9 (excluyendo)