Новая критическая уязвимость в Ghostscript
Объявлено в выявлении новой критической уязвимости (CVE-2019-6116) в Ghostscript, наборе инструментов для обработки, преобразования и генерации документов в форматах PostScript и PDF. Уязвимость позволяет организовать выполнение произвольного кода в системе при обработке специально оформленных документов. Это 14 опасная уязвимость, выявленная в Ghostscript за последние 6 месяцев. На этот раз для обхода режима изоляции "-dSAFER" использованы особенности обработки псевдооператов в подпрограммах.
Проблема проявляется в том числе в последнем выпуске 9.26 и пока устранена только в виде патчей (требуется наложение 6 патчей). В дистрибутивах проблема уже устранена в SUSE/openSUSE, Ubuntu, RHEL. Проблема остается неисправленной в Debian и Fedora. Для проверки своих систем доступен прототип эксплоита.
Напомним, что уязвимости в Ghostscript представляют повышенную опасность, так как данный пакет используется во многих популярных приложениях для обработки форматов PostScript и PDF. Например, Ghostscript вызывается в процессе создания миниатюр на рабочем столе, при фоновой индексации данных и при преобразовании изображений. Для успешной атаки во многих случаях достаточно просто загрузить файл с эксплоитом или просмотреть каталог с ним в Nautilus. Уязвимости в Ghostscript также можно эксплуатировать через обработчики изображений на базе пакетов ImageMagick и GraphicsMagick, передав в них JPEG или PNG-файл, в котором вместо картинки находится код PostScript (такой файл будет обработан в Ghostscript, так как MIME-тип распознается по содержимому, а не полагаясь на расширение).
В качестве обходного пути защиты от эксплуатации уязвимости через ImageMagick и автоматичкеский построитель миниатюр в GNOME рекомендуется переименовать исполняемый файл /usr/bin/evince-thumbnailer и запретить обработку PS, EPS, PDF и XPS в ImageMagick, для чего в секцию "policymap" файла конфигурации /etc/ImageMagick/policy.xml следует добавить:
&8249;policy domain="coder" rights="none" pattern="PS" /&8250; &8249;policy domain="coder" rights="none" pattern="PS2" /&8250; &8249;policy domain="coder" rights="none" pattern="PS3" /&8250; &8249;policy domain="coder" rights="none" pattern="EPS" /&8250; &8249;policy domain="coder" rights="none" pattern="PDF" /&8250; &8249;policy domain="coder" rights="none" pattern="XPS" /&8250;