
Node.js ha lanzado una actualización que soluciona un problema descrito como un problema de seguridad crítico que afecta a «prácticamente todas las aplicaciones de producción de Node.js». La explotación de este problema podría provocar una condición de denegación de servicio (DoS).
«Node.js/V8 hace su mejor esfuerzo para recuperarse del agotamiento del espacio de pila debido a errores detectables, de los cuales dependen los marcos para garantizar la disponibilidad del servicio», dijeron Matteo Collina y Joyee Cheung de Node.js en una actualización del martes.
«Este intento falla debido a un error que solo se reproduce cuando se usan async_hooks, lo que hace que Node.js salga directamente en 7 sin generar un error detectable cuando el espacio de la pila se agota debido a la recursividad en el código de usuario. Esto hace que las aplicaciones donde la profundidad de la recursividad está controlada por entradas no saneadas sean vulnerables a ataques de denegación de servicio».
El núcleo de esta deficiencia surge del hecho de que si se produce un desbordamiento de pila en el código de usuario mientras async_hooks está habilitado, Node.js no manejará correctamente la excepción y saldrá con el código 7 (lo que indica un error de tiempo de ejecución en un controlador de excepciones interno). Async_hooks es una API de Node.js de bajo nivel que permite a los desarrolladores realizar un seguimiento del ciclo de vida de recursos asincrónicos, como consultas de bases de datos, temporizadores y solicitudes HTTP.

Según Node.js, este problema afecta a varios marcos y herramientas de monitoreo del rendimiento de aplicaciones (APM), incluidos React Server Components, Next.js, Datadog, New Relic, Dynatrace, Elastic APM y OpenTelemetry, debido al uso de AsyncLocalStorage, un componente integrado en el módulo async_hooks que le permite guardar datos durante toda la vida útil de una operación asincrónica.
Este problema se ha resuelto en las siguientes versiones:
Node.js 20.20.0 (LTS) Node.js 22.22.0 (LTS) Node.js 24.13.0 (LTS) Node.js 25.3.0 (actual)
Este problema también afecta a todas las versiones de Node.js desde 8.xa 18.x, la primera versión con async_hooks. Vale la pena señalar que la versión 8.0.0 de Node.js, con nombre en código Carbon, se lanzó el 30 de mayo de 2017. Sin embargo, estas versiones alcanzaron el estado de fin de vida útil (EoL) y no están parcheadas.
La solución introducida detecta errores de desbordamiento de pila y los vuelve a enviar al código de usuario en lugar de tratarlos como errores fatales. Esto se rastrea con el identificador CVE CVE-2025-59466 (puntuación CVSS: 7,5). A pesar del impacto significativo real, Node.js dijo que está tratando esta solución como solo una medida de mitigación por varias razones.

«Aunque se trata de una corrección de errores para un comportamiento no especificado, decidimos incluirlo en una versión de seguridad porque tiene un amplio impacto en el ecosistema», dijo Node.js. «Los componentes de React Server, Next.js y prácticamente todas las herramientas APM se ven afectados. Esta solución mejora la experiencia del desarrollador y hace que el manejo de errores sea más predecible».
Dada la gravedad de la vulnerabilidad, se recomienda a los usuarios de marcos/herramientas y proveedores de alojamiento de servidores que actualicen lo antes posible. Se anima a los mantenedores de bibliotecas y marcos a aplicar defensas más sólidas para combatir el agotamiento del espacio de la pila y garantizar la disponibilidad del servicio.
Esta divulgación se produce al mismo tiempo que Node.js también publicó correcciones para otras tres fallas de alta gravedad (CVE-2025-55131, CVE-2025-55130 y CVE-2025-59465), que podrían explotarse para causar divulgación o corrupción de datos y crear enlaces simbólicos relativos (enlaces simbólicos), respectivamente. La ruta podría usarse para leer archivos confidenciales o activar una denegación de servicio remota.
Source link
