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).
Исправление установлено обнаруживает ошибки переполнения стека и повторно выбрасывает их в пользовательский код вместо того, чтобы рассматривать их как фатальные. Это отслеживается под идентификатором 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
Читайте также


/s3/static.nrc.nl/wp-content/uploads/2026/01/13144127/130126OND_2028959481_HP1.jpg)
