Ad

CVE-2026-89674

CRITICAL CVSS 3.1: 9,8 EPSS 0.51%
Обновлено 14 сентября 2026
Linux
Параметр Значение
CVSS 9,8 (CRITICAL)
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: nfsd: исправлен расчет длины XDR в nfsd4_ff_encode_layoutget. Вычисление размера буфера XDR в nfsd4_ff_encode_layoutget() имеет множественные ошибки, которые могут привести либо к записи за пределами допустимого диапазона, либо к утечка неинициализированной памяти ядра клиенту: - fh_len не учитывает заполнение XDR в данных дескриптора файла. - длины uid и gid используют «8 + len», но на самом деле xdr_encode_opaque() записывает «4 + xdr_align_size(len)» байтов - ds_len опускает поля flags и stats_collect_hint (8 байт), в то время как константа заголовка len завышает оценку на 8 байт - это частично отменить, но оставить чистое несоответствие Худший случай возникает с короткими строками (например, uid=0, gid=0 с дескриптор файла нечетного размера), где функция записывает до 5 байтов дальше зарезервированный буфер XDR. И наоборот, когда длина строки оказывается Выровнено по 4 байта, резервирование слишком велико и содержимое буфера устаревшее отправляется клиенту.

Исправьте это, выделив каждое закодированное поле явно в ds_len. расчет с использованием xdr_align_size() для всех непрозрачных объектов переменной длины. поля и исправление констант заголовков.

Показать оригинальное описание (EN)

In the Linux kernel, the following vulnerability has been resolved: nfsd: fix XDR length calculation in nfsd4_ff_encode_layoutget The XDR buffer size calculation in nfsd4_ff_encode_layoutget() has multiple errors that can result in either an out-of-bounds write or leaking uninitialized kernel memory to the client: - fh_len doesn't account for XDR padding on the file handle data - uid and gid lengths use "8 + len" but xdr_encode_opaque() actually writes "4 + xdr_align_size(len)" bytes - ds_len omits the flags and stats_collect_hint fields (8 bytes), while len's header constant overestimates by 8 bytes -- these partially cancel but leave a net mismatch The worst case occurs with short strings (e.g. uid=0, gid=0 with an odd-sized file handle), where the function writes up to 5 bytes past the reserved XDR buffer. Conversely, when string lengths happen to be 4-byte aligned, the reservation is too large and stale buffer content is sent to the client. Fix this by breaking out every encoded field explicitly in the ds_len calculation, using xdr_align_size() for all variable-length opaque fields, and correcting the header constants.

Характеристики атаки

Способ атаки
По сети
Атака возможна удалённо
Сложность
Низкая
Легко эксплуатировать
Нужны права
Не требуются
Права не нужны
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Высокое
Полная утечка данных
Целостность
Высокое
Полная модификация данных
Доступность
Высокое
Полный отказ в обслуживании

Строка CVSS v3.1