← Все новости

HTTP2Shell: уязвимость в декодере Brotli вызвала экстренные патчи Node.js, .NET, Python и PHPHTTP2Shell: Brotli decoder flaw triggers emergency patches for Node.js, .NET, Python and PHP

CVE-2026-111497 — запись за границей буфера в C-декодере Brotli, библиотеке сжатия, встроенной в огромное количество рантаймов. Публичные PoC есть, Imperva показала RCE на официальной сборке Node.js. Обновлять нужно сами рантаймы, системный libbrotli не спасает.CVE-2026-111497 is an out-of-bounds write in Brotli's C decoder, a compression library bundled into a huge number of runtimes. Public PoCs exist and Imperva demonstrated RCE on an official Node.js build. Runtimes themselves must be updated — patching the system libbrotli is not enough.

Ошибка в 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.

Источники