В Ghostscript, наборе инструментов для обработки, преобразования и генерации документов в форматах PostScript и PDF, выявлена критическая уязвимость (CVE-2021-3781), позволяющая выполнить произвольный код при обработке специально оформленного файла. Изначально на наличие проблемы обратил внимание Эмиль Лернер, который рассказал об уязвимости 25 августа на прошедшей в Санкт-Петербурге конференции ZeroNights X (в докладе было рассказано, как Эмиль в рамках программ bug bounty использовал уязвимость для получения премий за демонстрацию атак на сервисы AirBNB, Dropbox и Яндекс.Недвижимость).
5 сентября в открытом доступе появился рабочий эксплоит, позволяющий атаковать системы с Ubuntu 20.04 через передачу выполняемому на сервере web-скрипту, использующему пакет php-imagemagick, специально оформленного документа, загруженного под видом картинки. При этом по предварительным данным подобный эксплоит находился в обиходе ещё с марта. Заявлялось о возможности атаки на системы с GhostScript 9.50, но выяснилось, что уязвимость проявляется и во всех последующих версиях GhostScript, включая находящийся в разработке выпуск 9.55 из Git.
Исправление было предложено 8 сентября и после рецензирования принято в репозиторий GhostScript 9 сентября. Во многих дистрибутивах проблема остаётся до сих пор не исправлена (статус публикации обновлений можно посмотреть на страницах Debian, Ubuntu, Fedora, SUSE, RHEL, Arch Linux, FreeBSD, NetBSD). Релиз GhostScript с устранением уязвимости планируют опубликовать до конца месяца.
Проблема вызвана возможностью обхода режима изоляции «-dSAFER» из-за недостаточной проверки параметров Postscript-устройства «%pipe%», позволявших добиться выполнения произвольных shell-команд. Например, для запуска утилиты id в документе достаточно указать строку «(%pipe%/tmp/&id)(w)file» или «(%pipe%/tmp/;id)(r)file».
Напомним, что уязвимости в Ghostscript представляют повышенную опасность, так как данный пакет используется во многих популярных приложениях для обработки форматов PostScript и PDF. Например, Ghostscript вызывается в процессе создания миниатюр на рабочем столе, при фоновой индексации данных и при преобразовании изображений. Для успешной атаки во многих случаях достаточно просто загрузить файл с эксплоитом или просмотреть каталог с ним в файловом менеджере, поддерживающем отображение эскизов документов, например, в Nautilus.
Уязвимости в Ghostscript также можно эксплуатировать через обработчики изображений на базе пакетов ImageMagick и GraphicsMagick, передав в них JPEG или PNG-файл, в котором вместо картинки находится код PostScript (такой файл будет обработан в Ghostscript, так как MIME-тип распознаётся по содержимому, а не полагаясь на расширение). В качестве обходного пути защиты от эксплуатации уязвимости через автоматический построитель миниатюр в GNOME и ImageMagick рекомендуется отключить вызов evince-thumbnailer в /usr/share/thumbnailers/evince.thumbnailer и запретить обработку форматов PS, EPS, PDF и XPS в ImageMagick, для чего в секцию «policymap» файла конфигурации /etc/ImageMagick/policy.xml следует добавить:
<policy domain="coder" rights="none" pattern="PS" />
<policy domain="coder" rights="none" pattern="PS2" />
<policy domain="coder" rights="none" pattern="PS3" />
<policy domain="coder" rights="none" pattern="EPS" />
<policy domain="coder" rights="none" pattern="EPI" />
<policy domain="coder" rights="none" pattern="PDF" />
<policy domain="coder" rights="none" pattern="XPS" />