피드로 돌아가기
Node.js BlogSecurity
원문 읽기
Node.js가 HTTP/2 프로토콜의 8가지 DoS 취약점을 패치해 서버의 CPU 및 메모리 고갈 공격으로부터 보호
Node.js 12.8.1 (Current)
AI 요약
Context
Node.js를 포함한 많은 HTTP/2 구현체들이 공격자의 악의적인 프로토콜 조작으로 인한 서버 자원 고갈(Denial of Service) 공격에 노출되어 있었다.
Technical Solution
- CVE-2019-9511 "Data Dribble" 패치: 윈도우 크기 및 스트림 우선순위 조작으로 인한 1바이트 단위 데이터 큐잉 방지
- CVE-2019-9512 "Ping Flood" 패치: 연속적인 PING 프레임으로 인한 응답 큐 빌드업 방지
- CVE-2019-9513 "Resource Loop" 패치: 우선순위 트리 변조로 인한 과도한 CPU 사용 방지
- CVE-2019-9514 "Reset Flood" 패치: RST_STREAM 프레임 폭발적 생성으로 인한 메모리/CPU 소비 방지
- CVE-2019-9515 "Settings Flood" 패치: SETTINGS 프레임 스트림에 대한 응답 처리 최적화
- CVE-2019-9516 "0-Length Headers Leak" 패치: 0 길이 헤더 할당으로 인한 메모리 누수 방지
- CVE-2019-9517 "Internal Data Buffering" 패치: HTTP/2 윈도우 열림 상태에서 TCP 윈도우 폐쇄로 인한 버퍼링 공격 방지
- CVE-2019-9518 "Empty Frames Flood" 패치: 빈 페이로드 프레임 처리로 인한 과도한 CPU 소비 방지
Impact
아티클에 정량적 수치 없음
Key Takeaway
HTTP/2와 같은 복잡한 프로토콜 구현에서는 프로토콜 명세의 경계 조건과 프레임 처리 효율성을 정밀하게 검토해야 한다. 단순한 리소스 소비가 아니라 공격자의 의도적인 프로토콜 조작 패턴을 고려한 방어 메커니즘 설계가 필수적이다.
실천 포인트
HTTP/2를 사용하는 Node.js 서비스에서는
1
2.
8.1 이상 버전으로 즉시 업그레이드해야 한다. 공격자가 윈도우 크기 조작, 우선순위 변조, PING/SETTINGS 프레임 폭발, 0 길이 헤더 등 8가지 프로토콜 기반 공격을 통해 서버 CPU와 메모리를 고갈시킬 수 있기 때문이다.