Найти в Дзене
Chris Roylance

Вышел январский релиз безопастности Node.js January 13 2026 Security Releases

Выпущены обновления безопасности. Обновления для версий Node.js 25.x, 24.x, 22.x, 20.x устраняют: Данное обновление безопасности включает следующие обновления зависимостей для устранения публичных уязвимостей: Уязвимость в логике выделения буферов в Node.js может привести к утечке неинициализированной памяти при прерывании выделения памяти при использовании модуля vm с опцией timeout. При определенных условиях времени буферы, выделенные с помощью Buffer.alloc и других экземпляров TypedArray, таких как Uint8Array, могут содержать остаточные данные от предыдущих операций, что может привести к утечке секретных данных, таких как токены или пароли, или к повреждению данных. Хотя для эксплуатации уязвимости обычно требуется точное время или выполнение кода внутри процесса, она может стать уязвимой для удаленной эксплуатации, когда ненадежные входные данные влияют на рабочую нагрузку и тайм-ауты, что может привести к нарушению конфиденциальности и целостности данных. Уязвимость выявлена: Эта
Оглавление

Выпущены обновления безопасности. Обновления для версий Node.js 25.x, 24.x, 22.x, 20.x устраняют:

  • 3 проблемы высокой степени серьезности.
  • 4 проблемы средней степени серьезности.
  • 1 проблему низкой степени серьезности.

Данное обновление безопасности включает следующие обновления зависимостей для устранения публичных уязвимостей:

  • c-ares (1.34.6) для версий 20.x, 22.x, 24.x, 25.x
  • undici (6.23.0, 7.18.0) для версий 20.x, 22.x, 24.x, 25.x

Уязвимости типа CVE-2025-55131, возникающие из-за превышения времени ожидания, приводят к тому, что Uint8Array/Buffer.alloc не заполняется нулями (высокая степень опасности).

Уязвимость в логике выделения буферов в Node.js может привести к утечке неинициализированной памяти при прерывании выделения памяти при использовании модуля vm с опцией timeout. При определенных условиях времени буферы, выделенные с помощью Buffer.alloc и других экземпляров TypedArray, таких как Uint8Array, могут содержать остаточные данные от предыдущих операций, что может привести к утечке секретных данных, таких как токены или пароли, или к повреждению данных.

Хотя для эксплуатации уязвимости обычно требуется точное время или выполнение кода внутри процесса, она может стать уязвимой для удаленной эксплуатации, когда ненадежные входные данные влияют на рабочую нагрузку и тайм-ауты, что может привести к нарушению конфиденциальности и целостности данных.

Уязвимость выявлена:

Эта уязвимость затрагивает всех пользователей активных версий: 20.x, 22.x, 24.x, 25.x

Обход прав доступа к файловой системе с помощью специально созданных символических ссылок (CVE-2025-55130) - (Высокая степень опасности)

Уязвимость в модели разрешений Node.js позволяет злоумышленникам обходить ограничения --allow-fs-read и --allow-fs-write, используя специально созданные относительные пути к символическим ссылкам. Путем объединения каталогов и символических ссылок скрипт, получивший доступ только к текущему каталогу, может выйти за рамки разрешенного пути и читать конфиденциальные файлы. Это нарушает ожидаемые гарантии изоляции и позволяет произвольно читать/записывать файлы, что может привести к компрометации системы.

Уязвимость выявлена:

Эта уязвимость затрагивает пользователей модели разрешений в Node.js версий 20, 22, 24 и 25.

Сервер Node.js HTTP/2 аварийно завершает работу с необработанной ошибкой при получении некорректного кадра HEADERS (CVE-2025-59465) - (Высокая степень опасности)

Некорректно сформированный HTTP/2 HEADERS-кадр с чрезмерно большими и недопустимыми данными HPACK может привести к сбою Node.js из-за необработанной ошибки TLSSocket ECONNRESET. Вместо безопасного закрытия соединения процесс завершается с ошибкой, что позволяет осуществить удаленный отказ в обслуживании. Это в первую очередь затрагивает приложения, которые не добавляют явные обработчики ошибок к защищенным сокетам, например:

Уязвимость выявлена:

Эта уязвимость затрагивает всех пользователей активных версий программного обеспечения: 20.x, 22.x, 24.x, 25.x

Неперехватываемая ошибка "Превышен максимальный размер стека вызовов" в Node.js при использовании async_hooks приводит к сбоям процесса в обход обработчиков ошибок (CVE-2025-59466) - (Средняя опасность)

Мы обнаружили ошибку в обработке ошибок Node.js, из-за которой ошибки "Maximum call stack size exceeded" становятся неперехватываемыми при включении async_hooks.createHook(). Вместо вызова process.on('uncaughtException') процесс завершается, что делает сбой необратимым. Приложения, использующие AsyncLocalStorage (v22, v20) или async_hooks.createHook() (v24, v22, v20), становятся уязвимыми для сбоев типа "отказ в обслуживании", вызванных глубокой рекурсией при определенных условиях.

