🇰🇷 한글 설명
Node.js의 특정 버전에서 HTTP 요청 경로(path) 옵션에 검증되지 않은 유니코드 데이터가 사용될 경우 HTTP 요청 분할(Request Splitting) 취약점이 발생합니다. 공격자는 이를 통해 서버에 의도하지 않은 두 번째 HTTP 요청을 생성하도록 유도할 수 있습니다.
💡 쉬운 설명
사용자가 입력한 특수 문자가 서버의 요청 주소에 섞여 들어가면서, 서버가 하나의 요청을 두 개의 서로 다른 요청으로 착각하게 만드는 문제입니다. 이를 통해 공격자는 서버에 몰래 다른 명령을 내릴 수 있습니다.
🇺🇸 원문 (English)
Node.js: All versions prior to Node.js 6.15.0 and 8.14.0: HTTP request splitting: If Node.js can be convinced to use unsanitized user-provided Unicode data for the `path` option of an HTTP request, then data can be provided which will trigger a second, unexpected, and user-defined HTTP request to made to the same server.
📍 영향받는 시스템
Node.js 6.15.0 미만 버전 및 8.14.0 미만 버전
⚔️ 공격 벡터
검증되지 않은 유니코드 데이터를 HTTP 요청의 path 옵션에 주입하여 요청을 분할함
🛡️ 대응 방법
Node.js를 6.15.0 또는 8.14.0 이상의 보안 패치 버전으로 업데이트함
🔧 검증 코드
명령어 결과에 취약한 버전 범위가 출력되면 패치가 필요한 상태이며, 아무것도 출력되지 않으면 안전할 가능성이 높습니다.
node -v | grep -E 'v(6\.(0|[1-9]|[1-9][0-9])|8\.(0|[1-9]|[1-3][0-9]|1[0-3]))'