PHP обновил Windows-пакеты после уязвимости в Brotli

PHP выпустил новые сборки для Windows с исправлением CVE-2026-111497 в библиотеке сжатия Brotli, входящей в состав пакетов. Ошибка может привести к повреждению памяти и потенциально к выполнению кода. Обновлённые сборки включают исправленную Brotli 1.2.1 и сохраняют изменения из предыдущих выпусков.
PHP обновил Windows-пакеты после уязвимости в Brotli
Изображение носит иллюстративный характер

Уязвимость может быть доступна через расширение cURL, если оно автоматически распаковывает HTTP-ответы. По умолчанию такая распаковка отключена, но её могут включать приложения и HTTP-библиотеки. В PHP за это отвечает параметр CURLOPT_ENCODING: пустое значение разрешает все форматы, поддерживаемые cURL. В таком сценарии атакующий может отправить специально сформированный сжатый ответ от сервера, к которому обращается приложение.
Новые сборки вышли через пять дней после релизов 21 октября, устранивших две уязвимости PHP2Shell с удалённым выполнением кода. Версии PHP не менялись, поэтому прежние исправления остались на месте:
    []PHP 8.5 — 8.5.12-1
    []PHP 8.4 — 8.4.27-1
    []PHP 8.3 — 8.3.36-1
    []PHP 8.2 — 8.2.35-1
Ведомость компонентов SBOM для прошлой недели показывала, что сборки x64 Non Thread Safe всех четырёх веток содержали Brotli 1.2.0 — уязвимую версию. Теперь PHP рекомендует скачать обновлённые пакеты со страницы загрузок. Номер версии, который выводит команда php -v, не изменится: новая сборка различается суффиксом -1 в имени файла, например php-8.5.12-1-nts-Win32-vs17-x64.zip. Проверить пакет можно и по его SHA-256-хешу на сайте PHP.
Отдельный повод проверить настройки есть у пользователей Guzzle, PHP-библиотеки для HTTP-запросов. В коде Guzzle 7.16.1 и 8.3.1 для запросов через cURL по умолчанию задаётся пустое значение encoding. По описанию PHP, это создаёт условие для обращения к уязвимости на прошлых Windows-сборках. The Hacker News не проверял этот сценарий на системе Windows.
Оценки серьёзности различаются в зависимости от шкалы: Google выставила 9,2 из 10, уровень Critical по CVSS 4.0; Red Hat присвоила 8,1 и уровень Important по CVSS 3.1. Исследователи Imperva запускали код через эту уязвимость в одной официальной сборке Node.js, но для этого потребовалось несколько попыток. Уведомление PHP об атаках не сообщает. По оценке CISA от 23 октября, случаев эксплуатации не было; на тот момент CVE-2026-111497 отсутствовала в каталоге Known Exploited Vulnerabilities (KEV).
Уязвимость обнаружили исследователи OpenAI. Google исправила её в Brotli 1.2.1, 1.1.1 и 1.0.10 при раскрытии информации 21 октября. Обновления также выпустили Node.js, Bun и другие программы, которые поставляются со своей копией Brotli.
Если обновить PHP пока нельзя, в уведомлении проекта готового обходного решения нет. OpenAI советует временно отключить автоматическую распаковку Brotli в HTTP-клиентах. В Guzzle для этого можно установить параметр запроса decode_content в false: клиент перестанет автоматически распаковывать содержимое. Это касается и gzip — такие ответы тоже будут приходить сжатыми. Простого удаления br из заголовка Accept-Encoding недостаточно: сервер всё равно может отправить ответ, сжатый Brotli.


Новое на сайте

Ссылка