피드로 돌아가기
Node.js BlogBackend
원문 읽기
Node.js 11.3.0이 HTTP 헤더 크기 제한(8192 바이트) 및 헤더 수신 타임아웃(40초) 도입으로 3개의 DoS 취약점 패치
Node.js 11.3.0 (Current)
AI 요약
Context
Node.js HTTP 서버가 과도하게 큰 HTTP 헤더와 느린 클라이언트의 Slowloris 공격에 취약했으며, URL 파서의 javascript: 프로토콜 처리에서 호스트명 스푸핑이 가능했다.
Technical Solution
- HTTP 헤더 크기 제한: 수신된 HTTP 헤더 총 크기를 8192 바이트로 제한하여 메모리 고갈 공격 방어
- 헤더 수신 타임아웃 도입: 40초 이내에 완전히 수신되지 않은 헤더에 대해 다음 청크 수신 시 소켓 종료
- server.headersTimeout 설정 옵션 제공: 타임아웃 값을 기본 40초에서 필요에 따라 조정 가능
- server.setTimeout()과의 연계: 과도한 리소스 보유 방지 및 DoS 공격 대응 강화
- URL 파서 버그 수정: javascript: 프로토콜 파싱 시 호스트명 스푸핑 취약점 제거
- OpenSSL 1.1.0j로 업그레이드: DSA 및 ECDSA 서명 생성의 타이밍 취약점(CVE-2018-0734, CVE-2019-0735) 패치
Impact
아티클에는 정량적 성능 지표나 결과 수치가 명시되지 않음.
Key Takeaway
HTTP 서버 구현 시 헤더 크기와 수신 시간에 대한 명시적 제한을 설정하는 것이 Slowloris와 같은 자원 소진 공격 방어의 핵심이며, 타임아웃과 크기 제한의 조합이 효과적인 DoS 완화 전략이다.
실천 포인트
Node.js
1
1.
3.0 이상을 사용하는 HTTP 서버에서 기본 헤더 타임아웃(40초)과 크기 제한(8192 바이트)이 자동 적용되므로, 추가 구성이 필요한 경우에만 server.headersTimeout을 명시적으로 조정하면 Slowloris 및 대용량 헤더 공격으로부터 자동 보호를 받을 수 있다.