CVE-2026-64317 in Linux
Сводка
по VulDB • 25.07.2026
В ядре Linux была устранена следующая уязвимость:
isofs: ограничение компонентов символических ссылок Rock Ridge в рамках записи SL (SL record)
Функции get_symlink_chunk() и обработка данных SL в parse_rock_ridge_inode_internal() обрабатывают компоненты переменной длины записи «SL» (symbolic link — символьная ссылка) формата Rock Ridge. Каждый компонент состоит из двухбайтового заголовка (флаги, длина), за которым следуют len байтов текста, занимая таким образом slp->len + 2 байта. Оба цикла считывают значение slp->len и переходят к следующему компоненту, при этом get_symlink_chunk() дополнительно выполняет memcpy(rpnt, slp->text, slp->len). Однако ни один из них не проверяет, находится ли компонент в пределах записи SL перед его разыменованием (dereferencing).
Сформированная злоумышленником запись SL, у которой значение len компонента выходит за пределы самой записи (rr->len), вызывает чтение данных вне границ массива объемом до 255 байт. Если такая запись расположена в конце своего буфера поддержки — например, небольшой блок продолжения, выделенный через kmalloc() и доступный по ссылке из записи CE, — то чтение пересекает границы выделения памяти; после этого get_symlink_chunk() копирует прочитанные вне границ данные в тело символьной ссылки, возвращаемое пользовательскому пространству функцией readlink(), что приводит к раскрытию соседних областей памяти ядра.
Образы ISO 9660 регулярно монтируются с ненадежных съемных носителей — среды рабочего стола автоматически монтируют их (например, через udisks2) без необходимости наличия CAP_SYS_ADMIN, поэтому содержимое записей контролируется злоумышленником.
Необходимо отклонять любой компонент, который не помещается в оставшиеся байты записи, перед его использованием. В функции get_symlink_chunk() следует возвращать NULL (аналогично существующим проверкам буфера вывода plimit), чтобы при наличии поврежденной записи функция readlink() завершалась ошибкой -EIO вместо молчаливого возврата усеченного пути; в parse_rock_ridge_inode_internal() необходимо остановить обход размера inode.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.