🇰🇷 한글 설명
Node.js의 ServerResponse#writeHead 함수의 reason 인자에서 CRLF 인젝션 취약점이 발생하여 원격 공격자가 임의의 HTTP 헤더를 주입하고 HTTP 응답 분할(response splitting) 공격을 수행할 수 있습니다. 0.10.47 미만, 0.12.16 미만, 4.6.0 미만, 6.7.0 미만의 버전이 영향을 받습니다.
💡 쉬운 설명
웹 서버가 HTTP 응답을 만들 때 사용자 입력을 제대로 검증하지 않아서, 공격자가 가짜 HTTP 헤더를 끼워넣을 수 있습니다. 이를 이용해 캐시 중독, 세션 하이재킹 등의 공격이 가능합니다.
🇺🇸 원문 (English)
CRLF injection vulnerability in the ServerResponse#writeHead function in Node.js 0.10.x before 0.10.47, 0.12.x before 0.12.16, 4.x before 4.6.0, and 6.x before 6.7.0 allows remote attackers to inject arbitrary HTTP headers and conduct HTTP response splitting attacks via the reason argument.
📍 영향받는 시스템
Node.js 0.10.x (<0.10.47), 0.12.x (<0.12.16), 4.x (<4.6.0), 6.x (<6.7.0)
⚔️ 공격 벡터
reason 파라미터에 CRLF 문자(\r\n)를 포함시켜 HTTP 헤더 주입 및 응답 분할 공격 수행
🛡️ 대응 방법
Node.js를 0.10.47, 0.12.16, 4.6.0, 6.7.0 이상의 패치 버전으로 업그레이드
🔧 검증 코드
node -v 출력이 위의 정규식과 매칭되면 안전한 버전, 매칭되지 않으면 취약한 버전입니다.
node -v | grep -E '^v(0\.10\.(4[7-9]|[5-9][0-9])|0\.12\.(1[6-9]|[2-9][0-9])|[4-9]\.|[1-9][0-9])' && echo 'Safe' || echo 'Vulnerable'