Уязвимость Brotli затрагивает Python-пакеты: какие версии содержат исправление

Уязвимость Brotli затрагивает Python-пакеты: какие версии содержат исправление
Содержание статьи

В предупреждении GitHub Advisory Database, обновлённом 23 октября, указаны Python-пакеты, затронутые уязвимостью декодировщика Brotli CVE-2026-111497. Исправленные версии доступны в PyPI с 22 октября. На Mentoring.digital объясняем, что проверить в зависимостях Python-приложения.

Какие пакеты нужно проверить

Ошибка находится в обработке сжатого потока данных. Специально подготовленные данные могут вызвать повреждение памяти, раскрытие её содержимого, отказ в обслуживании или потенциальное выполнение произвольного кода. Возможность конкретного последствия зависит от того, как уязвимый декодировщик используется в приложении.

Для экосистемы pip карточка предупреждения указывает следующие диапазоны:

  • brotli: версии от 1.0.3 включительно до 1.2.1 не включительно; первая исправленная версия в карточке пакета 1.2.1.
  • brotlicffi: версии от 1.0.3 включительно до 1.2.1.0 не включительно; первая исправленная версия 1.2.1.0.

Проверять нужно фактически установленный пакет в рабочем окружении. Обновление системной библиотеки или другого приложения само по себе не доказывает, что зависимость внутри виртуального окружения Python тоже обновилась.

Почему недостаточно искать import brotli

Поддержка сжатия может использоваться через другую библиотеку. Например, документация urllib3 указывает, что обработка Brotli доступна при установленном Brotli либо brotlicffi; пакет также можно добавить как дополнительную зависимость urllib3[brotli].

Поэтому отсутствие прямого импорта в собственном коде не исключает наличие декодировщика в приложении. Проверьте состав окружения и путь обработки HTTP-ответов со сжатием, а не только строки исходного кода.

Как проверить результат обновления

  1. Определите, какой из двух пакетов установлен и какая версия реально используется процессом приложения.
  2. Обновите зависимость до исправленной совместимой версии и согласуйте изменение с файлом фиксации зависимостей проекта.
  3. Если приложение поставляется в контейнере, соберите и разверните образ с обновлённым пакетом. Изменения на машине разработчика не обновляют уже работающий контейнер.
  4. Проверьте версию в развёрнутом окружении и обычные сценарии получения сжатых ответов.

Разобраться в виртуальных окружениях, дополнительных зависимостях и воспроизводимой установке можно с ментором по Python. Для исправления этой проблемы важно проследить путь пакета от списка зависимостей до запущенного приложения.

Похожие статьи по данной теме