Уязвимость в Ghostscript, эксплуатируемая через ImageMagick

В Ghostscript, наборе инструментов для обработки, преобразования и генерации документов в форматах PostScript и PDF, выявлена критическая уязвимость (CVE-2021-3781), позволяющая выполнить произвольный код при обработке специально оформленного файла. Изначально на наличие проблемы обратил внимание Эмиль Лернер, который рассказал об уязвимости 25 августа на прошедшей в Санкт-Петербурге конференции ZeroNights X (в докладе было рассказано, как Эмиль использовал уязвимость для получения премий за демонстрацию атак на сервисы компаний Airbnb, Dropbox и Yandex в рамках программ bug bounty).

5 сентября в открытом доступе появился рабочий эксплоит, позволяющий атаковать системы с Ubuntu 20.04 через передачу выполняемому на сервере web-скрипту, использующему пакет php-imagemagick, специально оформленного документа, загруженного под видом картинки. При этом по предварительным данным подобный эксплоит находился в обиходе ещё с марта.

Заявлялось о возможности атаки на системы с GhostScript 9.50, но выяснилось, что уязвимость проявляется и во всех последующих версиях GhostScript, включая находящийся в разработке выпуск 9.55 из Git. Исправление было принято в репозиторий GhostScript только 9 сентября, а во многих дистрибутивах проблема остаётся до сих пор не исправлена (Debian, Ubuntu, Fedora, SUSE, RHEL). Релиз GhostScript с устранением уязвимости планируют опубликовать до конца месяца.

Проблема вызвана возможностью обхода режима изоляции “-dSAFER” из-за недостаточной проверки использования спецсимволов в параметрах устройств “%pipe%”, %handle%” и %printer%”, позволявших добиться выполнения произвольных 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-тип распознаётся по содержимому, а не полагаясь на расширение).

Release. Ссылка here.