Brotli2Shell: Часто задаваемые вопросы об уязвимости в декодере Google Brotli (CVE-2026-111497)

Источник: Tenable®•

Brotli2Shell: Часто задаваемые вопросы об уязвимости в декодере Google Brotli (CVE-2026-111497)

Исследователи продемонстрировали удаленное выполнение кода через CVE-2026-111497 — ошибку записи за пределами буфера в библиотеке декодера Brotli от Google, при этом доступны публичные концепты атак (PoC). Программное обеспечение, использующее декодер, включает Node.js, .NET, Bun, Envoy Proxy,…

26 октября 2026 г. Время чтения: 8 минут

Исследователи продемонстрировали удаленное выполнение кода через CVE-2026-111497 — ошибку записи за пределами буфера в библиотеке декодера Brotli от Google, при этом доступны публичные концепты атак (PoC). Программное обеспечение, использующее декодер, включает Node.js, .NET, Bun, Envoy Proxy, Istio, HTTP-клиенты Python и PHP для Windows.

Основные выводы

  • CVE-2026-111497, известная как Brotli2Shell и под несколькими другими именами, представляет собой ошибку записи за пределами буфера в библиотеке декодера Google Brotli C, которой Google как Нумерационное агентство CVE (CNA) присвоил оценку 9.2 по шкале CVSSv4.0.
  • Любое приложение, которое распаковывает контролируемые злоумышленником данные с помощью уязвимого декодера Brotli, потенциально подвержено риску, включая Node.js, .NET, Bun, Envoy Proxy, Istio, HTTP-клиенты Python, FFmpeg, Apache Arrow и ClickHouse.
  • Для Google Brotli и основных сред выполнения доступны исправления, хотя по состоянию на 26 октября некоторые проекты еще не выпустили исправленные версии, а приложения, поставляющие собственную копию Brotli, требуют отдельного исправления для каждого из них.

Справочная информация

Команда специальных операций по исследованиям (RSO) компании Tenable подготовила этот блог, чтобы ответить на часто задаваемые вопросы (FAQ) о Brotli2Shell — уязвимости в библиотеке декодера Google Brotli C, которую встраивают Node.js, .NET и другое ПО.

FAQ

Что такое Brotli2Shell?

Brotli2Shell — это одно из нескольких названий CVE-2026-111497, изъяна повреждения памяти в библиотеке сжатия с открытым исходным кодом Brotli от Google. Некоторые исследователи называют ее Node2Shell в честь Node.js, которая раскрыла этот изъян в своем бюллетене безопасности от 21 октября. Другие используют HTTP2Shell, поскольку та же ошибка затрагивает HTTP-ПО за пределами Node.js. Она также циркулировала как Broccoli2Shell. Мы используем термин Brotli2Shell, так как ошибка кроется в самом декодере Brotli, а не в каком-либо отдельном нижестоящем продукте.

Какая уязвимость связана с Brotli2Shell?

CVE-2026-111497 — это уязвимость записи за пределами буфера в библиотеке декодера Google Brotli C.

Злоумышленник может вызвать этот сбой, заставив приложение распаковать специально сформированные данные Brotli. Два распространенных пути — это сжатый HTTP-ответ, отправленный клиенту, который распаковывает его автоматически, и сжатое тело запроса, отправленное серверу, который распаковывает входящий контент. Последствия варьируются от сбоя процесса до потенциального удаленного выполнения кода, а ошибка также может приводить к утечке памяти процесса.

Примечание об оценке степени серьезности: Google как CNA оценил этот изъян в 9.2 балла (CVSSv4.0) с вектором CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N. Microsoft оценивает ее в 8.1 балла (CVSSv3.1) для .NET.

Когда была впервые раскрыта CVE-2026-111497?

