ImageTragick2: ImageMagick в конфигурации по умолчанию читает и пишет файлы по загруженной картинке
CERT/CC выпустил предупреждение VU#580079: приложения на ImageMagick с настройками по умолчанию позволяют читать и записывать файлы через подсунутый SVG или PostScript. Проблемы назвали ImageTragick2. Подтверждено на Ruby on Rails и WordPress, в списке риска — MediaWiki, ownCloud и Redmine.
Что случилось
Координационный центр CERT (CERT/CC) 12 ноября опубликовал предупреждение VU#580079 об уязвимостях в приложениях, которые обрабатывают изображения через ImageMagick с конфигурацией по умолчанию. Набор проблем получил общее имя ImageTragick2 — в память о нашумевшей истории 2016 года. Атакующий, который может загрузить картинку или заставить приложение обработать подсунутый файл, читает и записывает файлы с правами процесса ImageMagick, а в части установок эту возможность удаётся довести до выполнения своего кода.
Детали
Формально это не ошибки в коде библиотеки. ImageMagick считает такое поведение вопросом политики безопасности, а не уязвимостью, и перекладывает на приложения и дистрибутивы обязанность выставить ограничения. За последние два месяца в библиотеке закрыли около сотни дыр, но описанные сценарии работают и на свежей сборке, если политика разрешает опасные обработчики.
CERT описывает два пути атаки:
- Подстановка скрипта через SVG. Элемент image во вложенном SVG может ссылаться по xlink:href на ресурс с префиксом MSL. ImageMagick трактует содержимое как скрипт на языке Magick Scripting Language, а в нём разрешены чтение и запись файлов.
- Вызов Ghostscript через определение формата по содержимому. Обработчик выбирается по внутренним признакам файла, а не по расширению, поэтому PostScript приходит под видом JPEG или PNG. Ghostscript запускается с ключом -dSAFER, но в наблюдаемой конфигурации этот режим не закрывает каталог /tmp, где приложения нередко держат загруженные файлы и данные сессий.
Возможность эксплуатации подтверждена на приложениях Ruby on Rails и WordPress; для последнего проблеме присвоен номер CVE-2026-65640. В зоне риска также названы MediaWiki, ownCloud Classic и Redmine, а вместе с ними — конвейеры обработки в ИИ-инструментах, которые вызывают ImageMagick на каждом задании с картинкой.
Что делать
Обновления самой библиотеки недостаточно: нужно ограничить политику в файле policy.xml, оставив только действительно нужные форматы и операции. Как минимум запрещают обработчики для MSL, MVG, PS, EPS и PDF и вызов Ghostscript. Rails выпустил версии 8.0.5.2 и 8.1.4.1 со своим policy.xml для Active Storage и mini_magick — эту правку надо применить, даже если на сервере стоит свежий ImageMagick.
Дополнительно имеет смысл:
- держать конвертацию в отдельном контейнере с минимальными правами и без доступа к чувствительным каталогам;
- проверять загруженное по содержимому, а не по расширению и объявленному типу;
- не хранить в общем /tmp ничего, что нельзя показать процессу обработки картинок;
- следить за журналами ImageMagick: падения и неожиданные обращения к файлам — повод разбираться.
Что это значит
История 2016 года повторяется с важной поправкой: тогда лечились обновлением, сейчас обновление — лишь часть работы. Любой сервис, принимающий картинку от пользователя — аватар, вложение в тикете, миниатюра в вики, — держит на хосте интерпретатор с доступом к файловой системе. И это касается не только PHP-сайтов: Rails-приложения и внутренние пайплайны обработки изображений устроены так же.
Отдельный сюжет — Ghostscript. Его флаг безопасности регулярно обходят, а свежая такая уязвимость раскрыта 10 ноября. То есть даже аккуратно настроенный -dSAFER не даёт гарантии, и изоляция процесса остаётся более надёжной мерой, чем надежда на корректность чужого интерпретатора.
Комментарии 0
Комментариев пока нет — будьте первым.
Оставить комментарий
Имя и текст — этого достаточно. Комментарий появится сразу; подозрительные сообщения уходят на проверку.