В ядре Linux устранена следующая уязвимость:
eventfs: исправлено использование после освобождения в eventfs_remove_rec().
eventfs_remove_rec() рекурсивно удаляет дочерний элемент в текущем цикле
позиция. После возврата рекурсивного вызова list_for_each_entry() продвигается вперед.
прочитав list.next из удаленного дочернего элемента. Если free_ei() удаляет последнюю ссылку, Release_ei() повторно использует список/rcu.
объединение для постановки обратного вызова SRCU в очередь.
Ребенка можно освободить перед прочтением. Eventfs_mutex сериализует обновления списка, но не сохраняет удаленные.
ребенок жив или предотвратит запуск обратного вызова SRCU. Используйте list_for_each_entry_safe(), чтобы сохранить следующего брата перед рекурсивным выполнением.
удаление текущего дочернего элемента.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: eventfs: Fix use-after-free in eventfs_remove_rec() eventfs_remove_rec() recursively removes the child at the current loop position. After the recursive call returns, list_for_each_entry() advances by reading list.next from the removed child. If free_ei() drops the final reference, release_ei() reuses the list/rcu union to queue an SRCU callback. The child may be freed before that read. The eventfs_mutex serializes list updates, but it does not keep the removed child alive or prevent the SRCU callback from running. Use list_for_each_entry_safe() to save the next sibling before recursively removing the current child.
Характеристики атаки
Последствия
Строка CVSS v3.1