Компания Google зафиксировала исправление в базовом репозитории Brotli 27 февраля. Node.js публично раскрыла уязвимость 21 октября в своем бюллетене безопасности, в тот же день, когда Google выпустила исправленные версии Brotli. Envoy Proxy и Istio уже выпустили исправленные версии ранее в октябре, не упоминая название уязвимости. NVD опубликовала запись CVE 22 октября. Brotli 1.2.1 и brotlicffi 1.2.1.0 появились в Индексе пакетов Python (PyPI) 22 октября. 25 октября Microsoft выпустила .NET security updates.

Какое программное обеспечение подвержено уязвимости CVE-2026-111497?

Риск актуален везде, где приложение распаковывает данные Brotli, которые может контролировать злоумышленник, независимо от того, поступают ли эти данные по протоколу HTTP в любом направлении или находятся внутри файла.

Выпуски Node.js, поддержка которых завершена, включая версии 20, 23 и 25, не получат исправленных релизов. Akamai заявила, что ее телеметрия «показывает, что 61% сетей используют уязвимые версии Node.js».

JFrog Security Research показала, что уязвимость также затрагивает FFmpeg через библиотеку libjxl посредством метаданных со сжатием Brotli в файлах JPEG XL. Специалисты JFrog получили контроль над указателем команд в FFmpeg с помощью специально сформированного файла JPEG XL, но не продемонстрировали выполнение кода. В результате того же исследования был вызван отказ в обслуживании (бесконечный цикл) в Apache Arrow, использующем Brotli для сжатых данных Parquet, с помощью специально сформированного входного файла размером 534 байта, а также произошел сбой протестированного сервера ClickHouse из-за одного некорректного HTTP-запроса со сжатием Brotli. HTTP-клиенты Python, такие как urllib3, requests, httpx и aiohttp, также входят в область воздействия при установленном пакете Brotli или brotlicffi.

Устраняет ли проблему обновление системной библиотеки Brotli?

Это зависит от того, откуда программное обеспечение получает свой декодер. Программы, загружающие копию Brotli операционной системы, получают исправление после перезапуска. Node.js, Bun и другие приложения, поставляемые со встроенной копией, сохраняют уязвимый декодер до тех пор, пока не будет установлена исправленная версия этого приложения.

Каждая ли установка .NET, Envoy Proxy или Istio уязвима?

Нет. Эти платформы уязвимы только тогда, когда используется декомпрессия Brotli.

.NET: Microsoft заявляет, что приложение «не подвержено уязвимости просто потому, что установлен уязвимый пакет .NET», а распаковка запросов ASP.NET Core и автоматическая распаковка ответов HttpClient по умолчанию отключены. Приложения попадают в зону риска, если они используют распаковку запросов ASP.NET Core, распаковку ответов HttpClient или API-интерфейсы Brotli в System.IO.Compression, такие как BrotliStream и BrotliDecoder. Приложения NativeAOT и автономные (self-contained) приложения получают исправление только после пересборки и повторного развертывания. Microsoft заявляет, что .NET Framework не уязвима.

Envoy Proxy и Istio: Envoy Proxy подвержен уязвимости только тогда, когда настроен его декомпрессор Brotli, а пользователи Istio потенциально затронуты при включении декомпрессии Brotli, например через EnvoyFilter. Поддержка Istio 1.29 завершилась 15 октября. Версия 1.29.9 включает исправление.

Затронут ли PHP уязвимостью CVE-2026-111497?

Официальные сборки PHP для Windows затронуты, поскольку они включают собственную копию Brotli. 26 октября PHP выпустила обновленные сборки для Windows, в которые встроена библиотека Brotli 1.2.1. В этих сборках PHP указывает расширение cURL как путь к уязвимости при условии включения автоматической распаковки HTTP-ответов. cURL держит эту настройку отключенной до тех пор, пока ее не включит приложение или библиотека HTTP-клиента. На других платформах PHP все еще может обращаться к уязвимому декодеру через системную библиотеку Brotli или через расширение PHP brotli, которое поставляется с собственной копией и устранило этот изъян в версии 0.21.1. Исходные коды релизов PHP остались без изменений, и эта уязвимость никак не связана с уязвимостями PHP2Shell, рассмотренными в нашем FAQ.

Используется ли CVE-2026-111497 в реальных атаках?

