피드로 돌아가기
Node.js BlogSecurity
원문 읽기
Node.js 8.14.0이 HTTP 헤더 크기 제한과 타임아웃 메커니즘을 도입해 DoS 공격 5가지 CVE 취약점 패치
Node.js 8.14.0 (LTS)
AI 요약
Context
Node.js HTTP 서버가 대규모 헤더, Slowloris 공격, URL 파싱 오류, HTTP 요청 분할 등 5가지 보안 취약점에 노출되어 있었다. OpenSSL의 DSA 서명 생성 및 ECC 스칼라 곱셈의 타이밍 취약점도 함께 존재했다.
Technical Solution
- HTTP 헤더 크기 제한: 수신된 HTTP 헤더의 총합을 8192 바이트 이하로 제한하여 DoS 공격 방어 (CVE-2018-12121)
- 헤더 수신 타임아웃: 40초 내에 헤더를 완전히 수신하지 못하면 다음 청크 수신 시 소켓 파괴, server.headersTimeout으로 조정 가능 (CVE-2018-12122)
- HTTP 클라이언트 경로 검증: 요청 경로에 \u0021 - \u00ff 범위 밖의 2바이트 문자 엄격히 거부, --security-revert=CVE-2018-12116 플래그로 필요시 되돌릴 수 있음 (CVE-2018-12116)
- URL 파서 호스트명 스푸핑 방지: javascript: 프로토콜 사용 시 url.parse() 함수의 호스트명 위조 버그 수정 (CVE-2018-12123)
- OpenSSL 업그레이드: OpenSSL을 1.0.2q로 업그레이드하여 DSA 및 ECC 타이밍 취약점 해결 (CVE-2018-0734, CVE-2018-5407)
실천 포인트
Node.js
8.x LTS를 운영하는 팀은 즉시
8.
1
4.0 이상으로 업그레이드해야 하며, 특히 server.headersTimeout을 서비스 특성에 맞게 설정하면 리소스 고갈형 DoS 공격으로부터 효과적으로 방어할 수 있다.