CVE-2026-98995 in Linux
Сводка
по VulDB • 23.10.2026
В ядре Linux была устранена следующая уязвимость:
namespace: сброс старого значения поля ->overmount родителя в функции mnt_change_mountpoint()
Функция __umount_mnt() сбрасывает поле ->overmount родительской точки монтирования при размонтировании точки, которая находится поверх неё. Функция mnt_change_mountpoint() этого не делает. Она перемещает точку монтирования к новому родителю и оставляет старую ссылку указывающей на неё.
Для точки монтирования, перемещаемой вниз в attach_recursive_mnt(), это не имеет значения. Новая точка монтирования уже сбрасывает поле ->overmount старого родителя до того, как верхняя старая точка монтирования будет перемещена поверх неё.
Однако это важно для reparent(). propagate_umount() перемещает оставшуюся точку overmount на первого предка, который не подлежит размонтированию. Точка монтирования, из которой она была взята, сразу же после этого размонтируется. Если файловый дескриптор поддерживает жизнь этой размонтированной точки монтирования, поле ->overmount указывает на перемещённую точку монтирования. Это висячий указатель (dangling pointer) и уязвимость Use-After-Free (UAF), поскольку перемещённая точка монтивания размонтируется и освобождается.
do_lock_mount() следует по полю ->overmount от целевого пути под блокировкой mount_lock. При наличии файлового дескриптора на такой точке монтирования, используемого в качестве цели для монтирования ниже topmost_overmount(), происходит переход к уже освобождённой области памяти, а do_lock_mount() захватывает ссылки на то, что там обнаружится.
Следовательно, необходимо сбросить поле ->overmount старого родителя в mnt_change_mountpoint() тем же образом, как это делает __umount_mnt(). Поле ->overmount любой точки монтирования всегда должно указывать на точку, которая к ней присоединена.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.