Ошибка в C-декодере Brotli версий 1.0.3–1.2.0 позволяет специально сжатым данным переписать память за границей буфера. Google оценивает её в CVSS 4.0 9.2, Red Hat — в CVSS 3.1 8.1. Атаковать можно с двух сторон: запросом со сжатым телом к серверу и вредоносным ответом сервера к клиенту.
Кто затронут
- Node.js и Bun — Brotli встроен в рантайм.
- Python: HTTP-клиенты с декодером Brotli — urllib3[brotli], requests, httpx, aiohttp[speedups].
- .NET — при включённой распаковке Brotli (по умолчанию выключена): декомпрессия запросов в ASP.NET Core, автораспаковка в HttpClient.
- PHP для Windows — через расширение cURL с автораспаковкой (Guzzle включает её по умолчанию).
Исправленные версии
Brotli 1.0.10, 1.1.1, 1.2.1; Node.js 22.23.4, 24.22.1, 26.12.1; Python Brotli 1.2.1 и brotlicffi 1.2.1.0; .NET 8.0.33, 9.0.22, 10.0.14 (внеплановый выпуск); PHP для Windows — пересобранные 26 октября пакеты 8.2–8.5.
Атак в дикой природе пока не зафиксировано, но рабочий PoC уже публичен.
Что делать
Обновить рантаймы и зависимости, перезапустить процессы, пересобрать образы. Если быстро обновиться нельзя — блокировать запросы с Content-Encoding: br на прокси или отключить декодирование Brotli. Учтите: блокировка запросов не закрывает вектор через вредоносные ответы.
A bug in Brotli’s C decoder, versions 1.0.3–1.2.0, lets crafted compressed data write past a buffer’s end. Google rates it CVSS 4.0 9.2, Red Hat CVSS 3.1 8.1. It can be hit from both directions: a compressed request body sent to a server, or a malicious server response sent to a client.
Who is affected
- Node.js and Bun — Brotli is built into the runtime.
- Python: HTTP clients with a Brotli decoder — urllib3[brotli], requests, httpx, aiohttp[speedups].
- .NET — when Brotli decompression is enabled (off by default): ASP.NET Core request decompression, HttpClient auto-decompression.
- PHP for Windows — via the cURL extension with auto-decompression (Guzzle enables it by default).
Fixed versions
Brotli 1.0.10, 1.1.1, 1.2.1; Node.js 22.23.4, 24.22.1, 26.12.1; Python Brotli 1.2.1 and brotlicffi 1.2.1.0; .NET 8.0.33, 9.0.22, 10.0.14 (out-of-band); PHP for Windows — 8.2–8.5 packages rebuilt on Oct 26.
No in-the-wild attacks have been reported yet, but a working PoC is public.
What to do
Update runtimes and dependencies, restart processes, rebuild images. If you cannot patch quickly, block requests with Content-Encoding: br at the proxy or disable Brotli decoding. Note that blocking requests does not close the malicious-response path.