Подробности уязвимостей, закрытых в 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
gsmust 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
gsfrom hosts that process user uploads; avoiddraft()/thumbnail()on untrusted JPEGs (or callload()first, or passreducing_gap=None); treat saving user images toBytesIOas a sensitive path.
Pillow is a transitive dependency of countless web apps and ML pipelines, so check beyond your direct dependencies.