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

Vulnerabilidad en kernel de Linux (CVE-2025-21634)

Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
19/01/2025
Última modificación:
03/02/2025

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: cgroup/cpuset: eliminar kernfs active break Se encontró una advertencia: ADVERTENCIA: CPU: 10 PID: 3486953 en fs/kernfs/file.c:828 CPU: 10 PID: 3486953 Comm: rmdir Kdump: cargado Tainted: G RIP: 0010:kernfs_should_drain_open_files+0x1a1/0x1b0 RSP: 0018:ffff8881107ef9e0 EFLAGS: 00010202 RAX: 0000000080000002 RBX: ffff888154738c00 RCX: dffffc0000000000 RDX: 00000000000000007 RSI: 0000000000000004 RDI: ffff888154738c04 RBP: ffff888154738c04 R08: ffffffffaf27fa15 R09: ffffed102a8e7180 R10: ffff888154738c07 R11: 0000000000000000 R12: ffff888154738c08 R13: ffff888750f8c000 R14: ffff888750f8c0e8 R15: ffff888154738ca0 FS: 00007f84cd0be740(0000) GS:ffff8887ddc00000(0000) knlGS:00000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000555f9fbe00c8 CR3: 0000000153eec001 CR4: 0000000000370ee0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: GS:ffff8887ddc00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000555f9fbe00c8 CR3: 0000000153eec001 CR4: 0000000000370ee0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Seguimiento de llamadas: kernfs_drain+0x15e/0x2f0 __kernfs_remove+0x165/0x300 kernfs_remove_by_name_ns+0x7b/0xc0 cgroup_rm_file+0x154/0x1c0 cgroup_addrm_files+0x1c2/0x1f0 css_clear_dir+0x77/0x110 kill_css+0x4c/0x1b0 cgroup_destroy_locked+0x194/0x380 cgroup_rmdir+0x2a/0x140 Se puede explicar por: rmdir echo 1 > cpuset.cpus kernfs_fop_write_iter // active=0 cgroup_rm_file kernfs_remove_by_name_ns kernfs_get_active // ??activo=1 __kernfs_remove // ??activo=0x80000002 kernfs_drain cpuset_write_resmask wait_event //esperando (activo == 0x80000001) kernfs_break_active_protection // activo = 0x80000001 // continuar kernfs_unbreak_active_protection // activo = 0x80000002 ... kernfs_should_drain_open_files // se produce una advertencia kernfs_put_active Esta advertencia es causada por 'kernfs_break_active_protection' cuando está escribiendo en cpuset.cpus y el cgroup se elimina simultáneamente. El commit 3a5a6d0c2b03 ("cpuset: no anide cgroup_mutex dentro de get_online_cpus()") hizo que cpuset_hotplug_workfn sea asíncrono. Este cambio implica llamar a flush_work(), que puede crear una dependencia de bloqueo circular de múltiples procesos que involucran a cgroup_mutex, lo que puede llevar a un bloqueo. Para evitarlo, el commit 76bb5ab8f6e3 ("cpuset: interrumpa la protección activa de kernfs en cpuset_write_resmask()") agregó 'kernfs_break_active_protection' en cpuset_write_resmask. Esto podría llevar a esta advertencia. Después de el commit 2125c0034c5d ("cgroup/cpuset: haga que el procesamiento de hotplug de cpuset sea sincrónico"), cpuset_write_resmask ya no necesita esperar a que finalice el hotplug, lo que significa que las operaciones de hotplug y cpuset concurrentes ya no son posibles. Por lo tanto, el bloqueo ya no existe y ya no es necesario "interrumpir la protección activa". Para solucionar esta advertencia, simplemente elimine la operación kernfs_break_active_protection en "cpuset_write_resmask".

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 3.16 (incluyendo) 6.12.10 (excluyendo)
cpe:2.3:o:linux:linux_kernel:6.13:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc6:*:*:*:*:*:*