Критическая уязвимость, получившая идентификатор CVE-2026-111497 и название Broccoli2Shell, была обнаружена в библиотеке декомпрессии Brotli. Уязвимость затрагивает множество широко используемых технологий, включая Node.js, Bun, Envoy Proxy и другие. Успешная эксплуатация может позволить неаутентифицированному злоумышленнику вызвать повреждение памяти, раскрыть конфиденциальную информацию, привести к сбою затронутых процессов или потенциально выполнить удаленный код (RCE).
Организациям, использующим уязвимые компоненты для декомпрессии ненадежных данных, сжатых с помощью Brotli, рекомендуется уделять приоритетное внимание устранению уязвимости.
CVE-2026-111497 была обнаружена и описана Хай Траном (Khai Tran) и Сильви Майер (Sylvie Mayer) из OpenAI Codex Security, а исправления были подготовлены Маттео Коллиной (Matteo Collina) и Антуаном дю Амелем (Antoine du Hamel) из Node.js. Рон Масас (Ron Masas) из Imperva Red Team продемонстрировал возможность ее эксплуатации, в то время как специалисты компании Aikido проанализировали ее влияние на экосистему Python.
Что такое CVE-2026-111497?
Broccoli2Shell (также известная как Node2Shell и HTTP2Shell) связана с уязвимостью записи за пределами буфера в декодере Brotli — широко распространенном компоненте сжатия, используемом для уменьшения размера HTTP-трафика и других данных. Ошибка возникает, когда декодер неправильно обрабатывает специально сформированные сжатые данные во время операций блочной обработки, потенциально выполняя запись за пределами выделенных границ памяти. Злоумышленник может использовать это поведение, передавая вредоносный входной поток, сжатый алгоритмом Brotli, уязвимому приложению, что потенциально может привести к раскрытию памяти, сбоям приложения или выполнению произвольного кода с правами затронутого процесса. Исследователи продемонстрировали успешную эксплуатацию незащищенных сред Node.js.
Хотя первоначально уязвимость связывали с Node.js, она берет свое начало в исходном декодере Brotli на языке C и распространяется на множество зависимых технологий, включающих уязвимый компонент. Для эксплуатации требуется, чтобы приложение или зависимость выполняли декомпрессию контролируемых злоумышленником данных Brotli, поступающих через входящие HTTP-запросы, внешне полученные ответы или другой ненадежный сжатый контент. Некоторые HTTP-клиенты и фреймворки приложений могут выполнять декомпрессию автоматически, если включена поддержка Brotli, что потенциально делает приложения уязвимыми даже тогда, когда Brotli не упоминается явно в коде приложения.
Данные Wiz Research: каковы риски для облачных сред?
Облачные среды особенно уязвимы из-за широкого использования компонентов с поддержкой Brotli в контейнеризированных приложениях, кластерах Kubernetes, API-шлюзах, обратных прокси-серверах, бессерверных рабочих нагрузках и веб-сервисах в облаке. Приложения, смотрящие в интернет и обрабатывающие контролируемые злоумышленником запросы, а также внутренние службы, получающие сжатые ответы из ненадежных внешних источников, могут предоставить пути для атаки. Успешная эксплуатация может позволить злоумышленникам скомпрометировать рабочие нагрузки приложений, получить доступ к конфиденциальной информации, нарушить доступность служб или выполнить вредоносный код внутри затронутых контейнеров или сред выполнения.
Согласно данным Wiz, 91% облачных сред имеют ресурсы, уязвимые к CVE-2026-111497, а в 82% облачных сред имеются экземпляры Node.js, публично доступные из интернета.
Какие продукты затронуты?
Другие продукты, в которые встроены уязвимые версии декодере Brotli на C или которые ссылаются на них, также могут быть подвержены уязвимости. Организациям следует ознакомиться с рекомендациями по безопасности от конкретных производителей, особенно для статически связанных библиотек и внедренных зависимостей. Поддержка устаревших веток сред выполнения должна быть перенесена на поддерживаемые версии.
Какие действия следует предпринять группам безопасности?
Организациям следует расставить приоритеты для следующих мер по минимизации рисков и устранению уязвимостей:
- Примените обновления безопасности: обновите уязвимые библиотеки Brotli, среды выполнения Node.js, пакеты Python, Bun, развертывания Envoy Proxy и Istio до соответствующих исправленных версий или более поздних поддерживаемых релизов.
Примените обновления безопасности: обновите уязвимые библиотеки Brotli, среды выполнения Node.js, пакеты Python, Bun, развертывания Envoy Proxy и Istio до соответствующих исправленных версий или более поздних поддерживаемых релизов.
- Выявите уязвимые облачные рабочие нагрузки: проведите инвентаризацию виртуальных машин, кластеров Kubernetes, контейнеров, бессерверных функций, API-шлюзов и зависимостей приложений на предмет наличия уязвимых компонентов Brotli. Расставьте приоритеты для интернет-служб и рабочих нагрузок, обрабатывающих ненадежные сжатые данные.
Выявите уязвимые облачные рабочие нагрузки: проведите инвентаризацию виртуальных машин, кластеров Kubernetes, контейнеров, бессерверных функций, API-шлюзов и зависимостей приложений на предмет наличия уязвимых компонентов Brotli. Расставьте приоритеты для интернет-служб и рабочих нагрузок, обрабатывающих ненадежные сжатые данные.
- Проверьте подверженность приложений риску: определите приложения, которые выполняют декомпрессию HTTP-запросов, сжатых с помощью Brotli, внешних HTTP-ответов, загруженных файлов или другого контента, контролируемого злоумышленником. Включите в оценку косвенные и транзитивные зависимости.
Проверьте подверженность приложений риску: определите приложения, которые выполняют декомпрессию HTTP-запросов, сжатых с помощью Brotli, внешних HTTP-ответов, загруженных файлов или другого контента, контролируемого злоумышленником. Включите в оценку косвенные и транзитивные зависимости.
- Пересоберите и повторно разверните затронутые рабочие нагрузки: обновите базовые образы контейнеров, файлы блокировки зависимостей и встроенные библиотеки. Пересоберите и повторно разверните затронутые образы контейнеров, перезапустите работающие процессы и убедитесь, что исправленные компоненты загружены.
Пересоберите и повторно разверните затронутые рабочие нагрузки: обновите базовые образы контейнеров, файлы блокировки зависимостей и встроенные библиотеки. Пересоберите и повторно разверните затронутые образы контейнеров, перезапустите работающие процессы и убедитесь, что исправленные компоненты загружены.
- Внедрите временные меры защиты: если немедленное обновление невозможно, рассмотрите возможность отключения декомпрессии Brotli или отклонения запросов с кодировкой Brotli до того, как они достигнут уязвимых компонентов. По возможности ограничьте обработку ненадежных сжатых ответов. Эти меры могут снизить риски, но не заменяют установку патчей.
Внедрите временные меры защиты: если немедленное обновление невозможно, рассмотрите возможность отключения декомпрессии Brotli или отклонения запросов с кодировкой Brotli до того, как они достигнут уязвимых компонентов. По возможности ограничьте обработку ненадежных сжатых ответов. Эти меры могут снизить риски, но не заменяют установку патчей.
- Усильте мониторинг и обнаружение: проверяйте журналы WAF, приложений и сети на наличие подозрительного трафика, сжатого с помощью Brotli, неожиданных сбоев приложений и аномального поведения процессов. Следите за индикаторами эксплуатации на затронутых рабочих нагрузках.
Усильте мониторинг и обнаружение: проверяйте журналы WAF, приложений и сети на наличие подозрительного трафика, сжатого с помощью Brotli, неожиданных сбоев приложений и аномального поведения процессов. Следите за индикаторами эксплуатации на затронутых рабочих нагрузках.
Клиенты Wiz могут использовать готовый поисковый запрос и рекомендации в Wiz Threat Center для поиска уязвимых экземпляров в своей среде.
Ссылки
Рекомендации Vercel
Публикация Imperva
Рекомендации Patch the Planet
Рекомендация Istio
Рекомендация Envoy Proxy
Рекомендация Brotli
Публикация oss-security
Рекомендация Bun
Публикация в блоге Aikido
Публикация в блоге OpenSourceMalware