Этот патч улучшает восстанавливаемость в одном крайнем случае, но не устраняет более широкий риск. Восстановление после исчерпания памяти является неопределенным поведением, предполагающим наилучшие усилия, и не является надежной основой для доступности или безопасности. В критически важных с точки зрения доступности путях, где глубина рекурсии может зависеть от ненадежных входных данных, следует отдавать предпочтение проверке входных данных и проектированию, ограничивающему или предотвращающему рекурсию, а не зависимости от поведения исчерпания памяти в стеке или отсутствия оптимизации хвостовых вызовов в среде выполнения/движке. Подробности см. в этой статье блога.

Уязвимость выявлена:

Данная уязвимость затрагивает всех пользователей активных версий программного обеспечения: 20.x, 22.x, 24.x, 25.x.

Утечка памяти, позволяющая осуществить удаленный отказ в обслуживании приложений, обрабатывающих клиентские TLS-сертификаты (CVE-2025-59464) - (Средний уровень опасности)

Утечка памяти в интеграции OpenSSL с Node.js происходит при преобразовании полей сертификата X.509 в UTF-8 без освобождения выделенного буфера. Когда приложения вызывают socket.getPeerCertificate(true), каждое поле сертификата приводит к утечке памяти, позволяя удаленным клиентам вызывать постоянный рост объема памяти за счет многократных TLS-соединений. Со временем это может привести к исчерпанию ресурсов и отказу в обслуживании.

Уязвимость выявлена:

Эта уязвимость уже исправлена ​​в Node.js версии 24.12.0. Она не влияет на другие активные релизы.

Данное публичное сообщение об уязвимости CVE выпущено только для затронутых релизов версии 24.

Обход модели разрешений Node.js через неконтролируемые соединения Unix Domain Socket (UDS) (CVE-2026-21636) - (Средний уровень опасности)

Уязвимость в модели разрешений Node.js позволяет соединениям через Unix Domain Socket (UDS) обходить сетевые ограничения при включенной опции --permission. Даже без --allow-net, контролируемые злоумышленником входные данные (такие как URL-адреса или параметры socketPath) могут подключаться к произвольным локальным сокетам через net, tls или undici/fetch. Это нарушает предусмотренную моделью разрешений защиту и обеспечивает доступ к привилегированным локальным службам, потенциально приводя к повышению привилегий, утечке данных или локальному выполнению кода.

На момент обнаружения этой уязвимости сетевые разрешения (--allow-net) все еще находятся на экспериментальной стадии.

Уязвимость выявлена:

Проблема затрагивает пользователей модели разрешений Node.js версии v25.

Исключения обратного вызова TLS PSK/ALPN обходят обработчики ошибок, вызывая DoS-атаки и утечку дескрипторов файлов (CVE-2026-21637) - (Средний уровень опасности)

Уязвимость в обработке ошибок TLS в Node.js позволяет удалённым злоумышленникам вызывать сбои или исчерпывать ресурсы TLS-сервера при использовании функций pskCallback или ALPNCallback. Синхронные исключения, генерируемые во время этих коллбэков, обходят стандартные пути обработки ошибок TLS (tlsClientError и error), что приводит либо к немедленному завершению процесса, либо к скрытой утечке файловых дескрипторов, в конечном итоге вызывая отказ в обслуживании. Поскольку эти коллбэки обрабатывают входные данные, контролируемые злоумышленником во время рукопожатия TLS, удалённый клиент может неоднократно вызывать эту проблему.

Уязвимость выявлена:

Эта уязвимость затрагивает TLS-серверы, использующие коллбэки PSK или ALPN в разных версиях Node.js, где эти коллбэки генерируют исключения, не будучи безопасно обернутыми.

Функция fs.futimes() обходит модель разрешений только для чтения (CVE-2025-55132) - (низкий уровень опасности)

Уязвимость в модели разрешений Node.js позволяет изменять метки времени доступа и изменения файла с помощью функции futimes(), даже если процесс имеет только права на чтение.

В отличие от utimes(), futimes() не применяет ожидаемые проверки прав на запись, что означает возможность изменения метаданных файла в каталогах, доступных только для чтения. Такое поведение может быть использовано для изменения меток времени таким образом, чтобы скрыть активность, снижая надежность логов.

Уязвимость выявлена:

Данная уязвимость затрагивает пользователей модели разрешений в Node.js версий 20, 22, 24 и 25.

Общия информация об выявленных ошибках безопастности

В версии Node.js 25.x обнаружены 3 уязвимости высокой степени серьезности и 1 уязвимость низкой степени серьезности. В версии Node.js 24.x обнаружены 3 уязвимости высокой степени серьезности, 1 уязвимость низкой степени серьезности и 1 уязвимость средней степени серьезности. В версии Node.js 22.x обнаружены 3 уязвимости высокой степени серьезности, 1 уязвимость низкой степени серьезности и 1 уязвимость средней степени серьезности. В версии Node.js 20.x обнаружены 3 уязвимости высокой степени серьезности, 1 уязвимость низкой степени серьезности и 1 уязвимость средней степени серьезности.

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