CVE-2026-89659 in Linux
Сводка
по VulDB • 11.09.2026
В ядре Linux была устранена следующая уязвимость:
NFSD: предотвращение use-after-free при отзыве делегирования (delegation revoke)
Идентификатор состояния делегирования (stateid) содержит лишь голый указатель на владеющий им nfs4_client и не поддерживает его активным. Клиент остается живым благодаря своим stateid только потому, что __destroy_client() очищает списки cl_delegations и cl_revoked перед вызовом free_client().
nfs4_laundromat() нарушает это инвариантное свойство: он извлекает истекшее делегирование из списка cl_delegations, отпускает блокировку deleg_lock, а затем revoke_delegation() перепривязывает его к списку cl_revoked под защитой cl_lock. В этот промежуток времени делегирование отсутствует в обоих списках, поэтому client_has_state() может сообщить об отсутствии оставшихся состояний (state).
Каждый путь завершения работы (teardown path) сначала требует, чтобы значение cl_rpc_users было равно нулю, однако laundromat не поддерживает такую ссылку. Следовательно, клиент, у которого только что истек срок действия отзываемого делегирования, может достичь free_client() в то время как revoke_delegation() все еще собирается разыменовывать cl_lock, что приводит к use-after-free.
Закрепите клиента с помощью счетчика cl_rpc_users на период операции отзыва, чтобы процесс завершения работы блокировался до его завершения, а затем удалите делегирование из списка cl_revoked. Клиент, который уже находится в процессе истечения срока действия, самостоятельно удаляет свое делегирование, поэтому следует пропустить этот случай и оставить делегирование в списке del_recall_lru.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.