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

Vulnerabilidad en kernel de Linux (CVE-2022-48921)

Gravedad CVSS v3.1:
MEDIA
Tipo:
CWE-362 Ejecución concurrente utilizando recursos compartidos con una incorrecta sincronización (Condición de carrera)
Fecha de publicación:
22/08/2024
Última modificación:
12/09/2024

Descripción

En el kernel de Linux, se resolvió la siguiente vulnerabilidad: sched/fair: Solucionar falla en reweight_entity Syzbot encontró un GPF en reweight_entity. Esto se ha dividido en dos para el commit 4ef0c5c6b5ba ("kernel/sched: Fix sched_fork() accede a un sched_task_group no válido") Hay una ejecución entre sched_post_fork() y setpriority(PRIO_PGRP) dentro de un grupo de subprocesos que provoca un null-ptr-deref en reweight_entity () en el SFC. El escenario es que el proceso principal genera una cantidad de subprocesos nuevos, que luego llaman a setpriority(PRIO_PGRP, 0, -20), esperan y salen. Para cada uno de los nuevos subprocesos, se invoca copy_process(), lo que agrega la nueva task_struct y llama a sched_post_fork() para ello. En el escenario anterior existe la posibilidad de que se llame a setpriority(PRIO_PGRP) y set_one_prio() para un subproceso en el grupo que acaba de crear copy_process(), y para el cual sched_post_fork() aún no se ha ejecutado. Esto desencadenará una desreferencia del puntero nulo en reweight_entity(), ya que intentará acceder al puntero de la cola de ejecución, que no se ha configurado. Antes del cambio mencionado, el puntero cfs_rq para la tarea se configuró en sched_fork(), que se llama mucho antes en copy_process(), antes de que la nueva tarea se agregue al thread_group. Ahora se hace en sched_post_fork(), que se llama después de eso. Para solucionar el problema, elimine el parámetro update_load de la función update_load param() y llame a reweight_task() solo si el indicador de tarea no tiene establecido el indicador TASK_NEW.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.10.80 (incluyendo) 5.10.137 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.14.19 (incluyendo) 5.15 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.15.3 (incluyendo) 5.15.27 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (incluyendo) 5.16.13 (excluyendo)
cpe:2.3:o:linux:linux_kernel:5.17:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.17:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.17:rc3:*:*:*:*:*:*