피드로 돌아가기
Node.js BlogSecurity
원문 읽기
Node.js가 HTTP/2 프로토콜의 8개 Denial of Service 취약점을 패치하여 모든 활성 릴리스 라인의 보안 업데이트 배포
August 2019 Security Releases
AI 요약
Context
Node.js를 포함한 HTTP/2 구현체들이 8개의 Denial of Service 공격에 취약한 상태였다. 공격자가 조작된 HTTP/2 프레임 시퀀스를 통해 서버의 CPU와 메모리를 과다 소비하게 만들 수 있었다.
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 프레임 대량 생성 공격 방어
- CVE-2019-9515 "Settings Flood" 패치: SETTINGS 프레임 연속 송신 공격 방어
- CVE-2019-9516 "0-Length Headers Leak" 패치: 0바이트 헤더로 인한 메모리 할당 유지 공격 방어
- CVE-2019-9517 "Internal Data Buffering" 패치: TCP 윈도우 폐쇄 상태에서 HTTP/2 윈도우 개방으로 인한 메모리 축적 방어
- CVE-2019-9518 "Empty Frames Flood" 패치: 빈 페이로드 프레임 대량 송신으로 인한 CPU 소비 방어
- Node.js 8.x(LTS "Carbon"), 10(LTS "Dubnium"), 12(Current) 버전의 모든 활성 릴리스 라인에 보안 업데이트 제공
- Linux ARMv6 빌드를 포함한 Node.js 8.x 업데이트 배포
Key Takeaway
HTTP/2 프로토콜 수준의 Denial of Service 공격은 프레임 처리 로직의 비효율성에서 비롯되며, 각 공격 벡터별로 서로 다른 리소스 소비 패턴(CPU vs 메모리)을 활용한다는 점에서 방어 메커니즘도 다층적으로 설계되어야 한다.
실천 포인트
HTTP/2 기반의 서비스를 운영하는 엔지니어는 Node.js를 비롯한 HTTP/2 구현체의 보안 업데이트를 즉시 적용해야 하며, 특히 프레임 처리 큐, 우선순위 트리 조작, 헤더 메모리 할당 로직에서 악의적 입력에 대한 리소스 제한을 구현하면 이러한 공격 클래스를 사전에 차단할 수 있다.