피드로 돌아가기
Node.js BlogSecurity
원문 읽기
Node.js가 SSLv2 지원을 완전히 제거하여 DROWN 공격에 대한 취약점 해결
Node.js 0.12.12 (LTS)
AI 요약
Context
SSLv2는 널리 알려진 암호학적 결함으로 인해 보안상 위험하지만, 많은 서버가 여전히 이를 지원하고 있었다. DROWN 공격(https://drownattack.com/)은 클라이언트가 SSLv2를 사용하지 않더라도 서버에서 SSLv2가 활성화되면 암호를 해독할 수 있는 취약점을 악용한다. Node.js 0.12.11에서 OpenSSL 1.0.1s로 업그레이드된 이후에도 --enable-ssl2 커맨드라인 인자가 유효하게 남아있었다.
Technical Solution
- SSLv2 내부 지원 제거: OpenSSL 1.0.1s로의 업그레이드를 통해 Node.js 런타임 내 SSLv2 코드 완전 삭제
--enable-ssl2커맨드라인 인자의 동작 변경: 무시되던 상태(no-op)에서 오류 발생으로 변경하여 관리자가 명시적으로 인지하도록 강제- 모든 플랫폼 지원: Windows(32/64비트), macOS(32/64비트), Linux(32/64비트), SmartOS(32/64비트)에 일괄 적용
Key Takeaway
레거시 프로토콜 제거 시 무시되는 설정 옵션이 아닌 명시적 오류를 발생시키는 방식이 보안 정책 위반을 조기에 감지하고 사용자에게 마이그레이션 압박을 효과적으로 줄 수 있다.
실천 포인트
Node.js 기반 서비스를 운영하는 팀에서
0.
1
2.12 버전으로 업그레이드할 때 기존 구성 파일에 `--enable-ssl2` 옵션이 있다면 서비스 시작 시 오류가 발생하므로 사전에 제거하거나 버전 호환성 확인이 필요하다.