В Ghostscript, наборе инструментов для обработки, преобразования и генерации документов в форматах PostScript и PDF, выявлена уязвимость (CVE-2023-28879), которую можно использовать для организации выполнения произвольного кода при открытии специально оформленных документов в формате PostScript. Уязвимость устранена в обновлениях Ghostscript 10.01.1 и GhostPDL 10.01.1. Проследить за появлением исправлений в дистрибутивах можно на следующих страницах: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch, NetBSD, FreeBSD.
Проблема вызвана переполнением буфера при обработке определённых конструкций, которое может привести к повреждению внутренних структур в интерпретаторе PostScript. Переполнение проявляется в обработчиках BCPEncode, BCPDecode, TBCPEncode и TBCPDecode, в случае, когда буфер записи недозаполнен на один байт и следом выполняется запись экранированного символа, занимающего два байта вместо одного. Для демонстрации возможности совершения атаки подготовлен рабочий прототип эксплоита.
Уязвимости присвоен максимальный уровень опасности (10 из 10) так как Ghostscript используется во многих популярных приложениях для обработки форматов PostScript и PDF. Например, Ghostscript вызывается в процессе создания миниатюр на рабочем столе, при фоновой индексации данных и при преобразовании изображений. Для успешной атаки во многих случаях достаточно просто загрузить файл с эксплоитом или просмотреть каталог с ним в Nautilus. Уязвимости в Ghostscript также можно эксплуатировать через обработчики изображений на базе пакетов ImageMagick и GraphicsMagick, передав в них JPEG или PNG-файл, в котором вместо картинки находится код PostScript (такой файл будет обработан в Ghostscript, так как MIME-тип распознаётся по содержимому, а не полагаясь на расширение).
Проблема вызвана переполнением буфера при обработке определённых конструкций, которое может привести к повреждению внутренних структур в интерпретаторе PostScript. Переполнение проявляется в обработчиках BCPEncode, BCPDecode, TBCPEncode и TBCPDecode, в случае, когда буфер записи недозаполнен на один байт и следом выполняется запись экранированного символа, занимающего два байта вместо одного. Для демонстрации возможности совершения атаки подготовлен рабочий прототип эксплоита.
Уязвимости присвоен максимальный уровень опасности (10 из 10) так как Ghostscript используется во многих популярных приложениях для обработки форматов PostScript и PDF. Например, Ghostscript вызывается в процессе создания миниатюр на рабочем столе, при фоновой индексации данных и при преобразовании изображений. Для успешной атаки во многих случаях достаточно просто загрузить файл с эксплоитом или просмотреть каталог с ним в Nautilus. Уязвимости в Ghostscript также можно эксплуатировать через обработчики изображений на базе пакетов ImageMagick и GraphicsMagick, передав в них JPEG или PNG-файл, в котором вместо картинки находится код PostScript (такой файл будет обработан в Ghostscript, так как MIME-тип распознаётся по содержимому, а не полагаясь на расширение).