피드로 돌아가기
Node.js 4.8.5 (Maintenance)
Node.js BlogNode.js Blog
Security

Node.js 4.8.5가 zlib CVE-2017-14919 취약점을 windowBits 값 자동 조정으로 해결해 DOS 공격 벡터 제거

Node.js 4.8.5 (Maintenance)

2017년 10월 24일2intermediate

Context

zlib v1.2.9의 변경사항으로 인해 raw deflate 스트림을 windowBits 8로 초기화할 때 오류가 발생했다. 일부 버전에서는 Node.js 프로세스가 충돌하거나 복구 불가능한 상태에 빠져 DOS 공격에 노출되었다.

Technical Solution

  • zlib 스트림 초기화 로직 수정: windowBits가 8로 설정된 raw deflate 스트림을 감지하는 검증 로직 추가
  • 자동 값 보정: 감지 시 windowBits를 8에서 9로 자동 조정하여 legacy 동작 방식 복제
  • 안정성 우선화: 예외 발생 대신 graceful하게 값을 조정해 프로세스 충돌 방지

Impact

DOS 공격 벡터 제거로 인한 보안 강화.

Key Takeaway

compression 라이브러리의 상위 버전 호환성 문제는 명시적 파라미터 검증과 안전한 폴백값 설정으로 해결할 수 있다.


zlib을 사용하는 Node.js 애플리케이션에서 raw deflate 스트림을 다루는 경우, windowBits 파라미터 값을 사전에 검증하고 안전한 범위 내로 정규화하면 버전 간 호환성 문제로 인한 프로세스 충돌을 예방할 수 있다.

원문 읽기