В 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-тип распознаётся по содержимому, а не полагаясь на расширение).