Найдена критическая уязвимость в декодировщике Brotli
В библиотеке с эталонной реализацией декодировщика формата сжатия данных Brotli найдена уязвимость (CVE-2026-111497), которая приводит к переполнению буфера при обработке специально оформленных сжатых данных. По данным Google уязвимость может использоваться для удалённого выполнения кода при атаке на проекты, использующие официальную реализацию декодировщика Brotli.
К слову, эталонный декодировщик Brotli от Google (написанный на языке C) используется абсолютно повсеместно, из-за чего уязвимость CVE-2026-111497 (получившая имена Broccoli2Shell, Node2Shell и HTTP2Shell) имеет колоссальный масштаб. Сжатие Brotli поддерживают практически все современные веб-технологии, так как оно эффективнее стандартного Gzip и является базовым стандартом сжатия данных в интернете. Практически каждая экосистема использует официальную C-библиотеку c/dec/decode.c напрямую или через биндинги.
Декодеровщик встроен в следующие системы:
• Node.js: Уязвимый код скомпилирован непосредственно в само ядро платформы в модуле deps/brotli. Уязвимы все популярные серверные фреймворки (например, Express 5 с body-parser 2.x, Fastify), которые автоматически распаковывают входящие запросы от клиентов, если передан заголовок Content-Encoding: br.
• Bun: Альтернативная среда выполнения также использует этот декодер и подвержена RCE.
• Веб-браузеры: Google Chrome, Chromium, Mozilla Firefox, Apple Safari, Microsoft Edge и все браузеры на их основе используют эталонную библиотеку Brotli для декомпрессии ресурсов сайтов (скриптов, стилей, HTML). Атака возможна со стороны вредоносного сервера на устройство пользователя.
• HTTP-клиенты и утилиты: curl, wget, а также встроенные инструменты скачивания в ОС используют Brotli.
• Сетевые прокси и балансировщики: Envoy, Istio, Nginx (с модулями Brotli), трафик-менеджеры и CDN-платформы (Cloudflare, Akamai), которые декомпрессируют или анализируют трафик «на лету».
Поскольку оригинальная библиотека написана на C, почти во всех языках официальные библиотеки сжатия — это обертки (биндинги) над уязвимым кодом Google:
• Python: Популярные пакеты brotli и brotlicffi на PyPI.
• Декодирующие контент библиотеки для Java, С++, .NET, Ruby, PHP (к примеру, в .NET при использовании BrotliDecoder, BrotliStream и HttpClient)
• UEFI-прошивки: Brotli применяется для сжатия образов разделов и драйверов в современных прошивках материнских плат.
• Графика: Формат изображений JPEG XL (.jxl) использует Brotli в качестве базового слоя сжатия, поэтому уязвимы все просмотрщики картинок и графические библиотеки, поддерживающие этот формат.
• Linux-дистрибутивы: Пакет libbrotli является системной зависимостью в Debian, Ubuntu, Red Hat, Arch Linux и других системах
В итоге, область поражения (blast radius) оценивается ИБ-специалистами как критическая. Уязвимость затрагивает сотни миллионов серверов и миллиарды клиентских устройств. Любая система, принимающая сжатые извне данные без авторизации (Pre-Auth), находится под угрозой удаленного выполнения кода.
Разработчикам рекомендуется экстренно обновить рантаймы (например, Node.js до версий 22.23.4, 24.22.1, 26.12.1) или временно отключать поддержку сжатия br на уровне балансировщиков трафика до установки системных патчей.
https://broccoli2shell.com/https://www.aikido.dev/blog/python-packages-vulnerable-node2shell-brotli-cve-2026-111497