🇰🇷 한글 설명
Node.js v20.2.0의 http 모듈 내 llhttp 파서가 HTTP 요청을 구분할 때 CRLF 시퀀스를 엄격하게 사용하지 않는 취약점입니다. 이로 인해 CR 문자만으로도 헤더 필드가 구분될 수 있어 HTTP 요청 스머글링(HRS) 공격이 가능해집니다. 이 문제는 Node.js v16, v18, v20의 모든 활성 버전에 영향을 미칩니다.
💡 쉬운 설명
웹 서버가 요청을 읽는 규칙이 표준과 달라, 공격자가 몰래 숨겨진 요청을 끼워 넣을 수 있는 문제입니다. 이를 통해 보안 검사를 우회하거나 다른 사용자의 데이터를 가로챌 위험이 있습니다.
🇺🇸 원문 (English)
The llhttp parser in the http module in Node v20.2.0 does not strictly use the CRLF sequence to delimit HTTP requests. This can lead to HTTP Request Smuggling (HRS).
The CR character (without LF) is sufficient to delimit HTTP header fields in the llhttp parser. According to RFC7230 section 3, only the CRLF sequence should delimit each header-field. This impacts all Node.js active versions: v16, v18, and, v20
📍 영향받는 시스템
Node.js v16, v18, v20의 모든 활성 버전
⚔️ 공격 벡터
표준 CRLF 대신 CR 문자만을 사용하여 HTTP 헤더를 구분함으로써 요청 스머글링 유도
🛡️ 대응 방법
Node.js를 최신 보안 패치가 적용된 버전으로 즉시 업데이트
🔧 검증 코드
출력된 버전이 취약한 버전 범위(v16, v18, v20의 특정 패치 이전 버전)에 해당하는지 확인