Критическая уязвимость Node.js async_hooks DoS (CVE-2025-59466) — немедленные действия для команд полного стека
TL;DR — Ошибка Node.js с высоким воздействием (CVE-2025-59466) вызывает необратимое завершение процесса, когда происходит переполнение стека, пока активны обратные вызовы async_hooks. Поскольку AsyncLocalStorage / async_hooks широко используются в React Server Components, Next.js и каждым основным агентом APM, многие серверные JavaScript приложения подвержены легкому отказу в обслуживании. Немедленно обновите до исправленных версий Node.js (выпущенных 13 января 2026 года) и примените краткосрочные меры, если вы не можете сразу установить патч. (nodejs.org)
Что произошло (кратко)
- Когда включены async_hooks (или AsyncLocalStorage, основанный на нем), определенные переполнения стека (например, глубокая рекурсия, которая выделяет промисы) могут обойти обычную обработку ошибок и вызвать немедленный выход Node.js (код выхода 7) вместо выбрасывания ловимого RangeError. Это делает сбои необратимыми и легко эксплуатируемыми как DoS. (nodejs.org)
Кому это вредит
- Любому производственному приложению, использующему async_hooks или AsyncLocalStorage. На практике наиболее подверженные группы:
- React Server Components (RSC) и серверы Next.js, которые используют AsyncLocalStorage для контекста запроса.
- APM/инструментальные агенты (Datadog, New Relic, Elastic APM, OpenTelemetry и т. д.), которые включают трассировку async_hooks.
- Любой серверный код, который может быть приведен к глубокой рекурсии внешним вводом. (nodejs.org)
Исправленные версии (что обновить сейчас)
- Обновления безопасности Node.js с исправлением были выпущены 13 января 2026 года — обновите до соответствующих исправленных версий для вашей линии релиза. Примеры, указанные в уведомлении, включают исправленные сборки в линиях 20.x, 22.x, 24.x и 25.x (см. официальное уведомление Node.js для точных номеров версий для вашей платформы). Приоритизируйте патчинг серверов, доступных из интернета, и CI-агентов, которые выполняют серверный рендеринг или инструментирование. (nodejs.org)
Немедленный операционный контрольный список (высокое воздействие, минимальное трение)
- Сначала патч
- Разверните обновления безопасности Node.js на тестовых и производственных средах как можно скорее. Это рекомендуемое и наименее рискованное решение. (nodejs.org)
- Если вы не можете немедленно установить патч
- Временно отключите сторонние APM/инструментальные агенты на публичных конечных точках (они часто включают async_hooks). Оцените уведомления поставщиков для исправленных версий агентов. (nodejs.org)
- Добавьте защитную валидацию ввода к конечным точкам, которые разбирают глубоко вложенные данные (ограничьте рекурсию/глубину JSON). Не полагайтесь на выполнение, чтобы сделать переполнения стека восстанавливаемыми. (nodejs.org)
- Рассмотрите возможность запуска уязвимых сервисов под контроллерами быстрого перезапуска (systemd, k8s probes) только как временную меру — это устраняет сбои, но не предотвращает эксплуатацию. Используйте это только пока вы устанавливаете патч. (nodejs.org)
- Для команд на Node.js 24+
- Node.js 24 повторно реализовал AsyncLocalStorage, используя AsyncContextFrame от V8, что снижает зависимость от обратных вызовов async_hooks; во многих стандартных развертываниях 24+ экземпляры React/Next.js не затрагиваются таким образом. Тем не менее, исправленные версии 24.x все еще были выпущены — обновляйтесь в любом случае. (nodejs.org)
Как быстро обнаружить уязвимость
- Поиск в вашем дереве зависимостей и логах запуска на использование async_hooks или AsyncLocalStorage.
- Проверьте наличие APM-агентов, которые включают трассировку; эти агенты обычно вызывают async_hooks.createHook().
- Мониторинг необъяснимых завершений процессов с кодом выхода 7 и корреляция с недавними запросами, содержащими глубоко вложенные полезные нагрузки. (nodejs.org)
Почему это важно для команд полного стека
- Серверный рендеринг и распределенная трассировка являются основными частями современных стеков полного стека. Эта ошибка показывает, что низкоуровневые внутренние механизмы выполнения (асинхронный контекст и хуки) могут создавать системные риски доступности на многих уровнях — фреймворк, платформа и телеметрия — и что поведение выполнения не должно рассматриваться как граница безопасности. Исправление выполнения необходимо, но команды также должны укрепить контроль ввода/рекурсии на уровне приложения. (nodejs.org)
Быстрый план действий (один час, один день, одна неделя)
- Один час: Инвентаризация сервисов, использующих AsyncLocalStorage или APM-агентов; добавьте мониторинг для кода выхода 7. (nodejs.org)
- Один день: Разверните исправленные сборки Node.js на тестовой среде; координируйте обновления агентов поставщиков; ограничьте или отключите агентов на публичных конечных точках, если это необходимо. (nodejs.org)
- Одна неделя: Внедрите исправленный Node.js в производственную среду, проверьте поведение приложения под нагрузкой и добавьте ограничения ввода/рекурсии к путям разбора запросов. Задокументируйте инцидент и обновите руководства по эксплуатации. (nodejs.org)
Заключительная заметка
- Это практическая проблема доступности, касающаяся всей экосистемы (не RCE). Проект Node.js выпустил исправления и рекомендации; команды полного стека должны рассматривать это как операционную чрезвычайную ситуацию для серверного рендеринга и инструментированных производственных сервисов: инвентаризация, патчинг и немедленные меры по смягчению рекурсии, вызванной вводом. (nodejs.org)
Источник: Официальное уведомление Node.js — Смягчение уязвимости отказа в обслуживании из-за необратимого исчерпания пространства стека для пользователей React, Next.js и APM. (nodejs.org)
Ссылка:
Источник
Читать дальше
Изменения в FedCM в Chrome 143: структурированные утверждения ID, более строгие метаданные клиента и обновления API
31 января 2026 г.Chrome 143 (опубликован 12 января 2026 года) изменяет поток идентификации FedCM: токены утверждения ID могут быть структурированным JSON, проверка client_metadata становится обязательной, и несколько полей API перемещаются/переименовываются — требуется миграция перед Chrome 145.
Undici CVE-2026-22036: неограниченная цепочка декомпрессии приводит к исчерпанию ресурсов — выпущены патчи
30 января 2026 г.14 января 2026 года в уведомлении о безопасности для undici (HTTP-клиент Node.js) описывается уязвимость неограниченной цепочки декомпрессии, которая может привести к высокому использованию CPU и памяти. Команды полного стека должны найти и обновить затронутые версии undici и добавить легкие защитные меры на уровне выполнения.
Уязвимость CSRF в Server Actions React Router / Remix (CVE-2026-22030)
29 января 2026 г.React Router и @remix-run/server-runtime устранили проблему CSRF средней степени серьезности, затрагивающую обработчики действий на стороне сервера и нестабильные действия сервера React — что полностековым командам необходимо проверить и исправить сейчас.