26 октября компания по анализу угроз ELLIO сообщила, что ее датчики зафиксировали попытку эксплуатации уязвимости CVE-2026-111497. В ELLIO заявили, что атака была направлена на Node.js 24.22.0 на архитектуре x86-64 и сочетала в себе код, скопированный из публичных PoC, с оригинальной цепочкой эксплойтов. Компания Tenable независимо не подтвердила эту активность. По состоянию на 26 октября уязвимость не входит в каталог известных эксплуатируемых уязвимостей (KEV) CISA.

Классифицировала ли Tenable Research эту уязвимость как часть Vulnerability Watch?

Да. Уязвимость CVE-2026-111497 была классифицирована как «Уязвимость, представляющая интерес» (Vulnerability of Interest) в рамках программы Vulnerability Watch.

Существует ли концепт атаки (PoC) для CVE-2026-111497?

Да. Общедоступные PoC для CVE-2026-111497 доступны на GitHub. Команда Imperva Red Team продемонстрировала выполнение кода на официальном образе Node.js 24.22.0 Linux arm64 после нескольких попыток и не стала публиковать этот эксплойт. По меньшей мере один публичный PoC на GitHub заявляет о выполнении кода для Node.js 24.22.0 в узких лабораторных условиях. Компания ELLIO заявила, что воспроизвела выполнение кода на официальной сборке Node.js 24.22.0 для архитектуры x86-64.

Доступны ли патчи или средства защиты для CVE-2026-111497?

Исправленные версии для Google Brotli, Node.js, Bun, Envoy Proxy, Istio, .NET, пакетов Python Brotli и PHP для Windows перечислены в таблице выше. По состоянию на 26 октября ClickHouse объединил исправление без выпуска релиза, а проблема в Apache Arrow оставалась открытой.

Исправление не затрагивает уже запущенный код. Исправленный декодер начинает действовать в процессе или запланированном задании только после перезапуска, а в контейнере — только после пересборки и повторного развертывания его образа.

Там, где исправление задерживается, руководство по смягчению последствий Patch the Planet и трекер содержат временные шаги, снижающие степень риска:

  • Блокировка запросов с заголовком Content-Encoding: br на прокси-сервере или балансировщике нагрузки, чтобы они останавливались до того, как их кто-либо распакует. Этот шаг бесполезен для приложений, которые получают ответы в формате Brotli от контролируемых злоумышленником серверов, а отключение сжатия Brotli на исходном сервере или CDN никак не влияет на распаковку.
  • Отключение декодирования Brotli в HTTP-клиентах. Исключение br из заголовка Accept-Encoding само по себе не помогает, так как вредоносный сервер все равно может ответить данными, сжатыми алгоритмом Brotli.
  • Отключение фильтра декомпрессии Brotli в Envoy Proxy и Istio в обоих направлениях. Отключенный фильтр пересылает сжатые байты по мере их поступления, что подвергает риску любую нижестоящую службу, выполняющую декодирование Brotli.
  • Удаление пакета Brotli или brotlicffi из сред Python до установки исправленной версии.

Существуют ли индикаторы компрометации для CVE-2026-111497?

ELLIO опубликовала исходный IP-адрес и хэш полезной нагрузки для зафиксированной ей попытки эксплуатации. Они доступны в блоге ELLIO.

Выпустила ли Tenable покрытие продуктов для CVE-2026-111497?

Список плагинов Tenable для этой уязвимости можно найти на отдельной странице CVE для CVE-2026-111497 по мере их выпуска. По этой ссылке будут отображаться все доступные плагины для данной уязвимости, включая готовящиеся к выпуску плагины в нашем конвейере плагинов.

Получить дополнительную информацию

Присоединяйтесь к команде исследователей специальных операций (RSO) Tenable на Tenable Connect для дальнейшего обсуждения новейших киберугроз.

Узнайте больше о Tenable One, платформе управления рисками для современной поверхности атаки.

О чём эта статья

Ещё в разделе «Кибербезопасность»

Все →

Ещё от Tenable