Pillow — самая распространённая библиотека для работы с изображениями в Python. Уязвимость CVE-2026-112900 позволяет атакующему добиться выполнения системных команд на сервере, если тот открывает EPS-файл с именем, которое контролирует злоумышленник. Опасность связана не с содержимым изображения: безвредный EPS может стать проблемой из-за имени файла.

Pillow применяют в формах загрузки, сервисах для аватаров и миниатюр, обработке документов и PDF, а также в проектах машинного обучения. По оценке OX Security, чьё расследование привлекло внимание к уязвимостям, библиотеку скачивают около 436 миллионов раз в месяц. Выпуск Pillow 13.0.0 от 16 октября устраняет проблемы четырёх уровней серьёзности; две исправленные уязвимости сопровождающие относят к критическим. Известных случаев эксплуатации этих дефектов нет.
Открывая EPS, Pillow передаёт имя файла программе Ghostscript, которая преобразует изображение в пиксели. Библиотека предварительно не проверяет имя, а Ghostscript способен воспринять специально составленную строку как инструкцию и обратиться к другому файлу с командами. В предупреждении разработчиков сказано: «Уязвимость запускается именем файла, а не содержимым документа PostScript».
Реальный риск возникает, например, если сервер принимает загрузки и сохраняет исходное имя пользователя либо формирует имя файла из полученных от него данных. Дефект затрагивает версии Pillow от 2.6.0 до 12.3.0. Для атаки на узле должна быть установлена программа
Релиз исправляет и другие проблемы. Среди них — отдельная ошибка работы с памятью: после смены режима изображения библиотека могла повторно использовать устаревшие данные. В декодировании JPEG также нашли два переполнения. Первое относится к формату FlashPix (FPX): специально подготовленный файл может привести к выполнению команды при одном вызове
Вторая ошибка JPEG связана с созданием миниатюр для lossless JPEG и обозначена CVE-2026-112403. Подготовленное изображение может вызвать переполнение буфера и аварийное завершение программы; в предупреждении разработчиков речь идёт о сбое, а не о выполнении кода. Уязвимость «обнаружила Anthropic с помощью Claude при исследовании безопасности программного обеспечения с открытым исходным кодом; Ada Logics вручную подтвердила результат». Это часть более широкой работы Anthropic, в ходе которой нашли сотни дефектов в таких библиотеках.
Уязвимость TIFF, CVE-2026-112393, присутствует в Pillow с 2013 года. Переполнение возникает, когда сжатое TIFF-изображение сохраняют в памяти, а не в файл на диске. Так может работать сервис, который перекодирует загруженную картинку и возвращает результат. По данным разработчиков, исследователям удалось вызвать сбой процесса; выполнить код они смогли лишь с помощью другой, отдельной уязвимости, раскрывавшей адреса в памяти. Запись изображения в настоящий файл на диске не затронута. Для TIFF-ошибки GitHub также выставил 9,2 из 10, а аналитики CISA отметили наличие публичного подтверждения концепции атаки.
Оценка GitHub в 9,2 балла относится к уязвимостям EPS, TIFF и созданию JPEG-миниатюр. Она не отражает всех условий, необходимых для эксплуатации: например, зависимости от установленного Ghostscript или конкретного способа обработки файла. Поэтому оценки сопровождающих Pillow варьируются от умеренной до критической.
Как защитить сервис
Установите Pillow 13.0.0 или более новую версию и пересоберите контейнеры, пакеты wheels и базовые образы, в которых могла остаться старая библиотека:
В Pillow 13 прекращена поддержка Python 3.10, поэтому такие установки нужно перевести на Python 3.11 или новее. Пока обновление невозможно, на серверах, принимающих недоверенные файлы, следует отключить

