🔍 CVE-2026-120216

5.9
CVSS Score
MEDIUM
2026-11-02
2026-11-02 17:17
✅ 완료

🇰🇷 한글 설명

Fastify 5.8.0부터 5.12.7 버전에서 nonzero handlerTimeout 설정 시, 스트리밍 응답의 헤더가 이미 전송된 후 타임아웃이 발생하면 ERR_HTTP_HEADERS_SENT 예외가 처리되지 않아 Node.js 프로세스가 종료됩니다. 인증되지 않은 원격 클라이언트가 단일 요청으로 서비스 거부를 유발할 수 있습니다. 기본값 handlerTimeout 0에서는 영향을 받지 않습니다.

💡 쉬운 설명

웹 서버가 스트리밍 응답을 보내는 도중 제한 시간이 초과되면 서버 전체가 멈춰버릴 수 있는 취약점입니다. 공격자가 요청 한 번만 보내도 서버가 다운되어 다른 사용자의 요청도 함께 끊깁니다.

🇺🇸 원문 (English)

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.

📍 영향받는 시스템

Fastify 5.8.0 ~ 5.12.7 (handlerTimeout이 0이 아닌 값으로 설정된 환경)

⚔️ 공격 벡터

인증 없이 스트리밍 응답을 반환하는 엔드포인트에 헤더 전송 후 타임아웃을 유발하는 요청을 1회 보내 프로세스를 강제 종료

🛡️ 대응 방법

fastify를 5.12.8 이상으로 업그레이드하거나, 임시 조치로 handlerTimeout을 0으로 설정

🔧 검증 코드

출력된 버전이 5.8.0 이상 5.12.7 이하이고 handlerTimeout이 0이 아니면 취약하며, 5.12.8 이상이면 안전합니다.

Shell / Script
npm ls fastify 2>/dev/null | grep fastify

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Node.js