피드로 돌아가기
Node.js 0.10.33 (Stable)
Node.js BlogNode.js Blog
Security

Node.js 0.10.33이 POODLE 취약점(CVE-2014-3566)에 대응해 SSLv2/SSLv3을 기본값으로 비활성화

Node.js 0.10.33 (Stable)

2014년 10월 23일6intermediate

Context

Node.js는 기본적으로 SSLv2와 SSLv3 프로토콜을 지원하고 있었으나, POODLE 취약점(CVE-2014-3566)으로 인해 이들 프로토콜이 보안상 위험으로 판단되었다. 기존 환경에서는 개발자가 명시적으로 프로토콜을 제한하지 않으면 취약한 SSL 버전으로의 협상이 가능했다.

Technical Solution

  • SSLv2/SSLv3 기본 비활성화: 기본 프로토콜 협상 메서드(SSLv23_method)에서 SSL_OP_NO_SSLv3|SSL_OP_NO_SSLv2 옵션 추가 설정
  • 레거시 지원 옵션 제공: --enable-ssl2 또는 --enable-ssl3 플래그로 필요한 경우에만 재활성화 가능하도록 설계
  • 프로토콜 선택 유연성 유지: secureProtocol을 'SSLv3_method' 또는 'SSLv2_method'로 명시하면 해당 프로토콜만 사용 가능
  • 사용자 정의 옵션 존중: secureOptions를 명시한 경우 Node.js의 기본 설정 적용 안 함
  • OpenSSL 업데이트: OpenSSL을 1.0.1j로 업데이트하여 추가 CVE 대응

Key Takeaway

기본값의 보안 강화는 호환성 저하를 초래할 수 있으므로, 마이그레이션 경로(명시적 플래그, 프로그래매틱 옵션)를 제공하고 다양한 API 구성에서 동작을 검증하는 단계적 접근이 필수적이다.


Node.js를 사용하는 개발 팀에서

0.

1

0.33으로 업그레이드할 때, SSLv3만 지원하는 레거시 클라이언트/서버(예: Internet Explorer 6)와 통신하는 경우 'wrong version number' 에러가 발생할 수 있으므로, 사전에 클라이언트 스택을 점검하고 필요시 --enable-ssl3 플래그를 통해 선택적으로 재활성화할 수 있다.

원문 읽기