Новости
pypdf 6.13.1: зацикливание при разборе PDF
Ещё одна PDF-библиотека получила патч от отказа в обслуживании: как крошечный документ мог загрузить процессор на 100%.
Pillow — самая массовая Python-библиотека для работы с картинками: через неё делают превью, меняют формат и размер загруженных изображений тысячи сайтов, ботов и онлайн-сервисов. 14 июля 2026 года вышло обновление 12.3.0, в котором разработчики одним махом закрыли целую пачку ошибок в коде, разбирающем PDF, шрифты и графические форматы. Часть из них позволяла «уронить» сервер одним крошечным, но специально сформированным файлом.

Коротко: 14 июля 2026 вышла Pillow 12.3.0 — крупный релиз безопасности. Одним обновлением закрыты 13 уязвимостей: «бомбы декомпрессии» в разборе PDF (CVE-2026-59200), шрифтов и GD-файлов, зависание на EPS, исчерпание памяти на JPEG2000 и записи за границы буфера в операциях с пикселями. Большинство ведут к отказу в обслуживании. Мера одна — обновить пакет до 12.3.0.
Pillow (форк библиотеки PIL) — это бесплатный набор инструментов с открытым кодом, который умеет открывать, конвертировать и обрабатывать десятки графических форматов на Python. Напрямую его почти никто не видит: чаще всего он работает на сервере как зависимость, через которую сайт или бот делает миниатюру загруженной фотографии, переводит её в другой формат или накладывает эффекты. 14 июля 2026 года команда проекта выпустила версию 12.3.0 и опубликовала пачку бюллетеней безопасности — в этом релизе исправлено сразу 13 уязвимостей.
Общий знаменатель почти у всех ошибок — некорректная работа с памятью при разборе входного файла. Где-то библиотека доверяет размерам, записанным внутри самого файла, и пытается выделить под изображение гигабайты оперативной памяти; где-то счётчик размера переполняется, и данные пишутся мимо отведённой области. Срабатывает такой код не в момент, когда картинку показывают человеку, а раньше — когда Pillow только парсит поток байтов. То есть достаточно, чтобы сервис просто принял вредоносный файл.
Большинство исправленных проблем относятся к классу «декомпрессионных бомб» и уводят в отказ в обслуживании (DoS): крошечный файл на входе разворачивается в гигабайты в памяти, и процесс аварийно завершается по нехватке RAM. Несколько ошибок опаснее — это записи за границы буфера в операциях над пикселями. Вот ключевые из тринадцати:
| Идентификатор | Где и что |
|---|---|
| CVE-2026-59200 | «Бомба декомпрессии» при разборе PDF (PdfStream.decode()): сжатый поток разворачивается в память без ограничения, вызывая исчерпание RAM. По оценке NVD — CVSS 7.5 («высокая») |
| CVE-2026-55380 | Чрезмерное выделение памяти при чтении GD-файла: 1037-байтный заголовок с завышенными размерами провоцирует попытку выделить около 4,3 ГБ |
| CVE-2026-54059 / 54060 / 55379 | «Бомбы декомпрессии» в разборе шрифтов (BDF/PCF и другие): размеры символов брались из файла в обход штатной защиты Pillow |
| CVE-2026-59203 / 59204 | Зацикливание при разборе EPS (отрицательные счётчики байтов) и исчерпание памяти на JPEG2000 |
| CVE-2026-59197 / 59199 / 59205 | Записи за границу буфера в операциях RankFilter, paste()/crop() и ImageCmsTransform при слишком больших параметрах |
| CVE-2026-55798 | Внедрение команды в ImageShow.WindowsViewer: контроль над путём мог привести к запуску произвольной команды оболочки |
Обратите внимание на охват: под ударом оказались и «тяжёлые» контейнеры вроде PDF и JPEG2000, и служебные форматы (шрифты BDF, устаревший GD), и универсальные операции обработки — фильтры, вставка и преобразование цветовых профилей. Значит, проблема не в редком расширении файла, а в самих алгоритмах разбора и обработки, через которые проходит любая загруженная картинка. Больше всего рискуют сервисы, которые автоматически принимают файлы от анонимных пользователей.
Pillow обычно стоит «невидимо» — на стороне сайта, чат-бота, CMS или онлайн-конвертера, куда вы загружаете фото или документ. Если такой сервис можно вывести из строя одним битым файлом, страдает не только он: под угрозой и другие пользователи, чьи данные обрабатывает тот же сервер. Обновление библиотеки закрывает эту точку входа.
Надёжная мера одна — обновиться до исправленной версии. Порядок зависит от того, как именно вы соприкасаетесь с Pillow:
pip install --upgrade pillow) и переразверните сервис.Случай с Pillow — очередное напоминание: сама по себе обработка «сложного» файла может быть опасной, даже если его всего лишь конвертируют или уменьшают, а не открывают вручную. Это уже не первая подобная история за месяц — незадолго до этого отказ в обслуживании чинили в библиотеке pypdf при разборе PDF и в движке ImageMagick. Закономерность одна: чем богаче формат и чем больше кода в его разборщике, тем выше шанс наткнуться на ошибку при обработке намеренно «битых» данных.
Практический вывод простой: держите в актуальном состоянии инструменты, через которые проходят чужие файлы, и не считайте картинку или документ заведомо безобидными. Если хотите глубже разобраться в упомянутых форматах, помогут наши разборы — чем открыть PDF и чем открыть WebP, — а выбрать безопасный способ поменять формат помогут онлайн-конвертеры файлов.