Node.js исправил 10 уязвимостей, включая риск RCE в Brotli

Node.js выпустил 21 октября обновления для трёх поддерживаемых веток — 22.x, 24.x и 26.x — и устранил 10 уязвимостей. Наиболее серьёзная, CVE-2026-111497, представляет собой запись за пределы буфера в декодере Brotli; проект Node.js указывает, что она может позволить удалённое выполнение кода. Исправленные версии: 22.23.4, 24.22.1 и 26.12.1.
Ветки Node.js 20.x и более ранние уже достигли конца жизненного цикла и обновления не получат. Разработчикам и администраторам таких систем необходимо переходить на поддерживаемую ветку, поскольку исправления для этой проблемы в старых релизах не появятся.
Как проявляется ошибка Brotli
Проблема находится не в прикладном коде пользователя, а во встроенной копии Brotli, которую поставляет Node.js. Декодер запускается при прямой распаковке данных через модуль node:zlib, а также автоматически, когда приложение вызывает fetch() для ответа с Brotli-сжатием.
Уязвимой может оказаться программа, которая распаковывает Brotli-данные под контролем атакующего: например, тело входящего запроса или ответ, полученный от внешнего сервера. Некорректно сформированный сжатый поток вызывает запись за пределы выделенного буфера.
Node.js перенёс исправление из исходного проекта Brotli: декодер теперь раньше распознаёт недопустимые данные и прекращает обработку до выхода за границы буфера. Этот же патч вошёл в релизы Brotli 1.2.1, 1.1.1 и 1.0.10, выпущенные 21 октября. Программам, которые поставляют собственную копию библиотеки Brotli, также может потребоваться обновление.
Практический риск и другие исправления
Node.js оценивает CVE-2026-111497 как уязвимость высокого уровня опасности, а не критического. Публичный proof-of-concept, опубликованный 22 октября, добился выполнения кода только на намеренно ослабленной тестовой сборке. На стандартной сборке автор получил аварийное завершение процесса и ограниченное чтение памяти, но не смог добиться выполнения кода. Исправленные версии отклоняют используемый PoC некорректный ввод; сведений об эксплуатации в реальных атаках на 22 октября не было.
Ещё три исправления имеют высокий приоритет. Два из них касаются обхода проверки TLS-сертификатов при нестандартной записи IP-адреса: CVE-2026-106069 затрагивает ветки 22.x, 24.x и 26.x, а CVE-2026-105483 — 24.x и 26.x. CVE-2026-105482 устраняет усечение имени хоста в dns.resolve при встроенном нулевом байте.
Среди проблем среднего уровня выделяется CVE-2026-106074: в приложениях, собранных как startup snapshot или единый исполняемый файл, crypto.randomUUID() и crypto.randomInt() могли возвращать одинаковые значения в каждом процессе. Это нарушает непредсказуемость значений, на которую рассчитывает приложение.
Изменения в цепочке доверия
Обновления также перестают доверять восьми промежуточным ключам центра сертификации eMudhra, о компрометации которых стало известно несколькими днями ранее. Node.js использует список корневых сертификатов Mozilla и по умолчанию не выполняет проверку отзыва, поэтому цепочка с такими ключами до обновления могла успешно проходить проверку.
В релизы добавлен встроенный блок для восьми ключей и обновлён список корневых сертификатов: из него удалены три корня emSign. Соединения, возобновлённые из сессии, начатой до обновления, не будут перепроверены до завершения срока этой сессии. Ветки, снятые с поддержки, блокировку не получат.
Что сделать командам
Временного обхода для ошибки Brotli в самом Node.js нет: рекомендованное действие — обновить среду выполнения до 22.23.4, 24.22.1 или 26.12.1. Vercel сообщила, что 21 октября добавила правила межсетевого экрана для блокировки атаки во входящих запросах, однако они не защищают Brotli-ответы, которые приложение получает с других серверов, и не заменяют обновление.
Для бизнеса приоритетом остаются инвентаризация используемых версий Node.js, перевод систем с 20.x на поддерживаемый релиз и проверка сервисов, которые обрабатывают сжатые входящие данные либо обращаются к внешним API через fetch(). Одновременно стоит учесть исправления TLS, DNS, генерации случайных значений и обновлённых встроенных зависимостей.

