피드로 돌아가기
Node.js 12.8.1 (Current)
Node.js BlogNode.js Blog
Security

Node.js가 HTTP/2 프로토콜의 8가지 DoS 취약점을 패치해 서버의 CPU 및 메모리 고갈 공격으로부터 보호

Node.js 12.8.1 (Current)

2019년 8월 15일6intermediate

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와 메모리를 고갈시킬 수 있기 때문이다.

원문 읽기