🇰🇷 한글 설명
Node.js HTTP 클라이언트의 결함으로 인해 Node.js 기반 포워딩 프록시에서 요청 비동기화(Request Desynchronization)가 발생할 수 있습니다. 특정 헤더가 사용자 영역에서 생략되더라도 내부적으로는 HTTP 메시지 프레이밍에 사용될 수 있어, 특히 Content-Length 헤더가 숨겨진 상태로 요청 본문이 전달될 위험이 있습니다.
💡 쉬운 설명
웹 서버를 전달해주는 프로그램이 실제 데이터와 헤더 정보를 다르게 인식하여 통신 흐름이 꼬일 수 있는 문제입니다. 이로 인해 공격자가 보낸 요청이 다른 사용자의 요청과 섞이거나 잘못 전달될 위험이 있습니다.
🇺🇸 원문 (English)
A flaw in Node.js HTTP client can cause a request desynchronization for Node.js-based forwarding proxies that rebuild outbound headers from the visible `IncomingMessage` headers while piping the original body to a reused backend connection.
Node.js can omit headers beyond `maxHeadersCount` / `maxHeaderPairs` from `req.headers`, `req.rawHeaders`, and `req.headersDistinct`, while still using those omitted headers internally for HTTP message framing. In particular, `Content-Length` can be hidden from userland while the request body is still delivered.
This vulnerability affects all supported release lines: **Node.js 22**, **Node.js 24**, and **Node.js 26**.
📍 영향받는 시스템
Node.js 22, Node.js 24, Node.js 26 (모든 지원 릴리스 라인)
⚔️ 공격 벡터
헤더 개수 제한을 이용해 Content-Length와 같은 핵심 헤더를 숨긴 채 요청을 보내 프록시의 요청 비동기화를 유도함
🛡️ 대응 방법
Node.js를 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 취약한 버전(Node.js 22, 24, 26의 패치 전 버전)인지 확인하십시오.