В Ghostscript, свободном наборе инструментов для работы с PDF и языком PostScript, закрыли уязвимость CVE-2026-39919. Ошибка в разборе изображений формата JPEG 2000 ведёт к переполнению буфера в динамической памяти, и злоумышленник может выполнить на чужой машине собственный код. Жертве не нужно ничего открывать вручную. Достаточно, чтобы подложенный файл оказался на диске и попал в поле зрения фоновых служб. В части сценариев хватает просмотра каталога с таким PDF в файловом менеджере Nautilus из среды GNOME.
Уязвимость CVE-2026-39919
Уязвимы все выпуски Ghostscript младше 10.08.0. Запись о проблеме опубликовал VulnCheck 15 сентября 2026 года. Класс ошибки - переполнение буфера в куче, то есть в области динамической памяти, которую программа запрашивает во время работы. Вектор атаки сетевой, дополнительных привилегий злоумышленнику не требуется, а участие человека сводится к одному: вредоносный документ должен оказаться у него на устройстве.
Механика ошибки связана с устройством формата JPEG 2000. Изображение в нём делится на компоненты, и для каждого можно указать свой коэффициент субдискретизации. Проще говоря, каналы хранятся с разной плотностью отсчётов. Когда эти коэффициенты различаются, Ghostscript уходит в ветку вывода для данных с битовой глубиной меньше байта. Буфер под одну строку выделяют из расчёта упакованных значений, а запись идёт по целому байту на каждый столбец. В результате часть байтов выходит за границы выделенного блока. Служебные структуры распределителя памяти портятся, и это позволяет подменить данные, которыми программа пользуется при работе.
Атакующий готовит PDF, внутри которого лежит картинка JPEG 2000 с несогласованными параметрами компонентов. Разборщик обрабатывает её и выполняет код с правами того процесса, который вызвал Ghostscript. Дальше многое зависит от контекста. Если это системная служба, права окажутся шире, чем у обычного пользователя. Если это приложение, запущенное от имени владельца машины, злоумышленник получит доступ к его файлам и сохранённым сессиям.
Риск усиливает то, как часто Ghostscript вызывают в фоне. Среда рабочего стола строит с его помощью миниатюры документов. Службы индексации разбирают содержимое файлов, чтобы ускорить поиск. Конвертеры и системы подготовки печати прогоняют через него изображения. Поэтому для срабатывания не нужен явный запуск программы или открытие документа в редакторе. Хватает автоматической обработки, о которой пользователь даже не знает.
Есть и другой путь атаки. Обработчики изображений на базе ImageMagick и GraphicsMagick определяют тип файла по содержимому, а не по расширению. Файл с именем вида picture.jpg, внутри которого лежит не картинка, а код PostScript, уйдёт на обработку в Ghostscript. Эта особенность расширяет зону риска далеко за пределы настольных систем. Сервисы, принимающие загрузки от пользователей, очереди на преобразование картинок в веб-приложениях, автоматический разбор вложений на почтовых шлюзах - всё это подходящие цели для атаки. Злоумышленнику достаточно загрузить безобидный с виду файл и дождаться, пока его подхватит конвейер обработки.
Исправление вышло в Ghostscript 10.08.0. Обновлённая версия закрывает ошибку разбора, поэтому установка свежего выпуска остаётся основным способом защиты. Сборки готовят сопровождающие дистрибутивов Linux и поставщики коммерческих продуктов, которые встраивают Ghostscript в свои решения. До установки патча разумно ограничить автоматическую обработку документов и изображений из недоверенных источников. В чувствительных средах можно временно отказаться от построения миниатюр для входящих файлов или сузить список каталогов, которые попадают в индексацию. Отключать Ghostscript целиком обычно нельзя: от него зависят печать, просмотр документов и часть издательских процессов.
Отдельного внимания заслуживает то, что ошибка проявляется только при разборе изображений с несогласованными коэффициентами компонентов. Такой файл несложно собрать, а обнаружить его среди обычных документов почти невозможно. Проверка антивирусом тут помогает не всегда: вредоносный код лежит внутри изображения в формате, который большинство сканеров разбирает поверхностно. Поэтому в организациях, где документы приходят от внешних контрагентов, ставку стоит делать на своевременное обновление библиотеки и на изоляцию процессов, которые её вызывают.
История с JPEG 2000 в Ghostscript повторяет знакомую картину. Формат редко встречается в обычной переписке, зато плотно встроен в издательские и промышленные цепочки, где файлы поступают извне. Библиотеки разбора PDF и графики годами остаются частым источником проблем: они работают с потенциально враждебными данными и часто трудятся без присмотра. Обновление до 10.08.0 стоит поставить всем, у кого Ghostscript есть в системе, включая те машины, где о нём вспоминают только при настройке печати.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2026-39919
- https://security-tracker.debian.org/tracker/CVE-2026-39919
- https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/tag/gs10080