Alerta de seguridad · Alta
Node.js: fallos en HTTP/2 y HTTPS permiten a clientes tumbar servidores y leer datos de otros usuarios
· 5 minutos de lectura · Centoculus Security Team
Conocida desde el
Afectados: Node.js 22.x anterior a 22.23.5, 24.x anterior a 24.22.3, 26.x anterior a 26.13.1. Las ramas fuera de soporte, como 20.x y 25.x, también están afectadas y no reciben corrección.
Qué ha ocurrido
El 11 de noviembre de 2026, el proyecto Node.js publicó versiones de seguridad para sus tres ramas con soporte. Las versiones corregidas son 22.23.5, 24.22.3 y 26.13.1. Corrigen 16 vulnerabilidades en el propio Node.js, y siete de ellas tienen gravedad alta. Las versiones también actualizan las dependencias incluidas llhttp (22.x, 24.x, 26.x), undici (24.x, 26.x) y sqlite (22.x, 24.x).
Los problemas más importantes están en el código de servidor que Node.js proporciona para HTTP/2, HTTPS y TLS:
- Caída del servidor HTTP/2 (24.x y 26.x): cualquier cliente no autenticado puede hacer que el proceso de Node.js se detenga. El servidor solo necesita la configuración predeterminada de HTTP/2 y un manejador que responda antes de que el cuerpo de la petición haya llegado por completo. El proyecto califica este comportamiento de típico. El ataque funciona tanto sobre TLS como sobre conexiones sin cifrar.
- Divulgación de memoria en HTTP/2 (las tres ramas): un servidor puede enviar a un cliente fragmentos de su memoria, incluidas respuestas destinadas a otras conexiones. Desde la 24.22.0 y la 26.9.0 en adelante, un cliente puede provocarlo por sí mismo. En las compilaciones 22.x y en las 24.x y 26.x anteriores, puede ocurrir cuando el servidor cierra un stream a mitad de una respuesta, por ejemplo tras un tiempo de inactividad.
- Divulgación de memoria en HTTPS (las tres ramas): un cliente no autenticado puede leer memoria de otras conexiones, "incluidas claves privadas TLS y peticiones de otros usuarios", según el proyecto. Para ello se requiere un manejador que llame a
res.flushHeaders()antes de que termine el cuerpo de la petición y que después llame ares.end()con datos. Para leer la memoria filtrada, el atacante también necesita una ruta que devuelva o almacene el cuerpo de una petición. - Agotamiento de recursos en HTTP/2 (las tres ramas): un cliente puede hacer que cualquier servidor HTTP/2 predeterminado retenga memoria y descriptores de archivo de forma permanente.
- Servicio de archivos en HTTP/2 (24.x y 26.x): un cliente puede corromper la memoria del servidor cuando este sirve archivos con
stream.respondWithFile()ostream.respondWithFD(). En las tres ramas, cancelar estas descargas también puede tumbar el servidor (gravedad media). - Caída de servidor TLS (24.x y 26.x): un cliente puede tumbar un servidor TLS que usa los hooks
SNICallback,OCSPRequest,newSessionoresumeSession, oserver.addContext(). - Omisión del certificado de cliente en TLS (las tres ramas): algunos servidores aplican reglas más estrictas de certificado de cliente a determinados nombres de host. En esos servidores, un cliente aprobado para otro nombre de host puede cambiar a uno más estricto durante la renegociación de TLS 1.2 sin cumplir sus reglas.
El aviso no informa de ataques que aprovechen estos fallos.
Quién está afectado
- Servidores que ejecutan Node.js 22.x anterior a 22.23.5, 24.x anterior a 24.22.3 o 26.x anterior a 26.13.1.
- Las ramas fuera de soporte, incluidas 20.x y 25.x, no reciben corrección en esta versión. El proyecto indica que estas versiones siempre se consideran afectadas.
- Los problemas graves del lado del servidor solo importan cuando un proceso de Node.js acepta por sí mismo conexiones HTTP/2, HTTPS o TLS. Por ejemplo, los módulos integrados
node:http2,node:httpsonode:tls, o frameworks que los usan para terminar TLS o HTTP/2. - Los servidores HTTP sin cifrar creados con
node:httpno están afectados por la divulgación de memoria en HTTPS. - La caída de HTTP/2 afecta solo a las ramas 24.x y 26.x, no a la 22.x.
La exposición es mucho menor si un proxy inverso como nginx, Apache, HAProxy o un balanceador de carga termina TLS y HTTP/2, y Node.js solo recibe de él HTTP/1.1 sin cifrar. Aun así, debe actualizar, porque la versión también incluye otras correcciones y actualizaciones de dependencias.
Qué debe hacer ahora
- Localice todas las instalaciones de Node.js. No olvide los paquetes del sistema, los gestores de versiones (nvm, n, Volta), las imágenes de Docker, los runners de CI y los paneles de alojamiento que incluyen su propio Node.js.
- Actualice a la versión corregida de su rama: 22.23.5, 24.22.3 o 26.13.1. Si usa paquetes de distribución o de un proveedor (por ejemplo NodeSource o los de su distribución Linux), instale la actualización en cuanto su origen de paquetes ofrezca estas versiones.
- Abandone las versiones fuera de soporte. Si todavía ejecuta 20.x, 25.x o anteriores, pase a una rama con soporte. El aviso no incluye ninguna solución alternativa para servidores que no puedan actualizarse.
- Reconstruya las imágenes de contenedor con una imagen base de Node.js actualizada y vuelva a desplegarlas. Actualizar solo el host no cambia el Node.js que hay dentro de los contenedores.
- Reinicie todos los procesos de Node.js (unidades de systemd, PM2, contenedores Docker, etc.) para que se cargue el nuevo runtime. Después, compruebe que sus aplicaciones responden con normalidad.
- Considere rotar los secretos si estuvo expuesto. El aviso no indica si los servidores que cumplían las condiciones de la divulgación de memoria en HTTPS deben sustituir las claves TLS u otros secretos. Si un servidor HTTPS de Node.js suyo cumplía esas condiciones y era accesible desde Internet, considere renovar su certificado y su clave TLS.
Cómo comprobar si está afectado
- Ejecute
node -ven cada servidor y dentro de cada contenedor (docker exec <contenedor> node -v). Las versiones inferiores a 22.23.5, 24.22.3 o 26.13.1 en su rama, o cualquier rama fuera de soporte como 20.x o 25.x, están afectadas. - Con PM2,
pm2 listypm2 show <app>muestran qué binario y versión de Node.js usa cada aplicación. - Compruebe si sus aplicaciones terminan HTTP/2 o TLS en el propio Node.js: busque en el código
http2.createSecureServer,http2.createServer,https.createServer,tls.createServer,respondWithFile,respondWithFD,SNICallbackyaddContext. - Revise su gestor de procesos y los registros del sistema por reinicios o caídas inesperadas de Node.js. Los cierres repetidos de un servidor HTTP/2 pueden indicar intentos de provocar la caída.
Fuentes
Otros artículos
Alertas de seguridad ·
Citrix NetScaler ADC y Gateway: fallos críticos de memoria permiten denegación de servicio (CVE-2026-120868)
Citrix ha corregido nueve fallos críticos de memoria en NetScaler ADC y NetScaler Gateway que pueden provocar una denegación de servicio. CVE-2026-120868 afecta a todas las implementaciones. Actualice a 14.1-73.57, 13.1-64.39 o las versiones FIPS correspondientes.
Alertas de seguridad ·
PostgreSQL CVE-2026-6460: los usuarios de la base de datos que pueden crear objetos pueden ejecutar código en el servidor
PostgreSQL 18.7, 17.12, 16.16, 15.20 y 14.25 corrigen CVE-2026-6460 y otras 51 vulnerabilidades. Un usuario de la base de datos que puede crear objetos puede ejecutar código con el usuario del sistema operativo que ejecuta PostgreSQL. Actualice el servidor y las extensiones en C al mismo tiempo...
Alertas de seguridad ·
Ataque al hosting de Mittwald a través de un servidor MCP: servicios de administración fuera de línea, los clientes deben revisar
El proveedor de alojamiento web Mittwald está en modo de emergencia tras un ataque a través de un servidor MCP. Sus servicios de administración para clientes están desactivados. Los clientes deben basarse solo en las comunicaciones oficiales y prepararse para revisar sus cuentas y sitios web.