피드로 돌아가기
Node.js 5.7.1 (Current)
Node.js BlogNode.js Blog
Backend

Node.js가 OpenSSL 1.0.2f에서 1.0.2g로 업그레이드하여 DSA 키 파싱 Double-Free 결함, BN_hex2bn/BN_dec2bn 메모리 손상, CacheBleed 사이드 채널 공격 3가지 보안 취약점 해결

Node.js 5.7.1 (Current)

2016년 3월 2일5intermediate

Context

Node.js 5.7.0에서 path.relative(), Windows UNC 경로 분석, URL 파싱에서 여러 회귀 결함이 발생했다. 동시에 OpenSSL 1.0.2f에 포함된 CVE-2016-0705, CVE-2016-0797, CVE-2016-0702 보안 취약점이 노출되어 있었다.

Technical Solution

  • OpenSSL 1.0.2f에서 1.0.2g로 업그레이드: DSA 키 파싱 중 Double-Free 결함 해결 (CVE-2016-0705)
  • BN_hex2bn() 및 BN_dec2bn() 함수의 메모리 손상 결함 패치: 특정 엣지 케이스에서 발생하는 내부 함수 버그 해결 (CVE-2016-0797)
  • CacheBleed 사이드 채널 공격 취약점 수정: Intel Sandy Bridge 및 그 이전 마이크로아키텍처의 하이퍼스레딩 환경에서 RSA 개인키 복구 가능성 제거 (CVE-2016-0702)
  • path.relative() 출력 간소화: 불필요하게 장황한 경로 문자열 제거
  • Windows UNC 경로 분석 수정: UNC 경로 해석 로직 교정
  • 루트 디렉토리에서 접두사 포함 경로 분석 수정: 절대 경로 해석 로직 교정
  • url.parse()의 off-by-one 오류 수정: 문자열 인덱싱 경계 오류 해결
  • dgram의 기본 주소 처리 개선: offset과 length가 지정된 경우 기본 주소 핸들링 수정

Impact

OpenSSL 보안 취약점 중 Node.js 사용자에게 직접 영향을 미칠 가능성은 낮다고 평가했다. CacheBleed 공격은 Intel Sandy Bridge 이상 (Haswell 포함) 마이크로아키텍처에서는 영향을 받지 않는다.

Key Takeaway

Core Technical Committee 확대를 통해 거버넌스 구조를 강화하고, 보안 취약점 패치와 회귀 결함 수정을 동시에 처리하는 것은 메이저 런타임의 안정성 유지에 필수적이다.


Node.js 기반 프로덕션 서비스에서 RSA 암호화를 사용할 경우, OpenSSL

1.

0.2g 이상으로 업그레이드하여 CacheBleed 사이드 채널 공격으로부터 개인키 유출을 방지해야 한다. 또한 Windows 환경에서 파일 경로 분석 기능을 사용 중인 경우 v

5.

7.1 이상으로 업그레이드하여 UNC 경로 및 상대 경로 계산 오류를 해결할 수 있다.

원문 읽기