2022년 10월 31일, 새로운 OpenSSL 취약점이 발견되었으며 취약점 번호는 CVE-2022-3786 및 CVE-2022-3602이다.
이번 취약점은 X.509 Email Address Buffer Overflow에 관한 취약점으로, 특히 OpenSSL 3.0.0에 도입된 X.509 인증서 확인을 위한 이름 제약 조건 검사 기능을 처리하는데 사용되는 Punycode로 인해 overflow가 발생할 수 있다.
Punycode:
- 유니코드 문자열을 호스트 이름에서 허용된 문자만으로 인코딩하는 방법으로 유니코드 스트링을 ASCII 스트링으로 변환하는 데 사용하는 알고리즘
- 문자, 숫자, 하이픈(-)만 사용할 수 있고 문자열은 항상 “XN–” 문자로 시작한다.
- 유니코드가 지원하는 모든 언어로 다국어 도메인이름(IDNA: Internationalized Domain Names in Application)을 쓸 수 있게 한 IDNA의 일부로 변환은 전적으로 클라이언트(web browser) 측면에서 이뤄진다.
- ex) 크리미널아이피.kr → xn--p50b76nozbb6p9vcq7stgi.kr
이 글에서는 새로운 OpenSSL 취약점 특징에 대한 분석과, 취약점이 발견된 지 약 15일이 지난 현재, 아직도 패치되지 않은 OpenSSL 서버 통계를 분석했다.
OpenSSL 취약점 특징 및 취약한 버전 (CVE-2022-3786, CVE-2022-3602)
새로운 OpenSSL 취약점이 공개되었을 때 Buffer Overflow 취약점인 데다, RCE (Remote Code Execution, 원격 코드 실행) 공격이 가능해서 2014년에 발견된 보안 업계의 악몽과도 같은 사건인 OpenSSL Heartbleed 사태가 다시 발생하는 것이 아니냐는 우려가 있었다.
하지만 취약점이 발현되려면 클라이언트와 서버단 양쪽에서 증명서를 교환 및 검증하는 양방향 SSL 인증 설정이 되어 있어야 한다. 또한, 최신 플랫폼에는 이미 스택 오버플로 방지 기능이 포함되어 있고, 일부 Linux 배포판에서는 RCE와 DoS (denial-of-service attack, 서비스 거부 공격) 발현이 불가능한 것으로 확인됐다.
이러한 취약점 발현 복잡성으로 CVE 점수가 Critical → High로 낮춰졌고 다행히 Heartbleed 급의 끔찍한 이슈는 발생하지 않았다. 그래도 High 급의 취약점인 만큼 자세한 내용을 알아볼 필요는 있다. 지금부터 그 특징을 살펴보겠다.
취약점 특징
- CVE-2022-3786: 공격자가 X.509 인증서 내의 이메일 주소를 조작하여 ‘.’ 를 포함하는 임의 바이트 수를 overflow 할 수있다.
- CVE-2022-3602: 공격자가 Punycode를 디코딩할 때 스택 상에서 4바이트를 overflow하도록 악의적인 이메일을 작성할 수 있으며, 이를 통해 RCE 공격 또는 DoS 공격이 발생할 수 있다.
취약한 버전과 보안 패치된 버전
OpenSSL은 웹 브라우저와 서버 간의 통신 프로토콜인 SSL/TLS를 오픈소스로 구현한 보안 라이브러리로 널리 사용되고 있다. OpenSSL은 이번 취약점으로 잠재적 공격이 예상되기 때문에 즉시 3.0.7 버전으로 업데이트하라고 보안 패치를 권고하고 있다.
취약한 제품
OpenSSL 버전 3.0.0~3.0.6
- OpenSSL 1.0.2, 1.1.1 는 영향 받지 않음
취약한 OpenSSL 버전 식별하는 방법
일반적으로 OpenSSL은 서버 내의 라이브러리이기 때문에 리눅스의 ‘openssl version’ 에서 확인 가능하지만 외부에서는 정확한 버전을 식별하기는 힘들다.
그러나 Apache를 사용하고 있는 Web Server의 경우 HTTP 헤더 영역에 OpenSSL의 버전을 확인할 수 있는 정보를 제공하고 있다.
아래 IP 주소 예시를 보면, Fedora OS에서 Apache 2.4.54를 사용하고 있고 OpenSSL 3.0.5 버전을 사용하고 있음을 확인할 수 있다.

