상세 컨텐츠

본문 제목

OpenSSL 이메일 주소 버퍼오버플로우 취약점(CVE-2022-3786,CVE-2022-3602) 주의!

국내외 보안동향

by 알약4 2022. 11. 2. 13:24

본문

 

 

OpenSSL에서 특수하게 제작된 이메일 주소를 통해 X.509 인증서 확인 과정 중 트리거될 수 있는 버퍼 오버런(buffer overrun) 취약점 2건(CVE-2022-3786,CVE-2022-3602)이 발견되었습니다.

 

OpenSSL은 웹브라우저와 웹 서버간의 데이터를 안전하게 주고받기 위한 네트워크 프로토콜을 오픈소스로 구현한 보안 라이브러리로 보안을 필요로 하는 대부분의 통신에서 널리 사용되고 있습니다.

 

이번에 발견된 취약점들은 현재 X.509 인증서에서 이메일 주소 이름 제약을 처리하는데 사용되는 Punycode 해독 기능의 일부에 존재하며, 이는 OpenSSL 3.0.0에서 도입되었습니다.

 

OpenSSL팀은 10월 말, OpenSSL에 심각한(Critical) 제로데이 취약점이 발견되었으며 11월 1일 패치를 공개할 것이라고 미리 공지하였습니다. 하지만, 이번에 공개된 내용에는 취약점의 심각도가 심각(Critical)에서 높음(High)로 하향 조정 되었는데, 이는 OpenSSL 내부 보안정책에서 일반적인 상황에서 원격코드실행이 되는 경우를 심각(Critical)이라 분류하는데, 이번 취약점의 경우 제한된 일부 상황에서만 가능하며 최신 플랫폼에서는 오버플로우 관련 보호조치가 존재하여 심각도를 높음(High)로 하향 조정 하였다고 밝혔습니다. 

 

CVE-2022-3602 취약점은 ossl_punycode_decode 함수가 퓨니코드(Punycode)를 디코딩 할 때 4바이트가 오버플로우 되며 원격코드실행이 가능하도록 허용합니다. 해당 기능은 클라이언트 혹은 서버가 x.509 인증서의 유효성을 검사하도록 구성될 때 호출되며, 공격자는 이메일 주소 필드에 도메인에 퓨니코드가 포함된 특수하게 조작된 인증서를 통하여 해당 취약점을 악용할 수 있습니다. 

다만, 공격자가 해당 취약점을 악용하려면 다음과 같은 과정이 필요합니다. 

1) 악성 Punycode 문자열로 "nameConstraints" 필드를 포함하는 CA(인증 기관) 인증서 또는 중개 인증서를 만들어야 합니다. 단, Punycode 문자열은 "xn--"를 제외하고 최소 512바이트를 포함해야 합니다.
2) SmtpUTF8Mailbox 문자열을 지정하는 SubjectAlternateName(SAN) otherName 필드가 포함된 leaf 인증서를 만들어야 합니다. 

 

 

퓨니코드(Punycode)란?

도메인 이름 시스템(DNS)이 이름을 이해하고 관리할 수 있도록 하기 위해 모든 IDN이 인코딩되는 ASCII 문자의 시퀀스입니다. 목적은 비 ASCII 문자를 포함한 웹 주소를 분석할 수 있도록 하는 것으로, DNS는 아스키 문자만 취급할 수 있는데 이러한 한계를 극복하기 위한 것입니다. 예를 들어 "광주광역시청.kr"의 퓨니코드 버전은 "xn--hc0ba158nyzc21ed4g.kr" 입니다. 으로, 퓨니코드 버전의 접두어는 항상 “xn--”이라는 특징이 있습니다. 

 

IDN이란?

비 ASCII 문자로 구성된 최소 1개 이상의 라벨을 지닌 FQDN(Fully Qualified Domain Name)으로, 영어 중심의 도메인 이름을 보완하여 비 영어권 국가의 자국어를 인터넷 주소체계에 도입한것을 말합니다. 

 

 

 

CVE-2022-3786 취약점은 x.509 인증서 확인 및 이름 제약 검사에서 buffer overrun이 트리거 될 수 있습니다. 이 취약점은 인증서 체인 서명 확인 후 발생하며, CA가 악의적인 인증서에 서명하였거나 신뢰할 수 있는 발급자에 대한 경로를 구성하지 못했더라도 응용 프로그램이 인증서를 지속적으로 확인해야 합니다. 공격자는 인증서의 이메일 주소를 조작하여 스택에 있는  '.' 문자(10진수 46)를 포함하는 임의의 바이트 수를 오버플로우 할 수 있으며, 이로 인해 서비스 거부가 발생할 수 있습니다. 

 

이번 취약점은 신뢰할 수 없는 출처에서 받은 X.509 인증서를 확인하는 모든 OpenSSL 3.0 응용 프로그램은 취약한 것으로 간주되어야 합니다. 여기에는 TLS 클라이언트 및 TLS 클라이언트 인증을 사용하도록 구성된 TLS 서버가 포함됩니다.

 

 

영향받는 버전

 

OpenSSL 3.0.0 ~ 3.0.6 버전

* OpenSSL 1.0.2, 1.1.1 및 기타 이전 버전은 영향을 받지 않음

 

 

임치조치방법

TLS 서버를 운영하는 사용자는 수정 사항이 적용될 때까지 사용 중인 경우 TLS 클라이언트 인증 비활성화

 

패치방법

 

OpenSSL 3.0.7 버전으로 업데이트

 

 

 

 

 

참고 : 

https://www.openssl.org/blog/blog/2022/11/01/email-address-overflows/

https://blog.checkpoint.com/2022/11/01/openssl-vulnerability-cve-2022-3602-remote-code-execution-and-cve-2022-3786-denial-of-service-check-point-research-update/

https://www.boho.or.kr/data/secNoticeView.do?bulletin_writing_sequence=66999 

 

관련글 더보기

댓글 영역