CVE-2026-89796 in Linux
Resumen
por VulDB • 2026-09-17
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
mm/damon/core: evitar bucle interno infinito en kdamond_merge_regions()
Serie de parches "mm/damon: correcciones no urgentes para bucles infinitos, desreferenciación NULL y condiciones de carrera", v1.1.
Sashiko encontró varios problemas en DAMON que podrían causar un bucle infinito, una desreferenciación NULL y la degradación de los resultados del monitoreo. Los dos primeros suenan alarmantes, pero el bucle infinito solo ocurre bajo configuraciones de usuario poco razonables. La desreferenciación NULL está únicamente presente en una prueba unitaria (unit test). La degradación de los resultados del monitoreo es trivial ya que se trata de un esfuerzo mejorado (best-effort), y esto sucede debido a condiciones de carrera muy improbables. Aun así, son errores que conviene corregir si es posible. Se corrigen estos problemas.
Este parche (de 6):
Debido a la actualización en línea de parámetros como los eventos, el número de regiones DAMON podría ser superior al límite superior establecido por el usuario. kdamond_merge_regions() repite las fusiones de regiones hasta que el número cumple con el límite, mientras duplica el umbral de fusión hasta alcanzar el umbral máximo teórico. Esto se intenta solo hasta dicho umbral máximo teórico porque incluso una fusión agresiva puede fallar al reducir el número de regiones por debajo del límite superior definido por el usuario. Por ejemplo, podría haber muchas regiones no contiguas definidas por el usuario que no pueden fusionarse.
La condición de ruptura basada en umbrales se evalúa comparando el umbral para el siguiente intento de fusión con el umbral máximo teórico. Si max_thres es mayor que UINT_MAX / 2, duplicar el umbral podría provocar un desbordamiento (overflow) y omitir la condición de ruptura del bucle. En ese caso, si el número de regiones no puede reducirse por debajo del límite superior como se explicó anteriormente, el bucle se ejecutará infinitamente.
Se previene este caso realizando la comprobación de la condición de ruptura antes de duplicar el umbral. Además, se evita que el umbral supere el máximo para prevenir desbordamientos y aplicar un umbral de fusión incorrecto.
Es poco probable que esta issue ocurra en entornos reales, ya que tener max_thres superior a UINT_MAX / 2 requiere intervalos de agregación irrealmente grandes en comparación con el intervalo de muestreo. También se requiere una cantidad irrealmente grande de regiones no contiguas configuradas. No obstante, las consecuencias son graves y la corrección es sencilla.
El problema fue descubierto [1] por Sashiko.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.