ImageMagick - библиотека с открытым исходным кодом для чтения и обработки изображений. Её встраивают в серверы загрузки картинок, системы управления контентом, конвейеры конвертации файлов и настольные редакторы. Новый набор исправлений закрывает больше двадцати уязвимостей. Почти все они попали в категории низкой и средней опасности, но одна получила рейтинг High по классификации вендора.
Детали уязвимостей
Самая серьёзная проблема касается изображений, сжатых алгоритмом bzip2. Специально подготовленный файл вызывает переполнение буфера в стеке, то есть запись данных за пределами выделенной под них области памяти. Выход за границы позволяет перезаписать служебные структуры программы. На практике это открывает путь к выполнению чужого кода на машине, где обрабатывается картинка. Атака проходит по сети, а от злоумышленника требуется лишь низкий уровень доступа к системе. Взаимодействие с пользователем не нужно. По влиянию на целостность и доступность уязвимость оценена как высокая.
Остальная масса исправлений связана с утечками памяти. Механизм один: при разборе специально созданного файла библиотека выделяет память и не освобождает её. За один проход потеря невелика, но при потоке запросов расход памяти растёт. Рано или поздно сервис замедляется или падает. Проблемные места рассредоточены по разным частям проекта. Утечки нашли в декодерах нескольких форматов, в кодировщиках JNG и FPX, а также в модуле PerlMagick и в отдельных опциях командной строки.
Часть уязвимостей относится к переполнениям буфера. Помимо случая с bzip2, разработчики закрыли запись за пределами буфера при выводе информации о выпуклой оболочке и чтении файлов формата PICT на 32-битных системах. Отдельно исправили переполнение при разборе изображений MNG. Предыдущая правка для этого формата оказалась неполной. Похожая история с одной из более ранних уязвимостей для 32-битных сборок: патч не покрыл все пути обработки, и потребовалась дополнительная проверка.
Обнаружилось и чтение за пределами буфера. Оно возникает, когда программа печатает минимальный ограничивающий прямоугольник. В этом случае злоумышленник может получить небольшую порцию данных из памяти процесса. Утечка ограничена, но конфиденциальность всё же страдает.
Отдельный блок - обход политик безопасности. ImageMagick умеет запрещать открытие опасных форматов и запуск внешних программ через файл настроек. Несколько рекомендаций показали, что эти ограничения не дают полной защиты. Обойти политику удаётся через символическую ссылку, через делегат (внешний обработчик, которому библиотека передаёт работу с файлом), а также в декодерах UHDR, PS, PDF и XPS. Декодер UHDR проводил проверку размеров слишком поздно, уже после разбора данных. Именно поэтому авторы оценили проблему как среднюю, а не высокую.
Нашлось место и для внедрения кода. Кодировщик MVG выполняет чужой код, если злоумышленник может задать параметры отрисовки. Декодер того же формата приводит к переполнению стека на отдельных путях обработки. Ещё одна уязвимость вызывает обращение по пустому указателю в декодере DJVU, когда выделение памяти заканчивается неудачей. Сам по себе такой сбой не даёт контроля над системой, но роняет процесс.
Кого всё это касается. Библиотеку используют далеко не только настольные программы. Любой сервис, который принимает картинки от пользователей и прогоняет их через ImageMagick, находится в зоне риска. Особенно если сервер работает на 32-битной платформе или разрешает форматы вроде MNG, PICT и bzip2-сжатые изображения. Обход политик опасен для тех, кто полагался на настройки как на единственную защиту.
Разработчики закрыли перечисленные проблемы в версии 7.1.2-33. Для старой ветки выпустили 6.9.13-58. Обновление стоит установить всем, кто держит ImageMagick на публичном сервере или в цепочке обработки загружаемых файлов. После обновления полезно проверить, что настройки политики запрещают ненужные форматы и внешние обработчики. Для 32-битных сборок обновление обязательно, поскольку часть уязвимостей проявляется только там.
Стоит учесть: несколько патчей этого выпуска исправляют неполные правки прошлых лет. Так, CVE-2026-34238 потребовала дополнительной проверки. Это напоминает, что обновляться нужно и после установки патча: закрытая уязвимость может вернуться в новой форме, если исправление оказалось частичным.
Ссылки
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-j2rp-5r6m-f7x8
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-528x-2384-jmxp
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-h3qx-937j-245g
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-5222-mhv9-26rg
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-fp46-842c-2v83
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-x258-xjqf-6j3f
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-4wfv-467j-fqh9
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-79p5-w6jv-r997
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-j657-rmv3-4m94
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-v5f5-4v9x-p3f2
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-qq8x-fq3x-43h4
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-pwpf-8799-94cj
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-mqmp-r5jh-jx7w
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-8w9c-hj38-8pf9
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-v9q4-cm37-q2jm
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-83w9-w85j-h9jc
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-7438-vh5v-v52h
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-8ghq-p369-g395
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-vm77-q83h-5fhg
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-5jf2-9gcp-q234
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-7r5g-p7ff-jgcp
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-pj4h-g4pf-66v3
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-m938-565c-h9qf
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-c2qq-jqw7-q4mx
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-6p6q-wfrv-ffhh