Каждый пакет данных RPCSEC_GSS проверяется с помощью процедуры, которая проверяет подпись в пакете. Эта процедура копирует часть пакета в буфер стека, но не может гарантировать, что буфер достаточно велик, и злонамеренный клиент может вызвать переполнение стека. Примечательно, что это не требует от клиента предварительной аутентификации.
Поскольку реализация RPCSEC_GSS в кгссапи.ко уязвима, удаленное выполнение кода в ядре возможно авторизованным пользователем, который может отправлять пакеты на сервер NFS ядра, пока кгссапи.ко загружен в ядро. В пользовательском пространстве приложения, в которых загружен librpcgss_sec и запускают сервер RPC, уязвимы для удаленного выполнения кода от любого клиента, способного отправлять ему пакеты. Нам неизвестны подобные приложения в базовой системе FreeBSD.
Показать оригинальное описание (EN)
Each RPCSEC_GSS data packet is validated by a routine which checks a signature in the packet. This routine copies a portion of the packet into a stack buffer, but fails to ensure that the buffer is sufficiently large, and a malicious client can trigger a stack overflow. Notably, this does not require the client to authenticate itself first. As kgssapi.ko's RPCSEC_GSS implementation is vulnerable, remote code execution in the kernel is possible by an authenticated user that is able to send packets to the kernel's NFS server while kgssapi.ko is loaded into the kernel. In userspace, applications which have librpcgss_sec loaded and run an RPC server are vulnerable to remote code execution from any client able to send it packets. We are not aware of any such applications in the FreeBSD base system.
Характеристики атаки
Последствия
Строка CVSS v3.1