최근 보고된 SSL 프로토콜 버전 3(SSLv3)의 취약점은 중간자 공격에 악용되어 HTTPS로 암호화된 평문 전송 내용의 일부가 추출될 수 있습니다. Google 연구진은 이러한 공격이 어떻게 수행될 수 있는지 설명하는 상세한 설명을 공개했습니다.
이는 SSL/TLS 구현상의 취약점이 아니라 블록 암호를 사용할 때 발생하는 SSLv3 프로토콜 설계상의 취약점입니다. 대안인 모든 스트림 암호에도 취약점이 있으므로, 유일한 대응책은 NGINX 및 NGINX Plus 구성에서 SSLv3를 비활성화하는 것입니다.
NGINX에서 SSLv3 비활성화
NGINX 및 NGINX Plus에서는 SSLv3가 기본적으로 활성화되어 있으며, HTTP 및 메일 서비스에서 사용될 수 있습니다.
[편집자 주 – TCP 트래픽의 프록시 및 부하 분산은 이 문서가 처음 게시되었을 당시에는 완전히 지원되지 않았습니다. 완전성을 기하기 위해 다음 단계에 TCP 트래픽 보호를 포함하도록 업데이트했습니다.]
모든 NGINX 및 NGINX Plus 인스턴스에서 다음 단계를 수행합니다:
- HTTP 트래픽에 사용되는 프로토콜 집합에서 SSLv3를 제외합니다. 다음
ssl_protocols지시어가http{}블록에 없으면 추가하고, 이미 있으면 매개변수 목록에서SSLv3를 제거하도록 편집합니다.
# in the http{} configuration blockssl_protocols TLSv1 TLSv1.1 TLSv1.2; # omit SSLv3 because of POODLE (CVE‑2014‑3566)- NGINX 또는 NGINX Plus 인스턴스가 메일 트래픽을 처리하는 경우
mail{}구성 블록에서 동일한 지시문을 생성하거나 편집합니다.
# in the mail{} configuration blockssl_protocols TLSv1 TLSv1.1 TLSv1.2; # omit SSLv3 because of POODLE (CVE‑2014‑3566)- NGINX 또는 NGINX Plus 인스턴스가 TCP 트래픽을 처리하는 경우
stream{}구성 블록에서 동일한 지시문을 생성하거나 편집합니다.
# in the stream{} configuration blockssl_protocols TLSv1 TLSv1.1 TLSv1.2; # omit SSLv3 because of POODLE (CVE‑2014‑3566)- 구성에서
ssl_protocols지시문의 다른 모든 인스턴스를 찾습니다(이 지시문은server{}구성 블록에 포함될 수 있으며, 해당 블록은http{},mail{},stream{}블록 내에 있을 수 있습니다). 이러한ssl_protocols지시문을 제거하는 것이 좋지만, 최소한 매개변수 목록에서SSLv3를 제거하십시오:
# in every server{} block ssl_protocols TLSv1 TLSv1.1 TLSv1.2;# omit SSLv3 because of POODLE (CVE‑2014‑3566)- 다음 명령을 실행하여 구성을 다시 로드합니다:
# nginx –s reload이 변경 사항은 어떤 영향을 미치나요?
모든 최신 브라우저와 API 클라이언트는 TLSv1 이상을 지원합니다. SSLv3를 비활성화하면 Internet Explorer 6을 사용하는 WindowsXP 사용자에게 불편이 발생할 수 있습니다. CloudFlare의 추산에 따르면 WindowsXP 사용자(전체 트래픽의 3.12%를 차지) 중 1.12%가 영향을 받으며, 이는 사용자 약 3,000명 중 1명에 해당합니다.
이 변경 사항은 웹 크롤러 및 기타 자동화된 봇 트래픽에도 영향을 미칠 수 있습니다.
미래
In an SSL 다운그레이드 공격에서는 공격자가 SSL/TLS 핸드셰이크를 방해하여 클라이언트와 서버가 이전 버전의 SSL/TLS를 선택하도록 만들 수 있습니다. 이를 이용해 SSLv3를 강제로 선택하게 하면 SSL/TLS 연결이 POODLE 공격에 취약해질 수 있습니다. 서버에서 SSLv3를 비활성화하면 이러한 공격을 방지할 수 있습니다.
Google은 강제 SSL/TLS 다운그레이드를 방지하기 위해 TLS_FALLBACK_SCSV라는 SSL/TLS 확장을 제안했습니다. [편집자 주 – 이 확장은 2015년 4월에 RFC 7507로 채택되었습니다.] 이 확장은 향후 OpenSSL에 도입되고, 이에 대응하는 클라이언트 측 지원 기능도 주요 브라우저에 추가될 수 있습니다. 그러면 웹 서비스에서 SSLv3를 지원할 수 있지만, 레거시 클라이언트는 여전히 취약합니다.
그럼에도 불구하고 이 취약점은 SSLv3의 종말을 알리는 결정타가 될 수 있으며, 전반적으로 더 간단하고 신뢰할 수 있는 해결책이 될 수 있습니다.
그 밖에 무엇을 할 수 있나요?
클라이언트 소프트웨어가 SSLv3를 지원하지 않도록 업데이트하는 것이 좋습니다. 이렇게 하면 아직 SSLv3를 비활성화하지 않은 서비스에 접속할 때 이 공격으로부터 보호받을 수 있습니다.
추가 자료
- 최초 취약점 보고서
- ImperialViolet의 더 간결한 설명
- 여러 공급업체에서 권고 사항을 발표했으며, Ubuntu의 권고 사항이 특히 포괄적입니다
작성자 소개

관련 블로그 게시물
시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric
이 영상에서는 KubeCon의 NGINX 부스를 찾아가, 저희가 공개한 Kubernetes Gateway API 구현을 살펴봅니다.
F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법
앱 보안을 강화하는 두 가지 방법을 소개합니다. NGINX Management Suite를 통해 WAF 운영에 대한 가시성을 높이고, NGINX App Protect WAF를 활용해 코드형 보안을 구현하는 것입니다.
Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션
개발 주체, 개발 철학, 프로덕션 환경 준비도, 보안 및 지원을 기준으로 어떤 NGINX Ingress 컨트롤러가 가장 적합한지 알아보세요.
진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법
NGINX App Protect Denial of Service(DoS)가 계층 7 DoS 공격을 방어하기 위해 완화 방법을 실시간으로 조정하는 방식을 설명합니다. 정상적인 사용자 행동과 서버 상태에 대한 모델을 생성하여 공격을 나타내는 이상 징후를 감지하고 맞춤형 완화 시그니처를 적용할 수 있습니다.
NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리
NGINX Instance Manager 버전 1.0에는 두 가지 새로운 기능이 도입되었습니다. NGINX 인스턴스에 태그와 사용자 역할을 지정하면 전체 그룹에 구성을 한 번에 적용할 수 있습니다. 인증서 검사는 만료 예정인 인증서를 감지하여 서비스 중단을 방지할 수 있도록 인증서를 교체할 수 있게 해줍니다.
Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유
Netflix가 글로벌 콘텐츠 전송 네트워크인 Open Connect의 스트리밍 미디어 기술로 NGINX를 선택한 이유를 NGINX 개발자 Gleb Smirnoff에게서 알아보세요.