Рекомендуем
VPS на Windows и Linux — от 49 ₽ за 7 дней Быстрый запуск сервера на NVMe для сайтов, ботов и других задач.
Выбрать VPS

Node.js 26.12.1 устраняет опасную ошибку Brotli и уязвимости проверки TLS

21 октября 2026 года разработчики Node.js выпустили версию 26.12.1, которая закрывает десять уязвимостей, включая ошибку декодера Brotli с риском удалённого выполнения кода. Обновление затрагивает проверку TLS-сертификатов, DNS-запросы и генерацию случайных значений при запуске приложений из сохранённых снимков. Исправления получили и две ветки с длительной поддержкой — Node.js 24 и 22.

Node.js 26.12.1 устраняет опасную ошибку Brotli
Node.js 26.12.1 устраняет опасную ошибку Brotli

Уязвимость Brotli могла привести к выполнению чужого кода

Самая заметная проблема в бюллетене безопасности — CVE-2026-111497. Она связана с декодером Brotli, который распаковывает сжатые данные. Brotli используется в веб-технологиях для уменьшения объёма передаваемой информации: например, сервер может отправить сжатый ответ, а приложение — обработать его содержимое.

В определённых условиях ошибка декодера позволяла записывать данные за пределы выделенной области памяти. Разработчики Node.js прямо указывают на риск удалённого выполнения кода. Для сервиса, который обрабатывает недоверенные сжатые данные, это опасный класс ошибок: специально сформированный входной поток потенциально способен нарушить работу процесса и затронуть его безопасность.

Уязвимости присвоен высокий уровень опасности (High). В версии 26.12.1 включено исправление библиотеки Brotli, а также изменение обработки соответствующей ошибки декодирования. Официальный бюллетень подтверждает возможность удалённого выполнения кода, но не приводит универсального сценария эксплуатации для каждого приложения.

Ошибки TLS и DNS затрагивали проверку адресов и сертификатов

Сразу несколько исправлений относятся к соединениям с другими серверами. При HTTPS-подключении Node.js проверяет, соответствует ли сертификат адресу, к которому обращается программа. Ошибки в распознавании IP-адресов могли нарушать эту проверку.

CVE-2026-105483 связана с обходом проверки имени узла, если IP-адрес записан полноширинными цифрами Unicode. CVE-2026-106069 затрагивает адреса, которые нестрого распознаются как IP. Ещё одна проблема, CVE-2026-106072, позволяла использовать DNS-имя из сертификата для подтверждения IP-адреса при некорректной форме его записи. Исправления ужесточают нормализацию адресов и сопоставление с данными сертификата.

Отдельно закрыта CVE-2026-105482 в dns.resolve(). Раньше нулевой байт (NUL) внутри переданного имени мог приводить к его усечению при обработке DNS-запроса. Такая разница между исходной строкой и фактически проверяемым именем опасна для программ, которые полагаются на точность разрешения доменов.

Для API, прокси и интеграций со сторонними сервисами эти изменения относятся к одному сценарию: приложение принимает или формирует адрес удалённого узла и устанавливает с ним соединение. Теперь внутренние проверки строже обрабатывают нестандартные представления адресов.

Снимки запуска могли повторять UUID и случайные числа

CVE-2026-106074 затрагивает необычную конфигурацию Node.js — приложения, использующие startup snapshots или Single Executable Applications (SEA). Снимок запуска сохраняет часть состояния программы, чтобы при последующих стартах не создавать его заново. SEA позволяет упаковать приложение в отдельный исполняемый файл.

Проблема заключалась в том, что кэш случайных данных функций crypto.randomUUID() и crypto.randomInt() мог попадать в сохранённое состояние. В результате процессы, запущенные из одного снимка, могли возвращать одинаковые значения. Если приложение использует такие значения для уникальных идентификаторов или других чувствительных операций, повторяемость становится реальным риском.

В Node.js 26.12.1 эти кэши сбрасываются при работе со снимками. При обычном запуске без пользовательских снимков и SEA описанный в бюллетене сценарий не воспроизводится в той же форме.

HTTP-соединения и модель разрешений получили дополнительные проверки

Разработчики исправили ошибку CVE-2026-105481 в HTTP-агенте: при повторном использовании соединения keep-alive обработка могла принять ответ, записанный до отправки соответствующего запроса. Это затрагивало порядок сопоставления сетевых операций.

Ещё три уязвимости имеют низкий уровень опасности. CVE-2026-106070 относилась к обработке ошибочных заголовков ZIP, после которой могли возвращаться байты, контролируемые атакующим. CVE-2026-106071 и CVE-2026-106073 касались Permission Model — механизма ограничения доступа приложения к ресурсам. В одном случае разрешения на файловую систему могли выдаваться слишком широко из-за поиска по шаблонам, в другом проверку можно было обойти через fs.realpathSync().

Дополнительно релиз обновляет встроенные зависимости, включая c-ares до 1.34.9 и Undici до 8.12.2. Пересмотрен набор корневых сертификатов на базе NSS 3.131.1, а проверка TLS-цепочек теперь учитывает заблокированные публичные ключи. В общем бюллетене Node.js эти изменения упоминаются в том числе в контексте компрометации промежуточных сертификатов eMudhra.

Исправления вышли одновременно для Node.js 26, 24 и 22

Версия 26.12.1 относится к ветке Current, тогда как 24.22.1 и 22.23.4, опубликованные в тот же день, относятся к веткам LTS с длительной поддержкой. В официальном бюллетене максимальный уровень опасности исправляемых уязвимостей для всех трёх веток обозначен как High.

Предыдущая версия Node.js 26.12.0 вышла 14 октября и содержала, среди прочего, новые функции для WebSocket-маскирования. Через неделю акцент переместился на устранение ошибок безопасности внутри сетевых компонентов, обработки сжатых данных и встроенных механизмов выполнения приложений.

Хотя один из наиболее серьёзных рисков связан с декодером Brotli, общая картина шире: уязвимости затрагивали разные этапы работы серверной программы — от приёма и распаковки данных до проверки удалённого адреса и создания идентификаторов. Набор применимых рисков зависит от того, какие возможности Node.js использует конкретный проект.

Источники

При использовании материалов сайта необходимо указывать ссылку на TGLand.ru. Если вы копируете фрагменты текста в интернете, прямая гиперссылка, доступная для индексации поисковыми системами, должна быть размещена в начале материала.

Вам также может понравиться