Координационный центр CERT (компьютерная группа реагирования на чрезвычайные ситуации), опубликовал предупреждение о выявлении уязвимостей, затрагивающих приложения и сайты, использующие библиотеку ImageMagick в конфигурации по умолчанию для обработки или преобразования изображений. Успешная эксплуатация позволяет атакующему читать и записывать файлы, насколько позволяют права доступа под которыми выполняется ImageMagick. Уязвимостям присвоено кодовое имя ImageTragick2, по аналогии с проблемой, выявленной в 2016 году.
За последние два месяца в ImageMagick устранено около сотни уязвимостей, но проблемы, о которых предупреждает CERT, вызваны не ошибками в коде ImageMagick, а использованием по умолчанию настроек, допускающих вызов внешних обработчиков для форматов SVG и PostScript. Обработчик в ImageMagick выбирается в зависимости от содержимого, а не расширения файла, поэтому если приложение фильтрует загрузки на уровне расширений атакующий может передать данные в форматах SVG или PostScript, например, под видом файлов с расширением JPEG или PNG.
Возможность эксплуатации уязвимости подтверждена в приложениях на базе Ruby on Rails и WordPress, но также не исключается и в других проектах, использующих ImageMagick для конвертации изображений, обрезки и создания миниатюр, таких как MediaWiki, ownCloud Classic и Redmine. Проблема также охватывает AI-инструменты, вызывающие ImageMagick при выполнении заданий, связанных с обработкой изображений.
Приводятся два сценария атаки:
- Вызов обработчика содержимого на языке MSL (Magick Scripting Language) через передачу специально оформленного SVG-изображения, в котором элемент <image> содержит ссылку "xlink:href" на ресурс с протоколом "MSL:". ImageMagick интерпретирует содержимое этого ресурса как скрипт на языке MSL, при том, что в скриптах MSL допускаются операции записи и чтение файлов. Помимо MSL аналогичный трюк с SVG может быть использован и для обработки других опасных видов контента.
- Вызов интерпретатора Ghostscript для обработки содержимого в формате PostScript. Ghostscript запускается с флагом "-dSAFER", который не ограничивает доступ к каталогу /tmp, что позволяет атакующему читать или изменять файлы в этом каталоге (например, приложения могут временно хранить в /tmp данные сеансов и загруженные файлы). В Ghostscript также регулярно находят уязвимости, позволяющие полностью обойти ограничение "-dSAFER" (последняя такая уязвимость раскрыта 10 ноября).
Для блокирования уязвимостей недостаточно обновления ImageMagick, а требуется изменение настроек в файле /etc/ImageMagick/policy.xml, в котором необходимо оставить только поддержку самых необходимых форматов и операций или как минимум запретить вызов внешних обработчиков для форматов MSL, MVG, PS, EPS и PDF. Помимо этого рекомендуется изолировать код для преобразования сторонних изображений в отдельном контейнере, проверять файлы не только по расширению, но и по содержимому, и настроить мониторинг логов ImageMagick на предмет сбоев и необычной активности.
<policy domain="coder" rights="none" pattern="MSL"/>
<policy domain="delegate" rights="none" pattern="gs"/>
<policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,EPS2,EPS3,EPI,EPSF,EPSI,EPT,EPT2,EPT3,PDF,AI,EPDF,PDFA,POCKETMOD,XPS,PCL}"/>