CVE-2026-111497: Brotli ломает память там, где приложение само распаковывает ответ
Ошибка декодера Brotli 1.0.3-1.2.0. Сжатый поток может испортить память процесса, слить данные, уронить его или выполнить код. Node закрыт в 22.23.4, 24.22.2 и 26.12.1. Ветка 20 патча не получит.
Brotli - это сжатие, которым веб пользуется каждый день. CVE-2026-111497 сидит в декодере библиотеки Google, версии с 1.0.3 по 1.2.0. Специально собранный сжатый поток портит соседнюю память декодера. Дальше возможны утечка, падение процесса или выполнение кода. Вход не нужен. Прозвище Node2Shell в лентах описывает один частый случай, не всю карту: та же библиотека есть в Python, Java, Envoy, Bun и в пакетах дистрибутива.
Где это ваш процесс
Риск появляется там, где ваш код распаковывает Brotli из недоверенного места. Типичные двери: тело входящего запроса и ответ сервера, которому вы сами сходили через fetch. Файл, который сотрудник открыл локально, тоже декодируется той же библиотекой, если она старая. Это не «дыра nginx вообще». Это дыра конкретной сборки libbrotli или встроенного декодера Node.
Версии
- Библиотека: 1.0.10, 1.1.1 или 1.2.1, в зависимости от ветки, которую вы уже везёте.
- Node.js: 22.23.4, 26.12.1. В 24.x первая сборка с фиксом - 24.22.1, в ней была регрессия, рабочий следующий шаг - 24.22.2.
- Node 20 и старше поддержки не имеют. Миграция, не ожидание патча.
- Контейнер нужно пересобрать. Обновление хоста не меняет Node внутри образа.
Связанные услуги Lexora
Неясно, чей Brotli распаковывает трафик
Посмотрим Node, пакет дистрибутива и образы. Часто «обновили сервер» не затрагивает ни один из трёх.