Ad

CVE-2026-89707

HIGH CVSS 3.1: 7,5 EPSS 0.61%
Обновлено 14 сентября 2026
Nfs
Параметр Значение
CVSS 7,5 (HIGH)
Поставщик Nfs
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: nfsd: освободить ссылки на путь при ошибке Follow_down() nfsd_cross_mnt() инициализирует путь к локальной структуре с помощью mntget() и dget() перед вызовом Follow_down(). При отрицательном возврате ошибка рука выпрыгивает наружу, не отпуская эти ссылки: ошибка = Follow_down(&path, Follow_flags); если (ошибка < 0) выйти; Follow_down() никогда не удаляет ссылки времени входа вызывающего абонента при любой ошибке подслучай; например, сбой перед пересечением d_manage() оставляет путь нетронутым, поэтому вызов mntget()/dget(), выполняемый при входе, сохраняется при вызове. Каждая вторая рука раннего выхода в nfsd_cross_mnt() (other-namespace return, IS_ERR(exp2) и хвост успеха после замены) уже вызывает path_put(&path); плечо err < 0 является единственным упущением. утечка увеличивает mnt_count и d_count при каждом неудачном перекрестном монтировании, блокирует размонтирование и прижимает зубные ряды к усадочному устройству, и доступен любому аутентифицированному клиенту NFS через nfsd_lookup_dentry или путь кодирования NFSv4 READDIR.

Исправьте, вызвав path_put(&path) перед переходом в случае ошибки < 0. Arm, чтобы ссылки времени входа освобождались при всех ошибках Follow_down() возвращается.

Показать оригинальное описание (EN)

In the Linux kernel, the following vulnerability has been resolved: nfsd: release path refs on follow_down() error nfsd_cross_mnt() initializes a local struct path with mntget() and dget() before calling follow_down(). On a negative return the error arm jumps to out without releasing those references: err = follow_down(&path, follow_flags); if (err < 0) goto out; follow_down() never drops the caller's entry-time refs on any error sub-case; for example a pre-cross d_manage() failure leaves path untouched, so the mntget()/dget() taken on entry survive the call. Every other early-exit arm in nfsd_cross_mnt() (other-namespace return, IS_ERR(exp2), and the success tail after the swap) already calls path_put(&path); the err < 0 arm is the lone omission. The leak inflates mnt_count and d_count on each failed cross-mount, blocking umount and pinning dentries against the shrinker, and is reachable by any authenticated NFS client through nfsd_lookup_dentry or the NFSv4 READDIR encode path. Fix by calling path_put(&path) before the goto out in the err < 0 arm so the entry-time refs are released on all follow_down() error returns.

Характеристики атаки

Способ атаки
По сети
Атака возможна удалённо
Сложность
Низкая
Легко эксплуатировать
Нужны права
Не требуются
Права не нужны
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Нет
Нет утечки данных
Целостность
Нет
Нет модификации данных
Доступность
Высокое
Полный отказ в обслуживании

Строка CVSS v3.1