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

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

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

Descripción

En el kernel de Linux, se resolvió la siguiente vulnerabilidad: perf: corrige la fuga de eventos al salir Cuando se programa una tarea, las entregas de sigtrap pendientes se difieren a la tarea de destino al reanudarse en el espacio de usuario a través de task_work. Sin embargo, se ignoran los fallos al agregar la devolución de llamada de un evento al motor task_work. Y dado que la última llamada para la salida de eventos ocurre después de que finalmente se cierra el trabajo de la tarea, hay una pequeña ventana durante la cual el sigtrap pendiente se puede poner en cola aunque se ignore, lo que filtra la adición del recuento de eventos, como en el siguiente escenario: TAREA A ----- do_exit() salida_task_work(tsk); perf_event_overflow() evento->pending_sigtrap = pendiente_id; irq_work_queue(&event->pending_irq); =========> PREEMPCIÓN: TAREA A -> TAREA B event_sched_out() evento->pending_sigtrap = 0; atomic_long_inc_not_zero(&event->refcount) // FALLA: el trabajo de la tarea ha salido task_work_add(&event->pending_task) [...] perf_pending_irq() // retorno temprano: evento->oncpu = -1 [...] =========> TAREA B -> TAREA A perf_event_exit_task(tsk) perf_event_exit_event() free_event() WARN(atomic_long_cmpxchg(&event->refcount, 1, 0) != 1) / /evento de fuga debido a un recuento inesperado == 2 Como resultado, el evento nunca se libera mientras la tarea finaliza. Solucione este problema con el manejo de errores apropiado de task_work_add().

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.15.84 (incluyendo) 5.15.165 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.0.14 (incluyendo) 6.1 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.1.1 (incluyendo) 6.1.103 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 (incluyendo) 6.6.44 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (incluyendo) 6.10.3 (excluyendo)
cpe:2.3:o:linux:linux_kernel:6.1:-:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.1:rc8:*:*:*:*:*:*