Переполнение буфера в декодере Brotli затрагивает Windows-сборки PHP

php

В декодере библиотеки Brotli есть переполнение буфера, то есть запись за границы выделенного участка памяти. Подготовленный сжатый поток позволяет повредить структуры рядом с буфером, раскрыть содержимое памяти, вызвать отказ в обслуживании или выполнить произвольный код. Затронуты Windows-сборки PHP с этой библиотекой и сама Brotli на всех платформах.

CVE-2026-111497 в декодере Brotli и пересборка пакетов PHP

Команда PHP подтверждает, что уязвимый декодер в её Windows-сборках достижим. Путь к нему лежит через расширение cURL, которое выполняет сетевые запросы из PHP. Для срабатывания нужно, чтобы приложение распаковывало ответы сервера автоматически. Brotli - алгоритм сжатия, которым серверы уменьшают объём ответов, а клиент разворачивает их на лету.

В cURL автоматическая распаковка по умолчанию выключена, однако приложения и HTTP-клиентские библиотеки могут её включить. Тогда декодер разбирает данные из внешнего источника, а подготовить их заранее несложно. На таком потоке он выходит за границы буфера и портит соседнее состояние. В записи CVE отмечены запись за границами буфера и непроверка возвращаемого значения функции.

Атака идёт по сети, учётные данные не нужны. Об участии пользователя запись CVE не сообщает. Оценки CVSS в ней нет и уровень серьёзности не назван, поэтому судить приходится по последствиям: повреждение памяти, утечка данных, отказ в обслуживании и возможное выполнение кода.

Библиотека Brotli от Google уязвима на всех платформах, не только в сборках PHP. По записи CVE, затронуты версии с 1.0.3 до 1.0.10, с 1.1.0 до 1.1.1 и с 1.2.0 до 1.2.1; верхние границы диапазонов - уже исправленные выпуски. Обновиться предлагается до 1.0.10, 1.1.1 или 1.2.1. Отдельного поля с исправленной версией в записи нет, так что номера взяты из её описания.

Пересборка Windows-пакетов PHP

PHP 8.5.12-1, 8.4.27-1, 8.3.36-1 и 8.2.35-1 - пересобранные пакеты для Windows. Суффикс -1 означает пересборку с обновлёнными зависимостями, здесь внутри Brotli 1.2.1. Исходный код релизов PHP не менялся, версии среды выполнения остались прежними, поэтому поведение приложений после замены пакета не изменится. Забрать сборки можно со страницы загрузок на сайте проекта.

Номер версии PHP при этом не меняется: среда выполнения остаётся 8.5.12, 8.4.27, 8.3.36 или 8.2.35, а суффикс -1 отделяет пакет от исходного релиза. В отчётах об инвентаризации такую сборку лучше помечать отдельно, иначе замену легко не заметить. Сборки для других платформ в уведомлении не упоминаются, речь идёт только о Windows.

Сведений об эксплуатации в реальных атаках нет ни в уведомлении PHP, ни в записи CVE. Публичное раскрытие деталей датировано 27 февраля 2026 года. Сама запись опубликована 22 октября 2026 года, обновлена 27 октября и имеет статус опубликованной; идентификатор назначила Google. Раскрытие подробностей означает доступность описания, а не применение уязвимости на практике.

Обходных мер запись CVE не приводит. Приложения, которые не включают автоматическую распаковку в cURL, до уязвимого декодера не доходят, так что настройка по умолчанию снижает риск. Администраторам нужно заменить Windows-сборки PHP на версии с суффиксом -1 и проверить, не включена ли распаковка в используемых HTTP-клиентах. Если Brotli собирается отдельно от PHP, нужна версия 1.0.10, 1.1.1 или 1.2.1.

Уязвимость позволяет удалённо и без аутентификации испортить память декодера, поэтому пересборку лучше не откладывать.

Ссылки

Комментарии: 0