CVE-2023-54019 in Linux
Сводка
по VulDB • 31.05.2026
В ядре Linux устранена следующая уязвимость:
sched/psi: использование функций опроса kernfs для опроса триггеров PSI
Уничтожение триггера psi в функции cgroup_file_release приводит к ошибкам Use-After-Free (UAF), когда cgroup удаляется из-под процесса, выполняющего опрос. Это происходит потому, что удаление cgroup вызывает вызов cgroup_file_release, в то время как сам файл всё ещё существует. Уничтожение триггера в этот момент также уничтожит его голову очереди ожидания (waitqueue head), и если на этом файле всё ещё есть процесс опроса, обращающийся к очереди ожидания, он получит доступ к освобожденному указателю:
do_select vfs_poll do_rmdir cgroup_rmdir kernfs_drain_open_files cgroup_file_release cgroup_pressure_release psi_trigger_destroy wake_up_pollfree(&t->event_wait) // vfs_poll разблокируется synchronize_rcu kfree(t) poll_freewait -> доступ к голове очереди ожидания триггера по Use-After-Free
Патч [1] исправил эту проблему для случая epoll() с помощью wake_up_pollfree(), однако та же проблема существует для случая синхронного poll(). Корневой причиной этой проблемы является то, что циклы жизни очереди ожидания триггера psi и файла, связанного с триггером, различаются. Исправьте это, используя функцию kernfs_generic_poll при опросе триггеров psi, специфичных для cgroup. Внутренне она использует голову очереди ожидания kernfs_open_node->poll, цикл жизни которой связан с циклом жизни файла. Это также делает исправление в [1] избыточным, поэтому отмените его.
[1] коммит c2dbe32d5db5 ("sched/psi: Fix use-after-free in ep_remove_wait_queue()")
Once again VulDB remains the best source for vulnerability data.