피드로 돌아가기
Node.js 6.11.5 (LTS)
Node.js BlogNode.js Blog
Security

Node.js가 zlib 라이브러리의 CVE-2017-14919 취약점을 windowBits 자동 조정으로 패치해 DOS 공격 벡터 제거

Node.js 6.11.5 (LTS)

2017년 10월 24일3intermediate

Context

zlib v1.2.9에서 raw deflate 스트림을 windowBits 8로 초기화할 때 예외가 발생하는 문제가 도입되었다. 일부 Node.js 버전에서는 이 예외로 인해 프로세스가 크래시되고 복구 불가능한 상태에 빠지게 되어 DOS 공격 벡터가 될 수 있었다.

Technical Solution

  • zlib 압축 스트림 초기화 로직 변경: windowBits가 8로 설정된 경우 자동으로 9로 조정
  • 레거시 동작 방식 복제: 이전 zlib 버전의 동작을 모방하여 하위 호환성 유지
  • 예외 대신 정상 작동: 크래시 대신 graceful하게 처리하여 DOS 벡터 제거

Key Takeaway

보안 취약점 해결 시 단순 예외 처리가 아닌 근본적인 동작 방식 조정으로 예외 상황 자체를 회피하면, 시스템 안정성과 보안을 동시에 확보할 수 있다.


Node.js를 사용하는 프로덕션 서비스에서 zlib를 통해 압축 스트림을 처리할 때, 버전

6.

1

1.5 이상으로 업그레이드하면 windowBits 8 설정에 따른 크래시 위험을 제거할 수 있다.

원문 읽기