Broccoli2Shell: критическая уязвимость Brotli угрожает Node.js и Envoy Proxy
Критическая уязвимость Broccoli2Shell затрагивает Node.js и Envoy Proxy
Исследователи обнаружили критическую уязвимость CVE-2026-111497 в библиотеке Brotli. Уязвимость получила название Broccoli2Shell. Она затрагивает популярные технологии, включая Node.js, Bun, Envoy Proxy и другие. Успешная эксплуатация позволяет удаленному злоумышленнику вызвать повреждение памяти, раскрыть конфиденциальную информацию, привести к сбою процессов или выполнить произвольный код. Организациям, использующим затронутые компоненты для распаковки недоверенных данных Brotli, следует срочно устранить уязвимость.
CVE-2026-111497 обнаружили и сообщили о ней Хай Тран и Сильви Майер из OpenAI Codex Security. Исправления реализовали Маттео Коллина и Антуан дю Амель из Node.js. Рон Масас из Imperva Red Team продемонстрировал возможность эксплуатации. Aikido проанализировал влияние на экосистему Python.
Brotli-декомпрессор записывает данные за пределами выделенной области памяти
Broccoli2Shell, также известная как Node2Shell и HTTP2Shell, является уязвимостью записи за пределами выделенной области памяти (out-of-bounds write) в декодере Brotli. Этот компонент широко используется для сжатия HTTP-трафика и других данных. Проблема возникает, когда декодер некорректно обрабатывает специально созданные сжатые данные во время операций обработки блоков. Это может привести к записи за границы выделенной памяти. Злоумышленник может использовать это, передав вредоносный вход, сжатый с помощью Brotli, уязвимому приложению. Это потенциально приведет к раскрытию данных из памяти, сбоям приложения или выполнению произвольного кода с привилегиями затронутого процесса. Исследователи успешно продемонстрировали эксплуатацию против необновленных сред Node.js.
Уязвимость происходит в исходном C-декодере Brotli и затрагивает множество последующих технологий, использующих этот компонент. Эксплуатация требует, чтобы приложение или зависимость распаковывали данные Brotli, контролируемые злоумышленником. Это может происходить через входящие HTTP-запросы, полученные ответы или другой недоверенный сжатый контент. Некоторые HTTP-клиенты и фреймворки могут автоматически выполнять распаковку при включенной поддержке Brotli. Это подвергает приложения риску, даже если Brotli явно не указан в коде приложения.
Облачные среды подвержены риску из-за повсеместного использования Brotli
Облачные среды особенно уязвимы из-за широкого распространения компонентов с поддержкой Brotli. Они используются в контейнеризированных приложениях, Kubernetes, API-шлюзах, обратных прокси, бессерверных вычислениях и облачных веб-сервисах. Интернет-ориентированные приложения, обрабатывающие запросы от злоумышленников, а также внутренние службы, получающие сжатые ответы из недоверенных внешних источников, могут стать путями эксплуатации. Успешная эксплуатация позволит злоумышленникам скомпрометировать рабочие нагрузки приложений, получить доступ к конфиденциальной информации, нарушить доступность услуг или выполнить вредоносный код в затронутых средах.
По данным Wiz, 91% облачных сред имеют ресурсы, уязвимые к CVE-2026-111497. 82% облачных сред имеют публично доступные экземпляры Node.js.
Обновите Brotli, Node.js, Bun, Envoy Proxy и Istio
Дополнительные продукты, использующие уязвимые версии C-декодера Brotli, также могут быть затронуты. Организациям следует обращаться к рекомендациям поставщиков, особенно в отношении статически связанных библиотек и встроенных зависимостей. Необходимо мигрировать ветки времени выполнения, поддержка которых прекращена, на поддерживаемые версии.
Примените обновления безопасности: обновите затронутые библиотеки Brotli, среды выполнения Node.js, пакеты Python, Bun, Envoy Proxy и развертывания Istio до соответствующих исправленных версий или более поздних поддерживаемых выпусков. Выявите уязвимые облачные рабочие нагрузки: инвентаризируйте виртуальные машины, кластеры Kubernetes, контейнеры, бессерверные функции, API-шлюзы и зависимости приложений на наличие уязвимых компонентов Brotli. Приоритезируйте интернет-ориентированные службы и рабочие нагрузки, обрабатывающие недоверенные сжатые данные. Проанализируйте экспозицию приложений: определите приложения, которые распаковывают HTTP-запросы, сжатые Brotli, внешние HTTP-ответы, загруженные файлы или другой контент, контролируемый злоумышленником. Включите в оценку косвенные и транзитивные зависимости.
Пересоберите и переразверните затронутые рабочие нагрузки: обновите базовые образы контейнеров, файлы блокировки зависимостей и скомпонованные библиотеки. Пересоберите и переразверните затронутые образы контейнеров, перезапустите работающие процессы и убедитесь, что загружены исправленные компоненты. Реализуйте временные меры: там, где немедленное исправление невозможно, рассмотрите возможность отключения распаковки Brotli или отклонения запросов, закодированных Brotli, до их достижения уязвимых компонентов. Ограничьте недоверенные сжатые ответы, где это возможно. Эти меры контроля могут снизить риск, но не заменяют исправление. Усильте мониторинг и обнаружение: просмотрите журналы WAF, приложений и сети на предмет подозрительного трафика, сжатого Brotli, неожиданных сбоев приложений и аномального поведения процессов. Отслеживайте затронутые рабочие нагрузки на предмет признаков эксплуатации.
Клиенты Wiz могут использовать готовый запрос и консультацию в Wiz Threat Center для поиска уязвимых экземпляров в своей среде.
Источник