🇰🇷 한글 설명
Node.js 20의 HTTP 파서가 HTTP/1 헤더 종료를 부정확하게 처리하여 공격자가 요청 스머글링 공격을 수행할 수 있습니다. 이를 통해 프록시 기반의 접근 제어를 우회하고 무단 요청을 제출할 수 있습니다. llhttp v9 이상으로 업그레이드하면 해결됩니다.
💡 쉬운 설명
Node.js 20에서 웹 요청의 끝을 판단하는 방식에 결함이 있어서 공격자가 보안 필터를 우회할 수 있습니다. 마치 우편의 목적지를 조작하듯이 서버가 의도하지 않은 요청을 받도록 만들 수 있습니다.
🇺🇸 원문 (English)
A flaw in Node.js 20's HTTP parser allows improper termination of HTTP/1 headers using `\r\n\rX` instead of the required `\r\n\r\n`.
This inconsistency enables request smuggling, allowing attackers to bypass proxy-based access controls and submit unauthorized requests.
The issue was resolved by upgrading `llhttp` to version 9, which enforces correct header termination.
Impact:
* This vulnerability affects only Node.js 20.x users prior to the `llhttp` v9 upgrade.
📍 영향받는 시스템
Node.js 20.x (llhttp v9 이전 버전)
⚔️ 공격 벡터
HTTP/1 헤더 종료 형식을 \r\n\rX로 조작하여 요청 스머글링을 수행하고 프록시 필터를 우회
🛡️ 대응 방법
Node.js를 최신 버전으로 업그레이드하거나 llhttp를 v9 이상으로 업데이트
🔧 검증 코드
llhttp@9 이상이 나오면 안전하고, 9 미만이거나 결과가 없으면 즉시 업그레이드 필요
npm list llhttp 2>/dev/null | grep -oE 'llhttp@[0-9]+'