В ядре Linux устранена следующая уязвимость:
nfsd: исправлено несоответствие часового домена в client_still_reclaiming().
client_still_reclaiming() вычисляет крайний срок из nn->boot_time
(CLOCK_REALTIME, ~1,7 миллиарда), но сравнивает с
ktime_get_boottime_секунды() (CLOCK_BOOTTIME, секунды с момента загрузки). Сравнение всегда неверно — время безотказной работы составит около 54 лет.
для BOOTTIME превышения крайнего срока, полученного из REALTIME. Это означает, что любой клиент может удерживать сервер в режиме отсрочки на неопределенный срок,
отправка запросов CLAIM_PREVIOUS OPEN, блокировка всех невосстановленных
операции для всех остальных клиентов.
Добавьте boot_time_bt (CLOCK_BOOTTIME) рядом с существующим boot_time.
и использовать его для расчета крайнего срока. время загрузки (CLOCK_REALTIME)
сохраняется для роли cl_boot clientid-nonce.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: nfsd: fix clock domain mismatch in clients_still_reclaiming() clients_still_reclaiming() computes a deadline from nn->boot_time (CLOCK_REALTIME, ~1.7 billion) but compares it against ktime_get_boottime_seconds() (CLOCK_BOOTTIME, seconds since boot). The comparison is always false — it would take ~54 years of uptime for BOOTTIME to exceed the REALTIME-derived deadline. This means any client can hold the server in grace indefinitely by sending CLAIM_PREVIOUS OPEN requests, blocking all non-reclaim operations for all other clients. Add boot_time_bt (CLOCK_BOOTTIME) alongside the existing boot_time and use it for the deadline computation. boot_time (CLOCK_REALTIME) is preserved for its cl_boot clientid-nonce role.
Характеристики атаки
Последствия
Строка CVSS v3.1