Apache 웹 서버의 HTTP 헤더로 확인한 CVE-2022-3786, CVE-2022-3602 OpenSSL 취약점 보유 IP 주소
Security OSINT 검색엔진 Criminal IP (https://www.criminalip.io) 에 Openssl을 검색하면 약 210만 개의 IP 주소가 OpenSSL을 사용하고 있음을 알 수 있다.
Search Query :Product:OpenSSL

Criminal IP 에 “product: OpenSSL” 쿼리로 검색한 결과, 약 210만 건의 IP 주소가 검색된다
새로운 OpenSSL 취약점에 영향을 받는 전세계 1만 4천 개 웹 서버
하지만 위 방법은 취약점 유무와 관계없이 OpenSSL 을 쓰는 모든 시스템이 검색되기 때문에 이 취약점에 노출된 시스템을 보다 정확하게 찾기 위해서 cve_id 필터를 사용하는 것을 추천한다. cve_id: CVE-2022-3786 으로 검색하면 이 글을 쓰는 시점에서 현재 openssl 취약점이 발견된 지 2주 이상 지났음에도 아직 전세계 14,527개의 IP 주소에서 취약한 OpenSSL을 사용하고 있음을 알 수 있다.
Search Query :cve_id:cve-2022-3786

새로운 OpenSSL 취약점 CVE-2022-3786 을 보유한 전세계 OpenSSL 사용 서버가 14,527 대 발견되었다
취약한 OpenSSL 사용 국가 통계, 전체 중 26%가 미국
국가 통계를 살펴보면 OpenSSL 취약점 보유 서버 상위 다섯 개 국가는 미국, 일본, 독일, 중국, 영국이다.
그 중 미국은 3,814 건으로 전체 14,527건 중 26.25%를 차지해 취약한 버전의 OpenSSL을 압도적으로 많이 사용하고 있다.

전세계 OpenSSL 취약점 cve-2022-3786 보유 서버 국가 통계, 미국이 전체의 26%를 차지한다
취약한 OpenSSL 사용 ASN 통계, 상위 10개 중 대부분이 Cloud 서비스 ASN
취약한 OpenSSL을 사용하는 전체 IP주소를 ASN 통계로 살펴보면 MS, Amazon, Google, OVH, DigitalOcean 등 Cloud 서비스를 제공하는 기업의 ASN이 전체의 70%에 해당한다.
이는, 클라우드 서버 내에 관리되고 있지 않는 OpenSSL가 많다는 의미이다.
Cloud 제공 서비스 업체 외에도, 항저우 알리바바 등 일반 기업에서도 관리를 하지 않고 위험 자산으로 방치되고 있는 것으로 보인다.

전세계 OpenSSL 취약점 cve-2022-3786 보유 서버 ASN 통계, 상위 10 개 중 7개 가 Cloud 제공 업체의 ASN이다
취약한 OpenSSL 버전을 사용하는 IP 주소 인텔리전스 분석
OpenSSL 취약점을 보유한 3.0.5 버전의 OpenSSL을 사용하는IP 주소를 Crimina lP 인텔리전스로 분석한 결과 22, 80, 443 포트가 취약한 상태였다.
이번에 발표된 CVE-2022-3786, CVE-2022-3602를 포함해 총 네 개의 취약점을 보유한 IP 주소로, 3개의 Openssl 취약점(CVE-2022-3786, CVE-2022-3602, CVE-2022-3358)과 1개의 OpenSSH 취약점(CVE-2021-36368)이 발현 될 수 있다.
만약 Overflow를 통해 RCE가 발현 되는 OpenSSL 취약점이 해당 서버에 악용되어 RCE가 성공적으로 실행된다면 이 서버는 봇으로 사용될 위험도 있다.
Criminal IP 인텔리전스 분석 결과에 따르면 Inbound Score를 Critical로 분류하고 있다. 즉 해당 IP 주소가 Source IP로 내부에 접근할 때 위험한 IP 주소로 분류되며, 보안 담당자들은 이러한 IP 주소를 방화벽에서 차단 해야 한다.

새로운 OpenSSL 취약점을 보유한 IP 주소의 Criminal IP 인텔리전스 분석 결과, 총 네 개의 취약점과 연결되어있다.

OpenSSL 취약점을 보유한 IP 주소의 Criminal IP 인텔리전스 분석 결과, 22, 80, 443 포트가 취약한 상태이다
OpenSSL 취약점 조치 방안
OpenSSL versions 3.0.7 버전으로 업그레이드 권고
Download 주소: https://github.com/openssl/openssl/tags
이번 취약점이 복잡성과 최신 플랫폼 안정성으로 인해 CVE 점수가 Critical에서 High로 낮아 졌다고 하지만, 아예 위험하지 않다는 것은 아니다. 취약한 제품을 사용한다는 사실이 외부에서 식별 가능하다는 점 만으로도 공격자들은 다양한 공격을 시도하기 때문이다.

Criminal IP 에서 수집하는 Scanner IP, 여러 포트로 스캔 요청을 했다
CIP에서 수집하는 Scanner IP (https://www.criminalip.io/ko/intelligence/statistics) 의 공격 이력만 보아도 여러 포트로 다수의 스캔 요청을 하고 있다. 따라서 관리하고 있는 서버 중 외부에 노출되어 있는 포트와 취약한 제품들에 대해 보다 철저한 관리가 필요하며, 취약한 부분이 있다면 빠르게 보안 패치 등의 조치를 취하는 것이 중요하다.
관련하여 Apache 웹 서버 설치 소프트웨어로 인해 발생하는 웹 취약점에 대한 IP 인텔리전스 분석 글을 참고해도 좋다.
데이터 출처 : Criminal IP (https://www.criminalip.io)
관련 글 :
댓글 남기기