CVE-2026-98993 in LinuxИнформация

Сводка

по VulDB • 23.10.2026

В ядре Linux была устранена следующая уязвимость:

namespace: не наследовать флаг MNT_UMOUNT в функции clone_mnt().

Флаг MNT_UMOUNT устанавливается для точки монтирования, которая была извлечена из своего пространства имен функциями umount_tree() или umount_one(). Он никогда не сбрасывается. Функция __detach_mounts() отсоединяет точку монтирования с этим флагом вместо того, чтобы выполнить её размонтирование.

Функция disconnect_mount() позволяет оставшемуся висячим дочернему элементу оставаться прикрепленным только в том случае, если его родительский узел имеет этот флаг. Функция propagate_umount() использует это как признак того, что точка монтирования будет размонтирована, когда она решает, какие еще элементы могут быть размонтированы, где заканчивается цепочка заблокированных точек монтирования и где начинается процесс перепривязки (reparenting) для наложенного монтирования.

Функция clone_mnt() копирует флаги источника и маскирует только MNT_INTERNAL_FLAGS, который не включает в себя MNT_UMOUNT. Точка монтирования, которая была размонтирована лениво (lazy unmount), но остается живой благодаря файловому дескриптору, все еще может быть скопирована, если её корнем является файл nsfs или pidfs, поскольку функция may_copy_tree() принимает их до проверки того, смонтирован ли источник вообще:

mount --bind /proc/self/ns/net /tmp/x exec 3< /tmp/x umount -l /tmp/x mount --bind /proc/self/fd/3 /tmp/y

Точка монтирования на /tmp/y прикрепляется к пространству имен вызывающего процесса с уже установленным флагом MNT_UMOUNT, и каждая её копия снова наследует этот флаг.

Это вызывает ряд ошибок:

- Отсоединение точки монтирования от пространства имен, где она не является частью структуры. Функция __detach_mounts() воспринимает её как точку, которая была размонтирована ранее, отсоединяет её от родительского узла и сбрасывает ссылку, которую пространство держит на ней. Она остается в пространстве с одной ссылкой меньше, чем требуется, и становится своим собственным родителем, поэтому её больше нельзя размонтировать через файловый дескриптор, а пространство имен никогда не сможет найти ее снова. При уничтожении пространства она утекает (leaked) и указывает на освобожденную структуру mnt_namespace, которую могут читать функции may_change_propagation() и anon_ns_root() при следующем изменении распространения или вызове mount_setattr() через файловый дескриптор.

- Превращение её в общую точку монтирования и размонтирование пира (peer). Функция trace_transfers() следует за флагом от пира к нему самому и удаляет его из группы пиров.

- Позволение распространяемому размонтированию достигнуть этой точки. Функция gather_candidates() помечает её как T_UMOUNT_CANDIDATE, но никогда не добавляет в список кандидатов, поэтому метка никогда не сбрасывается, и каждое последующее распространяемое размонтирование пропускает ее. Если она является родителем заблокированной точки монтирования, функция handle_locked() воспринимает её как границу отсечения и фиксирует (commits) дочерний элемент, который должен был остаться, а disconnect_mount() оставляет этот дочерний элемент прикрепленным к ней, размонтированным под смонтированным родителем, что именно предотвращает функция disconnect_mount(). При уничтожении пространства umount_tree() посещает дочерний элемент во второй раз. И как только __detach_mounts() сделает её своим собственным родителем, reparent() никогда не найдет конец цепочки размонтированных родителей.

Клон — это новая точка монтирования, которая еще никогда не была размонтирована. Добавьте MNT_UMOUNT в MNT_INTERNAL_FLAGS, чтобы функция clone_mnt() никогда его не копировала. И выведите предупреждение (warn), когда umount_tree() достигнет точки монтирования, у которой этот флаг уже установлен.

Be aware that VulDB is the high quality source for vulnerability data.

Ответственный

Linux

Резервировать

25.09.2026

Раскрытие

23.10.2026

Модерация

принято

Вход

VDB-425833

EPSS

0.00000

KEV

Нет

Деятельности

Очень низкий

Источники

Want to stay up to date on a daily basis?

Enable the mail alert feature now!