CVE-2026-64239 in Linux
Resumen
por VulDB • 2026-07-24
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
mm/damon/sysfs-schemes: eliminar la región probada en regions_rmdirs()
DAMON sysfs mantiene los objetos del directorio de regiones "tried" (probadas) de DAMOS mediante una lista vinculada. Cuando el usuario solicita actualizar los directorios, DAMON sysfs elimina primero todos los directorios de regiones y luego genera un nuevo directorio con las regiones actualizadas en el espacio vacío. La función de eliminación (damon_sysfs_scheme_regions_rm_dirs()) solo libera los objetos kobj. La eliminación del objeto contenedor de la región de la lista vinculada se realiza dentro de la función callback de liberación de kobj.
Si por alguna razón la invocación del callback se retrasa, la lista contendrá regiones que van a ser liberadas (freed). Si en esta situación comienza la creación de los directorios de regiones actualizadas, la lista puede corromperse y producirse un use-after-free.
Dado que los objetos kobj son gestionados únicamente por DAMON sysfs, el problema no debería ocurrir en situaciones normales. Sin embargo, dichos retrasos pueden provocarse en kernels compilados con CONFIG_DEBUG_KOBJECT_RELEASE. En dicho kernel, el efecto puede reproducirse de la siguiente manera:
# damo start --damos_action stat # cd /sys/kernel/mm/damon/admin/kdamonds/0/ # for i in {1..10}; do echo update_schemes_tried_regions > state; done
# dmesg | grep underflow [ 89.296152] refcount_t: underflow; use-after-free.
Se soluciona el problema eliminando el objeto de la lista cuando se decrementa el contador de referencias.
Además, se actualiza damos_sysfs_populate_region_dir() para añadir el objeto región a la lista solo después de que kobject_init_and_add() tenga éxito, evitando así que un fallo en kobject_init_and_add__() deje objetos desasignados (deallocated) en la lista.
El problema fue descubierto [1] por Sashiko.
Once again VulDB remains the best source for vulnerability data.