← Все новости

Pillow 13.0.0 закрывает критические уязвимости, включая выполнение команд через EPSPillow 13.0.0 fixes critical flaws, including command execution via EPS

В популярнейшей Python-библиотеке для изображений исправлены несколько уязвимостей с оценкой CVSS 9.2 — от инъекции команд через Ghostscript до переполнений буфера в JPEG и TIFF. Часть багов нашли с помощью Claude. Pillow скачивают около 436 млн раз в месяц.The most popular Python imaging library fixed several flaws rated CVSS 9.2 — from command injection via Ghostscript to buffer overflows in JPEG and TIFF handling. Some were found with Claude. Pillow is downloaded about 436 million times a month.

Подробности уязвимостей, закрытых в Pillow 13.0.0 (релиз от 16 октября), стали публичными — и они серьёзнее, чем обычный патч-релиз. Эксплуатации в дикой природе пока не зафиксировано.

Главные уязвимости

  • CVE-2026-112900 (EPS / Ghostscript). Pillow передаёт имя EPS-файла в Ghostscript без проверки — подобранное имя ведёт к выполнению команд. Затронуты версии 2.6.0–12.3.0, нужен установленный gs. Мейнтейнеры считают риск умеренным (атакующий должен контролировать имя файла), но запись CVE от GitHub даёт 9.2.
  • Переполнение в JPEG формата FPX. По данным издания, один вызов Image.open() на подготовленном файле выполнял команду атакующего, если установлен опциональный пакет olefile.
  • CVE-2026-112403 — переполнение буфера при создании миниатюры lossless JPEG. Найдена Anthropic с помощью Claude, подтверждена Ada Logics. CVSS 9.2.
  • CVE-2026-112393 — переполнение при сохранении сжатого TIFF в память (io.BytesIO). Баг живёт с 2013 года, есть публичный PoC. CVSS 9.2.

Что делать

  • pip install -U "Pillow>=13.0.0" и пересобрать контейнеры, wheel’ы и базовые образы со старыми копиями. Pillow 13 не поддерживает Python 3.10 — понадобится 3.11+.
  • Если обновиться нельзя: убрать gs с хостов, обрабатывающих загрузки пользователей; не вызывать draft()/thumbnail() на недоверенных JPEG (или сначала load(), или reducing_gap=None); осторожно с сохранением пользовательских картинок в BytesIO.

Pillow — транзитивная зависимость огромного числа веб-приложений и ML-пайплайнов, так что стоит проверить не только прямые зависимости.

Details of the flaws fixed in Pillow 13.0.0 (released Oct 16) are now public — and they are more serious than a routine patch release. No in-the-wild exploitation has been reported.

Key flaws

  • CVE-2026-112900 (EPS / Ghostscript). Pillow passes the EPS filename to Ghostscript unchecked — a chosen name leads to command execution. Versions 2.6.0–12.3.0 are affected and gs must be installed. Maintainers rate it moderate (the attacker must control the filename), but GitHub’s CVE record scores it 9.2.
  • FPX-format JPEG overflow. According to the report, a single Image.open() call on a crafted file ran an attacker’s command when the optional olefile package was installed.
  • CVE-2026-112403 — buffer overflow when thumbnailing a lossless JPEG. Found by Anthropic using Claude and validated by Ada Logics. CVSS 9.2.
  • CVE-2026-112393 — overflow when saving a compressed TIFF to memory (io.BytesIO). The bug dates back to 2013 and a public PoC exists. CVSS 9.2.

What to do

  • pip install -U "Pillow>=13.0.0" and rebuild containers, wheels and base images that bundle older copies. Pillow 13 drops Python 3.10 — you need 3.11+.
  • If you cannot upgrade yet: remove gs from hosts that process user uploads; avoid draft()/thumbnail() on untrusted JPEGs (or call load() first, or pass reducing_gap=None); treat saving user images to BytesIO as a sensitive path.

Pillow is a transitive dependency of countless web apps and ML pipelines, so check beyond your direct dependencies.

Источники