CVE-2026-120216 Denegación de servicio en fastify por excepción no capturada en handlerTimeout con respuestas en streaming
En fastify 5.8.0 a 5.12.7, con un handlerTimeout distinto de cero y una ruta que devuelve una respuesta en streaming, una petición que mantiene el stream abierto tras el timeout provoca un ERR_HTTP_HEADERS_SENT no capturado que termina el proceso de Node.js. Un cliente remoto no autenticado puede desencadenarlo con una sola petición; solo afecta la disponibilidad y requiere el handlerTimeout no predeterminado. Se corrige en fastify 5.12.8.
CVSS 3.1
- Probabilidad de explotación · EPSS del 09/110,3 % · percentil 26
- Explotada activamenteNo confirmada
- Exploit públicoNo conocido
Afectados
fastify
desde 5.8.0 hasta antes de 5.12.8
Qué hacer
- Verificá si usás fastify y en qué versión.
- Actualizá a la versión corregida que indique el fabricante en su aviso o aplicá su mitigación.
- Revisá registros y accesos de los sistemas expuestos para descartar un uso previo.
Calculadora CVSS
CVSS 3.1 · 5.9 MEDIA
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
- Vector de ataqueRed
- Complejidad del ataqueAlta
- Privilegios requeridosNinguno
- Interacción del usuarioNinguna
- AlcanceSin cambio
- ConfidencialidadNinguna
- IntegridadNinguna
- DisponibilidadAlta
Descripción original
fastify is a web framework for Node.js. In versions 5.8.0 through 5.12.7, when the server is configured with a nonzero handlerTimeout and a route returns a streaming response, a request whose stream has already sent its headers but stays open past the timeout crashes the server. When the timeout fires, Fastify tries to send a new error response on a response that has already started, raising an uncaught ERR_HTTP_HEADERS_SENT that terminates the Node.js process and interrupts any other in-flight requests. An unauthenticated remote client can trigger this with a single request to an affected streaming endpoint, so the impact is availability only, and exploitation requires the non-default handlerTimeout to be set. The default handlerTimeout of 0 is not affected. The issue is fixed in fastify 5.12.8, and users should upgrade to 5.12.8 or later. As a workaround, set handlerTimeout to 0, which disables the affected timeout path.
Referencias (2)
Resumen traducido automáticamente de la descripción original. Fuente: Nureq Monitor. Cómo funciona.