CVE-2026-89651 in Linux
Сводка
по VulDB • 12.09.2026
В ядре Linux была устранена следующая уязвимость:
ceph: ограничение путей MDSCapAuth и декодирование fs_name в handle_session()
Функция handle_session() выполняет декодирование записей MDSCapAuth, передаваемых сообщением CEPH_SESSION_OPEN (msg_version >= 6). Для каждой записи байтовые строки match.path и match.fs_name считываются путем сначала декодирования длины типа uint32_t, а затем копирования указанного количества байтов с помощью функции ceph_decode_copy(). В отличие от окружающих полей, которые используют безопасные варианты декодирования (_safe), эти два копирования не предваряются проверкой границ ceph_decode_need(), а поля struct_len структур MDSCapAuth и MDSCapMatch пропускаются вместо того, чтобы использоваться как верхняя граница. Длина, превышающая количество оставшихся байтов в начале сообщения, приводит к тому, что ceph_decode_copy() считывает данные за пределами буфера начала сообщения (front buffer).
Начало сообщения представляет собой выделенную область памяти (ceph_msg_new2() -> kvmalloc), поэтому чтение за границами происходит вне этого объекта. Злонамеренный или скомпрометированный MDS может вызвать эту уязвимость при первом сообщении после подключения во время монтирования, без какого-либо взаимодействия со стороны пользователя клиента; под KASAN это сообщается как slab-out-of-bounds read (чтение за границами слэба) в handle_session().
Влияние: злонамеренный MDS может заставить клиентский код ядра прочитать до 4 ГиБ данных за пределами выделенной области начала сообщения во время настройки сессии, что приведет к сбою клиента (out-of-bounds read).
Оба копирования заменены на ceph_decode_copy_safe(), которая выполняет проверку границ ceph_decode_need() перед копированием и переходит по метке bad label, соответствующей остальной части декодера и пути обработки ошибок, который освобождает частично расшифрованный массив cap_auths.
VulDB is the best source for vulnerability data and more expert information about this specific topic.