Pillow: несоответствие размера плоскости ColorMap в TIFF-энкодере приводит к чтению за границей буфера (CVE-2026-112896)
В библиотеке Pillow до версии 13.0.0 обнаружена уязвимость высокого риска (CVSS 8.8), связанная с чтением за границей кучи при кодировании TIFF. Атака возможна при повторном сохранении специально сформированного TIFF-файла через libtiff и может привести к утечке содержимого памяти или падению процесса. Проблема затрагивает приложения на Python, выполняющие перекодирование пользовательских изображений.
Подробности
Уязвимость затрагивает Pillow (пакет python-pillow) во всех версиях до 13.0.0. Причина — некорректная обработка TIFF-энкодером метаданных ColorMap: если сохранённые метаданные TIFF содержат размер плоскости, не соответствующий значению BitsPerSample, энкодер может выйти за пределы буфера ColorMap при чтении. Сценарий эксплуатации выглядит следующим образом: небольшой TIFF-файл открывается штатно, но сохраняет в себе специально сформированный ColorMap, который повторно используется при сохранении изображения. Если приложение перекодирует такой файл с использованием libtiff, срабатывает чтение за границей кучи (heap out-of-bounds read). Последствия — раскрытие содержимого кучи в выходном файле либо аварийное завершение процесса. Уязвимость относится к классу CWE-125 (чтение за границей буфера) и представляет особую опасность для сервисов, принимающих изображения от недоверенных пользователей и выполняющих их повторное сохранение или конвертацию.Что делать
Основная рекомендация — обновить Pillow до версии 13.0.0 или более поздней, в которой проблема устранена. Обновление следует выполнить во всех окружениях, где библиотека используется для обработки TIFF-файлов, особенно в веб-приложениях и сервисах пакетной обработки изображений. Если немедленное обновление невозможно, в качестве временных мер рекомендуется:- ограничить приём TIFF-файлов из недоверенных источников либо полностью отключить поддержку TIFF там, где она не требуется;
- выполнять обработку изображений в изолированном окружении (контейнер, sandbox) с минимальными привилегиями;
- контролировать стабильность процессов обработки изображений и логировать аварийные завершения;
- проверить зависимости проекта — Pillow часто используется транзитивно через фреймворки и библиотеки.
Итог
CVE-2026-112896 — серьёзная уязвимость чтения за границей буфера в TIFF-энкодере Pillow, способная привести к утечке памяти процесса или отказу в обслуживании. Учитывая высокую оценку CVSS и простоту триггера (достаточно открыть и повторно сохранить подготовленный TIFF), обновление до Pillow 13.0.0 следует рассматривать как приоритетное для всех затронутых систем.Источник: CVE Project (cvelistV5)
