Критическая уязвимость Node.js может привести к сбою сервера из-за переполнения стека async_hooks

1768375822
2026-01-14 07:05:00

14 января 2026 г.Рави ЛакшмананБезопасность/уязвимость приложения

Node.js выпустил обновления, чтобы исправить то, что он назвал критической проблемой безопасности, затрагивающей «практически каждое производственное приложение Node.js», которая в случае успешной эксплуатации может вызвать состояние отказа в обслуживании (DoS).

«Node.js/V8 делает все возможное, чтобы восстановиться после исчерпания пространства стека с помощью уловимой ошибки, на которую фреймворки стали полагаться для обеспечения доступности сервиса», — Маттео Коллина и Джойи Чунг из Node.js. сказал в бюллетене во вторник.

«Ошибка, которая воспроизводится только при использовании async_hooks, прервала бы эту попытку, заставив Node.js выйти с 7 напрямую, не выдавая уловимую ошибку, когда рекурсии в пользовательском коде исчерпывают пространство стека. Это делает приложения, глубина рекурсии которых контролируется необработанным вводом, уязвимыми для атак типа «отказ в обслуживании».

По сути, этот недостаток связан с тем, что Node.js завершает работу с кодом 7 (обозначающим Сбой выполнения внутреннего обработчика исключений) вместо изящно обработка исключения когда в пользовательском коде происходит переполнение стека, когда включен async_hooks. Async_hooks — это низкоуровневый API Node.js это позволяет разработчикам отслеживать жизненный цикл асинхронных ресурсов, таких как запросы к базе данных, таймеры или HTTP-запросы.

Кибербезопасность

По словам Node.js, эта проблема затрагивает несколько фреймворков и инструментов мониторинга производительности приложений (APM), включая React Server Components, Next.js, Datadog, New Relic, Dynatrace, Elastic APM и OpenTelemetry, из-за использования Асинхронное хранилищекомпонент, созданный на основе модуля async_hooks, который позволяет хранить данные на протяжении всего времени существования асинхронной операции.

Это было обратился в следующих версиях –

  • Node.js 20.20.0 (LTS)
  • Node.js 22.22.0 (LTS)
  • Node.js 24.13.0 (LTS)
  • Node.js 25.3.0 (текущий)

Проблема также затрагивает все версии Node.js, начиная с 8.x, которая была первой версией с async_hooks, до 18.x. Стоит отметить, что версия Node.js 8.0.0 под кодовым названием Carbon была выпущена 30 мая 2017 года. Однако эти версии не исправлены, поскольку их срок службы истек (EoL).

Read more:  В лазерной связи земля-спутник применяются коды коррекции ошибок нового поколения.

Исправление установлено обнаруживает ошибки переполнения стека и повторно выбрасывает их в пользовательский код вместо того, чтобы рассматривать их как фатальные. Это отслеживается под идентификатором CVE. CVE-2025-59466 (оценка CVSS: 7,5). Несмотря на значительный практический эффект, Node.js заявил, что рассматривает исправление только как средство смягчения последствий по нескольким причинам:

Кибербезопасность

«Хотя это исправление ошибки неопределенного поведения, мы решили включить его в версию безопасности из-за его широкого влияния на экосистему», — сказал Node.js. «Затронуты серверные компоненты React, Next.js и практически все инструменты APM. Исправление улучшает работу разработчиков и делает обработку ошибок более предсказуемой».

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

Раскрытие также относится к Node.js. выпущенные исправления для трех других уязвимостей высокой серьезности (CVE-2025-55131, CVE-2025-55130 и CVE-2025-59465), которые могут быть использованы для утечки или повреждения данных, чтения конфиденциальных файлов с использованием созданных путей относительных символических ссылок (символических ссылок) и запуска удаленного отказа в обслуживании соответственно.

#Критическая #уязвимость #Node.js #может #привести #сбою #сервера #изза #переполнения #стека #async_hooks

Читайте также

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.