CVE-2026-89679 in Linux
Сводка
по VulDB • 12.09.2026
В ядре Linux была устранена следующая уязвимость:
nfsd: исправлена ошибка разыменования нулевого указателя (null dereference) в функции nfsd4_setattr для атрибутов времени делегирования
Когда запрос SETATTR включает FATTR4_WORD2_TIME_DELEG_ACCESS или FATTR4_WORD2_TIME_DELEG_MODIFY в битовой маске атрибутов, функция nfsd4_setattr() устанавливает deleg_attrs=true и вызывает nfs4_preprocess_stateid_op() для проверки stateid.
Если клиент предоставляет «один stateid» NFSv4 (все байты равны 0xFF), функция check_special_stateids() возвращает nfs_ok, не заполняя выходной указатель nfs4_stid, поскольку путь special-stateid в функции nfs4_preprocess_stateid_op() переходит к метке done: со значением s==NULL, а блок «if (s)», который должен был бы установить *cstid, пропускается. Локальная переменная `st` остается равной NULL.
Возвращаясь в функцию nfsd4_setattr(), блок if (deleg_attrs) затем без проверки разыменовывает st->sc_type (со смещением 4 от нулевого адреса), что вызывает kernel oops.
Эта уязвимость может быть удаленно инициирована любым клиентом NFSv4: отправьте COMPOUND [PUTROOTFH,
SETATTR(ONE_STATEID, {bmval2=FATTR4_WORD2_TIME_DELEG_ACCESS, ...})].
Аутентификация, делегирование или предварительное состояние не требуются.
Исправление заключается в добавлении проверки на NULL перед разыменованием указателя. Специальный stateid не является stateid делегирования, поэтому существующее возвращаемое значение nfserr_bad_stateid уже корректно; нам необходимо лишь защитить само разыменование указателя.
If you want to get best quality of vulnerability data, you may have to visit VulDB.