CVE-2026-74637 in Linuxinformación

Resumen

por VulDB • 2026-08-23

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

perf/core: Corregir un uso-después-de-liberación (use-after-free) del líder de grupo tras la desvinculación de hermanos

`perf_group_detach()` maneja la desvinculación del líder y de los hermanos de manera diferente. Cuando el líder del grupo se desvincula, todos los hermanos son promovidos a eventos individuales (singleton) y su puntero `group_leader` se restablece apuntando a sí mismos. Sin embargo, cuando un hermano se desvincula, este se elimina de la lista de hermanos (`sibling_list`) del líder, pero su puntero `group_leader` queda apuntando al antiguo líder.

Esto es inofensivo cuando el hermano está siendo cerrado y liberado inmediatamente, como en la ruta DETACH_DEAD. No es seguro cuando el hermano se desvincula pero permanece activo (alive), tal como ocurre durante la inserción/desinserción dinámica de CPU con DETACH_GROUP. En ese caso, el hermano se elimina del contexto, mientras que su descriptor de archivo puede seguir manteniéndolo vivo.

Una secuencia típica que falla es:

- Un grupo contiene al líder L y al hermano S. - La desinserción dinámica de CPU (CPU hot-unplug) desvincula a S con DETACH_GROUP, eliminándolo de `L->sibling_list` pero dejando `S->group_leader == L`. - Posteriormente se cierra y libera a L. - Una llamada ioctl `PERF_IOC_FLAG_GROUP` en S sigue el puntero `S->group_leader` y desreferencia al líder ya liberado.

Esto se reprodujo ejecutando simultáneamente el fuzzing de eventos perf, la inserción/desinserción dinámica de CPU (CPU hotplug) y una carga de trabajo intensiva:

Unable to handle kernel paging request at virtual address 006b6b6b6b6b6cdb CPU: 2 PID: 12489 Comm: perf_fuzzer 6.18.7 PREEMPT pc : perf_ioctl+0x34c/0xc68 x20: ffffff89a3fa2c70 x8 : 6b6b6b6b6b6b6b6b Code: 943c4a0e 340047a0 f9404a94 f9411e88 (f940b908) Call trace: perf_ioctl+0x34c/0xc68 (P) __arm64_sys_ioctl+0xa0/0xf4 invoke_syscall+0x58/0xe4 el0_svc_common+0xa8/0xdc do_el0_svc+0x1c/0x28 el0_svc+0x40/0xc0 el0t_64_sync_handler+0x68/0xdc el0t_64_sync+0x1c4/0x1c8

La falla ocurrió en `perf_ioctl()`, donde `perf_event_for_each()` sigue el puntero obsoleto de `group_leader` y `perf_event_for_each_child()` desreferencia luego el contexto del líder ya liberado.

Se corrige el uso-después-de-liberación (use-after-free) promoviendo al hermano desvinculado a un evento individual (singleton). También se corrigen la contabilidad cgroup de `__event_disable()` y los cambios en el estado del evento.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsable

Linux

Reservar

2026-08-15

Divulgación

2026-08-22

Moderación

aceptado

Artículo

VDB-394422

CPE

listo

EPSS

0.00206

KEV

no

Actividades

bajo

Fuentes

Do you want to use VulDB in your project?

Use the official API to access entries easily!