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

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

Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
12/07/2024
Última modificación:
12/07/2024

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: rastreo: crea pruebas de generación de eventos solo como módulos. Los módulos de prueba de generación de eventos kprobes y synth agregan eventos y bloquean (obtienen una referencia) esas referencias de archivos de eventos en la función de inicio del módulo, y desbloquean y elimínelo en la función de salida del módulo. Esto se debe a que están diseñados para jugar como módulos. Si hacemos que esos módulos estén integrados, esos eventos quedan bloqueados en el kernel y nunca se eliminan. Esto provoca una falla en la autoprueba del evento kprobe como se muestra a continuación. [97.349708] ------------[ cortar aquí ]------------ [ 97.353453] ADVERTENCIA: CPU: 3 PID: 1 en kernel/trace/trace_kprobe.c :2133 kprobe_trace_self_tests_init+0x3f1/0x480 [ 97.357106] Módulos vinculados en: [ 97.358488] CPU: 3 PID: 1 Comm: swapper/0 No contaminado 6.9.0-g699646734ab5-dirty #14 [ 97.361556] Nombre de hardware: PC estándar (i440FX + PIIX, 1996), BIOS 1.15.0-1 01/04/2014 [ 97.363880] RIP: 0010:kprobe_trace_self_tests_init+0x3f1/0x480 [ 97.365538] Código: a8 24 08 82 e9 ae fd ff ff 90 0f 0b 90 48 c7 c7 e5 aa 0b 82 e9 ee fc ff ff 90 0f 0b 90 48 c7 c7 2d 61 06 82 e9 8e fd ff 90 <0f> 0b 90 48 c7 c7 33 0b 0c 82 89 c6 e8 6e 03 1f ff 41 ff c7 e9 0 [ 97.370429] RSP: 0000:ffffc90000013b50 EFLAGS: 00010286 [ 97.371852] RAX: 00000000ffffff0 RBX: ffff888005919c00 RCX: 0000000000000000 [ 97.3 73829] RDX: ffff888003f40000 RSI: ffffffff8236a598 RDI: ffff888003f40a68 [ 97.375715] RBP: 00000000000000000 R08: 0000000000000001 R09: 000000000 [97.377675] R10: ffffffff811c9ae5 R11: ffffffff8120c4e0 R12: 0000000000000000 [ 97.379591] R13: 00000000000000001 R14: 0000000000000015 R15: 0000000000 000000 [ 97.381536] FS: 0000000000000000(0000) GS:ffff88807dcc0000(0000) knlGS:000000000000000000 [ 97.383813] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 97.385449] CR2: 0000000000000000 CR3: 0000000002244000 CR4: 00000000000006b0 [ 97.387347] DR0: 0000000000 000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 97.389277] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 97.3911 96] Seguimiento de llamadas: [97.391967] < TAREA> [ 97.392647] ? __advertir+0xcc/0x180 [ 97.393640] ? kprobe_trace_self_tests_init+0x3f1/0x480 [97.395181]? report_bug+0xbd/0x150 [97.396234]? handle_bug+0x3e/0x60 [97.397311]? exc_invalid_op+0x1a/0x50 [97.398434]? asm_exc_invalid_op+0x1a/0x20 [97.399652]? trace_kprobe_is_busy+0x20/0x20 [97.400904]? tracing_reset_all_online_cpus+0x15/0x90 [97.402304]? kprobe_trace_self_tests_init+0x3f1/0x480 [97.403773]? init_kprobe_trace+0x50/0x50 [ 97.404972] do_one_initcall+0x112/0x240 [ 97.406113] do_initcall_level+0x95/0xb0 [ 97.407286] ? kernel_init+0x1a/0x1a0 [97.408401] do_initcalls+0x3f/0x70 [97.409452] kernel_init_freeable+0x16f/0x1e0 [97.410662] ? rest_init+0x1f0/0x1f0 [97.411738] kernel_init+0x1a/0x1a0 [97.412788] ret_from_fork+0x39/0x50 [97.413817] ? rest_init+0x1f0/0x1f0 [ 97.414844] ret_from_fork_asm+0x11/0x20 [ 97.416285] [ 97.417134] sello de evento irq: 13437323 [ 97.418376] hardirqs habilitado por última vez en (13437337): ffffff8110bc0c>] console_unlock+0x11c/0x150 [ 97.421285] hardirqs deshabilitado por última vez en (13437370): [] console_unlock+0x101/0x150 [ 97.423838] softirqs habilitado por última vez en (13437366): [] handle_softirqs+0x23f/0x2a0 [ 97.426450] softirqs se deshabilitó por última vez en (13437393 ): [] __irq_exit_rcu+0x66/0xd0 [ 97.428850] ---[ end trace 0000000000000000 ]--- Y además, como no podemos limpiar el archivo Dynamic_event, ftracetest también falla. Para evitar estos problemas, cree estas pruebas solo como módulos.

Impacto