Изображение носит иллюстративный характер
Pillow применяют в формах загрузки, сервисах для аватаров и миниатюр, обработке документов и PDF, а также в проектах машинного обучения. По оценке OX Security, чьё расследование привлекло внимание к уязвимостям, библиотеку скачивают около 436 миллионов раз в месяц. Выпуск Pillow 13.0.0 от 16 октября устраняет проблемы четырёх уровней серьёзности; две исправленные уязвимости сопровождающие относят к критическим. Известных случаев эксплуатации этих дефектов нет.
Открывая EPS, Pillow передаёт имя файла программе Ghostscript, которая преобразует изображение в пиксели. Библиотека предварительно не проверяет имя, а Ghostscript способен воспринять специально составленную строку как инструкцию и обратиться к другому файлу с командами. В предупреждении разработчиков сказано: «Уязвимость запускается именем файла, а не содержимым документа PostScript».
Реальный риск возникает, например, если сервер принимает загрузки и сохраняет исходное имя пользователя либо формирует имя файла из полученных от него данных. Дефект затрагивает версии Pillow от 2.6.0 до 12.3.0. Для атаки на узле должна быть установлена программа
gs: без Ghostscript Pillow не сможет открыть EPS. Разработчики присвоили проблеме умеренную степень серьёзности, поскольку атакующему нужно контролировать имя. Запись CVE, присвоенная GitHub, оценивает риск в 9,2 балла из 10; аналитики CISA не сообщают об эксплуатации. Релиз исправляет и другие проблемы. Среди них — отдельная ошибка работы с памятью: после смены режима изображения библиотека могла повторно использовать устаревшие данные. В декодировании JPEG также нашли два переполнения. Первое относится к формату FlashPix (FPX): специально подготовленный файл может привести к выполнению команды при одном вызове
Image.open(), если установлен необязательный пакет olefile. Pillow распознаёт такие файлы по содержимому, а не по расширению, поэтому обработка недоверенной загрузки способна запустить атаку без дополнительных действий пользователя. Вторая ошибка JPEG связана с созданием миниатюр для lossless JPEG и обозначена CVE-2026-112403. Подготовленное изображение может вызвать переполнение буфера и аварийное завершение программы; в предупреждении разработчиков речь идёт о сбое, а не о выполнении кода. Уязвимость «обнаружила Anthropic с помощью Claude при исследовании безопасности программного обеспечения с открытым исходным кодом; Ada Logics вручную подтвердила результат». Это часть более широкой работы Anthropic, в ходе которой нашли сотни дефектов в таких библиотеках.
Уязвимость TIFF, CVE-2026-112393, присутствует в Pillow с 2013 года. Переполнение возникает, когда сжатое TIFF-изображение сохраняют в памяти, а не в файл на диске. Так может работать сервис, который перекодирует загруженную картинку и возвращает результат. По данным разработчиков, исследователям удалось вызвать сбой процесса; выполнить код они смогли лишь с помощью другой, отдельной уязвимости, раскрывавшей адреса в памяти. Запись изображения в настоящий файл на диске не затронута. Для TIFF-ошибки GitHub также выставил 9,2 из 10, а аналитики CISA отметили наличие публичного подтверждения концепции атаки.
Оценка GitHub в 9,2 балла относится к уязвимостям EPS, TIFF и созданию JPEG-миниатюр. Она не отражает всех условий, необходимых для эксплуатации: например, зависимости от установленного Ghostscript или конкретного способа обработки файла. Поэтому оценки сопровождающих Pillow варьируются от умеренной до критической.
Как защитить сервис
Установите Pillow 13.0.0 или более новую версию и пересоберите контейнеры, пакеты wheels и базовые образы, в которых могла остаться старая библиотека:
pip install -U "Pillow>=13.0.0" В Pillow 13 прекращена поддержка Python 3.10, поэтому такие установки нужно перевести на Python 3.11 или новее. Пока обновление невозможно, на серверах, принимающих недоверенные файлы, следует отключить
gs и не передавать в Image.open() пользовательское имя EPS. Для JPEG не вызывайте draft() и thumbnail() на недоверенных файлах; альтернативы — сначала вызвать load() либо передать reducing_gap=None. Сохранение пользовательского TIFF во временный буфер, например io.BytesIO, следует считать чувствительной операцией.