🇰🇷 한글 설명
Node.js의 HTTP 요청 처리 과정에서 `__proto__` 헤더가 포함된 요청을 받을 때 `req.headersDistinct`에 접근하면 예외 처리가 불가능한 `TypeError`가 발생합니다. 이 오류는 프로퍼티 게터 내부에서 동기적으로 발생하여 일반적인 에러 이벤트 리스너로 포착할 수 없으며, 애플리케이션을 중단시킬 수 있습니다.
💡 쉬운 설명
해커가 특수한 이름의 헤더를 담은 요청을 보내면 서버 프로그램이 예상치 못한 오류를 일으켜 갑자기 멈춰버릴 수 있습니다. 이 오류는 일반적인 방법으로는 막을 수 없어 서버 운영에 치명적일 수 있습니다.
🇺🇸 원문 (English)
A flaw in Node.js HTTP request handling causes an uncaught `TypeError` when a request is received with a header named `__proto__` and the application accesses `req.headersDistinct`.
When this occurs, `dest["__proto__"]` resolves to `Object.prototype` rather than `undefined`, causing `.push()` to be called on a non-array. This exception is thrown synchronously inside a property getter and cannot be intercepted by `error` event listeners, meaning it cannot be handled without wrapping every `req.headersDistinct` access in a `try/catch`.
* This vulnerability affects all Node.js HTTP servers on **20.x, 22.x, 24.x, and v25.x**
📍 영향받는 시스템
Node.js HTTP 서버 (20.x, 22.x, 24.x, v25.x 버전)
⚔️ 공격 벡터
HTTP 요청 헤더에 `__proto__` 필드를 포함하여 전송
🛡️ 대응 방법
Node.js를 최신 보안 패치가 적용된 버전으로 업데이트하거나, 해당 헤더를 사전에 필터링하도록 구성
🔧 검증 코드
출력된 결과에 v20, v22, v24, v25 중 하나가 포함되어 있다면 해당 취약점에 노출된 버전입니다.
node -v | grep -E 'v(20|22|24|25)\.'