В ядре Linux устранена следующая уязвимость:
nfsd: установите SC_STATUS_FREED в nfsd4_drop_revoked_stid для делегирования
nfsd4_drop_revoked_stid() обрабатывает FREE_STATEID для отзыва администратором
делегирование, но не устанавливает SC_STATUS_FREED перед освобождением cl_lock.
revoke_delegation() использует этот флаг, чтобы определить, имеет ли FREE_STATEID
уже обработал делегирование - без него освобожденное делегирование
добавлен в cl_revoked через list_add(), создавая использование после освобождения, когда
cl_revoked позже обрабатывается в __destroy_client().
Путь SC_STATUS_REVOKED в nfsd4_free_stateid() (строка 7983) уже
правильно устанавливает SC_STATUS_FREED. Примените тот же узор к
Путь SC_STATUS_ADMIN_REVOKED в nfsd4_drop_revoked_stid().
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: nfsd: set SC_STATUS_FREED in nfsd4_drop_revoked_stid for delegations nfsd4_drop_revoked_stid() handles FREE_STATEID for admin-revoked delegations but does not set SC_STATUS_FREED before releasing cl_lock. revoke_delegation() uses this flag to detect whether FREE_STATEID has already processed the delegation -- without it, the freed delegation is added to cl_revoked via list_add(), producing a use-after-free when cl_revoked is later traversed in __destroy_client(). The SC_STATUS_REVOKED path in nfsd4_free_stateid() (line 7983) already sets SC_STATUS_FREED correctly. Apply the same pattern to the SC_STATUS_ADMIN_REVOKED path in nfsd4_drop_revoked_stid().
Характеристики атаки
Последствия
Строка CVSS v3.1