Внедрение команд в Pillow позволяет выполнить произвольный код при обработке EPS

vulnerability

Библиотека Pillow, которую используют для работы с изображениями в Python, содержит уязвимость CVE-2026-112900. Она даёт возможность удалённо выполнить произвольный код. Опасность затрагивает версии с 2.6.0 по 12.3.0 включительно. Оценка по CVSS 3.1 - 9,8 из 10, уровень критический. Эксплойт уже опубликован.

CVE-2026-112900 в Pillow и риск внедрения команд

Проблема сосредоточена в компоненте, который отвечает за формат EPS и обращается к Ghostscript. Это внешняя утилита, интерпретирующая файлы EPS. Pillow передаёт ей содержимое изображения. Специальные элементы, попавшие в аргументы вызова, не нейтрализуются. В бюллетене Банка данных угроз безопасности информации (BDU) указаны две слабости: внедрение в команду операционной системы и внедрение или модификация аргумента.

Атакующему достаточно, чтобы приложение обработало специально собранный EPS-файл. Команды уходят в командную оболочку операционной системы. Они выполняются с правами того процесса, который занят обработкой картинки. Аутентификация не нужна, участие пользователя тоже не требуется. По CVSS 4.0 оценка чуть ниже - 9,2, поскольку там учтены дополнительные условия эксплуатации.

Формат EPS встречается реже, чем JPEG или PNG. Однако поддержка встроена в библиотеку по умолчанию. Уязвимость проявляется только тогда, когда приложение действительно разбирает EPS-файл. Привязки к конкретной операционной системе или аппаратной платформе в бюллетене нет, эти данные уточняются.

Pillow лежит в основе множества веб-сервисов. Она генерирует миниатюры, меняет размеры, конвертирует форматы. Часто её подключают не напрямую, а через другие библиотеки и фреймворки. Поэтому круг затронутых приложений шире, чем список прямых зависимостей. Риск выше всего для сервисов, которые принимают файлы от пользователей и сразу отправляют их в обработку.

Отдельного упоминания заслуживает связка с Ghostscript. Внешняя утилита расширяет функциональность библиотеки, но одновременно добавляет ещё один слой, где возможна ошибка. Обработчик EPS передаёт данные стороннему процессу, и контроль над тем, что именно попадёт в командную строку, ослабевает.

Исправление уже вышло. Разработчики закрыли уязвимость в версии 13.0.0, релиз опубликован на GitHub. Вендор подтвердил проблему. Всем, кто использует Pillow, стоит проверить актуальную версию в своём проекте и в зависимостях. Обновиться нужно и в тех случаях, когда библиотека стоит транзитивно и напрямую в коде не упоминается.

Если обновление пока невозможно, разумно отказаться от обработки EPS-файлов из недоверенных источников. Поддержку этого формата можно отключить, если приложение его не использует. Обработку изображений полезно вынести в изолированный процесс с минимальными правами. Тогда успешная эксплуатация не даст злоумышленнику широких возможностей внутри системы.

История с Pillow показывает, насколько важен весь конвейер обработки данных, а не только основной код приложения. Библиотека может быть хорошо проверена, но вызов внешней утилиты открывает новый канал атаки. Автоматическая проверка зависимостей и регулярное обновление компонентов снижают этот риск. Публичный эксплойт делает промедление особенно нежелательным.

Ссылки

Комментарии: 0