Уязвимость в Brotli грозит RCE в Node.js и Next.js
CVE-2026-111497 — переполнение буфера в декодере Brotli, который используют Node.js, Next.js, браузеры и десятки Python-пакетов. CVSS v4.0 9.2, 21 октября вышли патчи, дистрибутивы продолжают их раскатывать до сих пор.

21 октября 2026 года Node.js и Google опубликовали скоординированные патчи для CVE-2026-111497 — уязвимости переполнения буфера в декодере Brotli, которая позволяет вызвать повреждение памяти, утечку данных процесса, отказ в обслуживании и потенциально удалённое выполнение кода. Исследователи продемонстрировали эксплуатацию на процессах Node.js, а разбор Qualys подтвердил: проблема не в коде приложения, а в самой библиотеке Brotli, которую используют десятки рантаймов и языковых экосистем.
Что случилось
Брешь обнаружили ещё в феврале 2026 года, но публичное раскрытие и патчи синхронизировали на 21 октября: вышли Node.js 22.23.4, 24.22.1 и 26.12.1, а также три исправленные версии самой библиотеки Brotli (1.0.10, 1.1.1, 1.2.1). Уязвимым оказался диапазон версий 1.0.3–1.2.0 — он охватывает практически все рантаймы и системы, собранные за последние несколько лет без ручного апдейта зависимости. Проблема возникает при декодировании специально сформированного (malformed) Brotli-потока: декодер пишет данные за пределы выделенного буфера, что и даёт атакующему контроль над соседней памятью.
Почему это шире, чем Node.js
Несмотря на то что первые отчёты фокусировались на Node.js, Brotli — это C-библиотека, которую используют браузеры, прокси и десятки языковых биндингов, включая Python-пакеты. Для веб-проектов практический риск зависит от того, какой компонент стека реально распаковывает Brotli-ответы: сайт на чистом PHP и headless-фронтенд на Next.js имеют разные пути эксплуатации. Для self-hosted Next.js апдейта самого фреймворка недостаточно — Next.js не блокирует Brotli-ответы при оптимизации изображений, поэтому обновлять нужно именно Node.js, на котором фронтенд выполняется.
Кто в зоне риска
- Любой сервис, который принимает
Content-Encoding: brот недоверенного источника — HTTP-клиенты, обратные прокси, шлюзы API - Приложения, обрабатывающие загруженные пользователями сжатые файлы (архивы, экспорт/импорт данных)
- Self-hosted Next.js на устаревшем Node.js — особенно пайплайн оптимизации изображений
- Python-сервисы, тянущие Brotli транзитивно через зависимости, а не напрямую
Что делать прямо сейчас
Патч один, но проверить нужно всю цепочку: обновить Node.js до патч-версии, отдельно проверить версию самой библиотеки Brotli там, где она подключена напрямую (не через рантайм), и свериться с трекером безопасности своего дистрибутива — патчи для системных пакетов докатываются неравномерно. Для команд без выделенного security-инженера быстрее не разбирать такие цепочки зависимостей вручную, а держать стек под присмотром тех, кто системно ведёт его сопровождение: мы уже разбирали похожий сценарий срочного патчинга в материале о чек-листе безопасности веб-приложения. Если же сайт строится или обновляется с нуля, разумнее сразу закладывать такие проверки в процесс — например, через подрядчика вроде команды, которая отвечает за создание сайтов под ключ и их последующую техническую поддержку, а не оставлять патчинг зависимостей на совесть разработчика, который давно переключился на другой проект.



