Ghostscript для Windows ищет служебные файлы PostScript в предсказуемых каталогах, и этого достаточно, чтобы обычный пользователь машины выполнил свой код с чужими правами. Он создаёт ожидаемую структуру папок в корне системного диска, кладёт туда подготовленный файл, а дальше ждёт, пока интерпретатор запустит кто-то другой. Уязвимость носит идентификатор CVE-2026-19547, её оценка по шкале CVSS 4.0 - 7.0, что соответствует уровню High по классификации вендора. Затронуты все выпуски Ghostscript для Windows до 10.08.0.
Уязвимость CVE-2026-19547
Ghostscript - свободный интерпретатор языков PostScript и PDF. PostScript описывает страницы: шрифты, графику, расположение элементов. Такой файл устроен как программа, а не как набор данных, поэтому интерпретатор не читает его, а выполняет записанные в нём инструкции. Ghostscript ставят на серверы печати, в системы электронного документооборота, в конвейеры конвертации документов. Нередко он работает как системная служба с повышенными правами, поскольку обрабатывает файлы от имени сервиса, а не конкретного человека.
Подмена опирается на путь поиска. При старте интерпретатор просматривает несколько мест, где лежат файлы ресурсов, то есть служебные описания шрифтов, процедур и параметров вывода. Одно из них - каталог C:\gs\ и вложенные в него папки. На чистой установке Windows этого каталога нет, но создать его может любой пользователь, прошедший проверку подлинности. Стандартные списки управления доступом (ACL - правила, определяющие, кому и что разрешено делать с папкой или файлом) дают группе "Пользователи" право создавать каталоги в корне системного диска. Имена и структура подкаталогов предсказуемы, их не приходится подбирать, потому что они зашиты в код поиска. Значит, подготовка занимает минуты: появиться должны C:\gs\ и вложенные папки, а внутри оказывается файл PostScript, который интерпретатор примет за свой.
Дальше срабатывает автоматика. Ghostscript загружает найденный файл и выполняет его с теми же правами, что и сам процесс. Если интерпретатор запустил администратор, чужой код получает администраторские полномочия. Если Ghostscript работает как служба от имени SYSTEM, результат тот же: полный контроль над контекстом процесса и выполнение произвольного кода на машине. Класс слабого места обозначен как CWE-426, недоверенный путь поиска. Программа доверяет файлу лишь потому, что он лежит в ожидаемом месте, и не проверяет, кто его туда положил. Тот же принцип лежит в основе подмены библиотек в Windows, которую эксплуатируют уже много лет.
Атака локальная. Сетевой доступ не нужен, сложность низкая, учётной записи администратора тоже не требуется. Злоумышленник работает из-под обычного пользователя, а участие жертвы минимально: ничего нажимать не надо, достаточно, чтобы кто-то или что-то запустило Ghostscript после подмены. Многопользовательские системы, серверы терминалов, общие рабочие станции и тонкие клиенты дают самый заметный эффект, поскольку один пользователь дотягивается до прав другого. Службы, автоматически разбирающие входящие документы, добавляют повторяемость: конвейер запускает интерпретатор снова и снова, и подложенный файл срабатывает при каждом проходе. Упоминаний о применении уязвимости в реальных атаках в записи нет.
Исправление вышло в версии 10.08.0. Проверить текущий номер сборки проще всего командой gs --version. Если обновление отложено, полезно закрыть саму возможность подмены: снять у обычных пользователей право создавать папки в корне системного диска. Такая настройка перекрывает и другие схемы с предсказуемыми путями, а их у приложений для Windows хватает. Отдельно имеет смысл посмотреть, не появился ли каталог C:\gs\ на машинах с установленным Ghostscript, и что в нём лежит. На серверах с несколькими пользователями стоит пересмотреть права службы: чем меньше у неё полномочий, тем скромнее последствия подобной ошибки. Там же не помешает проверить, кому из учётных записей разрешена запись в корень системного диска.
Ошибки в путях поиска редко попадают в сводки. Они не выглядят эффектно, не требуют экзотических условий и потому подолгу живут в коде. Зато хорошо работают в связке: сначала злоумышленник добывает доступ обычного пользователя, а потом ищет слабое место, которое поднимет его выше. Ghostscript тянет за собой целый пласт программ - библиотеки работы с PDF, системы печати, скрипты обработки счетов и отчётов. Обновление до 10.08.0 стоит провести не только на серверах, но и на рабочих станциях, куда его могли поставить годы назад и больше о нём не вспоминать.
Ссылки