ImageMagick допускает переполнение стека при разборе TIFF и запись за границами буфера

ImageMagick

Специально собранное изображение способно обрушить процесс, который обрабатывает картинки через ImageMagick. Библиотека выходит за границы памяти, и процесс завершается аварийно. Речь идёт о двух уязвимостях низкой степени опасности: одна проявляется в декодере TIFF, вторая при морфинге изображений. Затронуты версии до 7.1.2-34, исправление вошло в 7.1.2-34. Данных об эксплуатации в реальных атаках нет, CVE-идентификаторы проблемам не присвоены.

Две уязвимости ImageMagick в версии 7.1.2-34

Обе записи опубликованы в один день в базе GitHub Security Advisories. Вендор классифицировал каждую как Low. При этом ни утечки данных, ни подмены файлов такие сценарии не дают: страдает только доступность сервиса. Ни конфиденциальность, ни целостность в отчётах не затронуты.

Затронуты сборки ImageMagick ранее 7.1.2-34, включая текущую ветку 7.1.x. Библиотека лежит в основе множества сервисов: её вызывают веб-приложения, конвейеры обработки фотографий, скрипты пакетной конвертации. Любой из этих сценариев принимает файлы извне, и риск связан именно с этим. Отдельная деталь: первый отчёт, по пометке в публикации, подготовлен с помощью ИИ-ассистента.

Переполнение стека в декодере TIFF

Первый сценарий связан с форматом TIFF, который используют для хранения растровой графики и фотоснимков. Файл, собранный особым образом, вызывает переполнение стека. Стек - служебная область памяти, где программа держит адреса возврата и локальные переменные. Причина в неконтролируемой рекурсии: функция вызывает саму себя, пока место в стеке не закончится. Такой класс ошибок описывают как CWE-674.

Уязвимость срабатывает только при отключённом декодере DNG. Это формат цифровых негативов, расширение TIFF для камер. Настройка встречается в сборках без поддержки сырых форматов. Атака идёт по сети, однако сложность её высокая: угадать условия и собрать работоспособный файл непросто. Учётные записи и участие пользователя не нужны. Ущерб ограничен отказом в обслуживании: процесс падает, работа сервиса прерывается.

Запись за границами буфера при морфинге

Второй сценарий касается операции морфинга. Она строит промежуточные кадры между двумя изображениями, и её часто применяют для анимации переходов. Подготовленные картинки заставляют библиотеку записать данные за пределами выделенного блока памяти. Такой выход за границы способен повредить соседние структуры и уронить процесс.

Здесь вектор локальный. Вредоносный файл должен попасть на машину, а пользователь - сам запустить обработку. Сложность атаки низкая, взаимодействие с человеком обязательное. Итог тот же - отказ в обслуживании. Повреждение памяти иногда открывает путь к исполнению чужого кода, но в отчёте такая возможность не заявлена, и приписывать ей лишний вес не следует.

Обновление и ограничения

Обе проблемы закрыты в ImageMagick 7.1.2-34. Переход на эту версию или более новую снимает вопрос. Если немедленная установка невозможна, ограничьте круг источников: не пропускайте через библиотеку изображения, присланные извне. Службы конвертации разумно держать в изоляции - отдельный пользователь, контейнер, лимит памяти процесса. Операцию морфинга на недоверенных файлах проще отключить совсем.

ImageMagick стоит в зависимостях у тысяч проектов, и находки в нём появляются регулярно. Нынешние уязвимости бьют по доступности, а не по данным. Для публичного сервиса, который принимает картинки от пользователей, даже падение процесса означает простой и потерю клиентов. Низкая оценка не повод откладывать обновление.

Ссылки

Комментарии: 0