В ядре Linux устранена следующая уязвимость:
lockd: избегать хеширования неинициализированных байтов в nlm4svc_lookup_file().
file_hash() обрабатывает первые LOCKD_FH_HASH_SIZE байты
nfs_fh.data при группировании nlm_files[], независимо от fh.size. Зафиксируйте 3de744ee4e45 («lockd: используйте функции xdrgen XDR для
Процедура NLMv4 TEST") установите .pc_argzero в ноль для преобразованного
процедуры и переместили популяцию дескрипторов файлов в
nlm4svc_lookup_file(), который копирует только байты xdr_lock->fh.len.
в lock->fh.data. Когда клиент NLMv4 представляет дескриптор файла короче, чем
LOCKD_FH_HASH_SIZE, байты fh.len..31 сохраняют любой аргумент
буфер, сохраненный из предыдущего запроса.
Та же проволочная ручка тогда
хэши для разных сегментов между вызовами; nlm_lookup_file() пропускает
существующая запись nlm_file, и поиск состояния блокировки завершается неудачей. Обнуляют только хвостовые байты, которые в противном случае потреблял бы file_hash(). Дескрипторы LOCKD_FH_HASH_SIZE или больше уже заполняют каждый байт.
который читает file_hash().
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: lockd: Avoid hashing uninitialized bytes in nlm4svc_lookup_file() file_hash() digests the first LOCKD_FH_HASH_SIZE bytes of nfs_fh.data when bucketing nlm_files[], independent of fh.size. Commit 3de744ee4e45 ("lockd: Use xdrgen XDR functions for the NLMv4 TEST procedure") set .pc_argzero to zero for the converted procedures and moved file-handle population into nlm4svc_lookup_file(), which copies only xdr_lock->fh.len bytes into lock->fh.data. When an NLMv4 client presents a file handle shorter than LOCKD_FH_HASH_SIZE, bytes fh.len..31 retain whatever the argument buffer held from an earlier request. The same wire handle then hashes to different buckets across calls; nlm_lookup_file() misses the existing nlm_file entry, and lock-state lookups fail. Zero only the tail bytes that file_hash() would otherwise consume. Handles of LOCKD_FH_HASH_SIZE or larger already populate every byte that file_hash() reads.
Характеристики атаки
Последствия
Строка CVSS v3.1