SSLv3 대상 POODLE 공격(CVE-2014-3566)으로부터 NGINX 및 NGINX Plus 보호

NGINX | 2014년 11월 15일

최근 보고된 SSL 프로토콜 버전 3(SSLv3)의 취약점은 중간자 공격에 악용되어 HTTPS로 암호화된 평문 전송 내용의 일부가 추출될 수 있습니다. Google 연구진은 이러한 공격이 어떻게 수행될 수 있는지 설명하는 상세한 설명을 공개했습니다.

이는 SSL/TLS 구현상의 취약점이 아니라 블록 암호를 사용할 때 발생하는 SSLv3 프로토콜 설계상의 취약점입니다. 대안인 모든 스트림 암호에도 취약점이 있으므로, 유일한 대응책은 NGINX 및 NGINX Plus 구성에서 SSLv3를 비활성화하는 것입니다.

NGINX에서 SSLv3 비활성화

NGINX 및 NGINX Plus에서는 SSLv3가 기본적으로 활성화되어 있으며, HTTP 및 메일 서비스에서 사용될 수 있습니다.

[편집자 주 – TCP 트래픽의 프록시 및 부하 분산은 이 문서가 처음 게시되었을 당시에는 완전히 지원되지 않았습니다. 완전성을 기하기 위해 다음 단계에 TCP 트래픽 보호를 포함하도록 업데이트했습니다.]

모든 NGINX 및 NGINX Plus 인스턴스에서 다음 단계를 수행합니다:

  1. 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)
  1. NGINX 또는 NGINX Plus 인스턴스가 메일 트래픽을 처리하는 경우 mail{} 구성 블록에서 동일한 지시문을 생성하거나 편집합니다.
# in the mail{} configuration blockssl_protocols TLSv1 TLSv1.1 TLSv1.2; # omit SSLv3 because of POODLE (CVE‑2014‑3566)
  1. NGINX 또는 NGINX Plus 인스턴스가 TCP 트래픽을 처리하는 경우 stream{} 구성 블록에서 동일한 지시문을 생성하거나 편집합니다.
# in the stream{} configuration blockssl_protocols TLSv1 TLSv1.1 TLSv1.2; # omit SSLv3 because of POODLE (CVE‑2014‑3566)
  1. 구성에서 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)
  1. 다음 명령을 실행하여 구성을 다시 로드합니다:
# 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를 비활성화하지 않은 서비스에 접속할 때 이 공격으로부터 보호받을 수 있습니다.

추가 자료


공유

작성자 소개

관련 블로그 게시물

시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric
NGINX | 2023. 11. 30.

시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric

이 영상에서는 KubeCon의 NGINX 부스를 찾아가, 저희가 공개한 Kubernetes Gateway API 구현을 살펴봅니다.

F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법
NGINX | 2023. 03. 23.

F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법

앱 보안을 강화하는 두 가지 방법을 소개합니다. NGINX Management Suite를 통해 WAF 운영에 대한 가시성을 높이고, NGINX App Protect WAF를 활용해 코드형 보안을 구현하는 것입니다.

Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션
NGINX | 2021. 09. 27.

Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션

개발 주체, 개발 철학, 프로덕션 환경 준비도, 보안 및 지원을 기준으로 어떤 NGINX Ingress 컨트롤러가 가장 적합한지 알아보세요.

진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법
NGINX | 2021. 07. 06.

진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법

NGINX App Protect Denial of Service(DoS)가 계층 7 DoS 공격을 방어하기 위해 완화 방법을 실시간으로 조정하는 방식을 설명합니다. 정상적인 사용자 행동과 서버 상태에 대한 모델을 생성하여 공격을 나타내는 이상 징후를 감지하고 맞춤형 완화 시그니처를 적용할 수 있습니다.

NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리
NGINX | 2021. 06. 30.

NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리

NGINX Instance Manager 버전 1.0에는 두 가지 새로운 기능이 도입되었습니다. NGINX 인스턴스에 태그와 사용자 역할을 지정하면 전체 그룹에 구성을 한 번에 적용할 수 있습니다. 인증서 검사는 만료 예정인 인증서를 감지하여 서비스 중단을 방지할 수 있도록 인증서를 교체할 수 있게 해줍니다.

Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유
NGINX | 2015. 03. 25.

Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유

Netflix가 글로벌 콘텐츠 전송 네트워크인 Open Connect의 스트리밍 미디어 기술로 NGINX를 선택한 이유를 NGINX 개발자 Gleb Smirnoff에게서 알아보세요.