OpenSSL 프로젝트는 범용 암호화 및 보안 통신을 위한 강력한 상용 등급의 ​​모든 기능을 갖춘 도구 키트인 OpenSSL 소프트웨어를 개발 및 유지 관리합니다. OpenSSL에는 SSL TLS 프로토콜의 오픈 소스 구현이 포함되어 있습니다. C 프로그래밍 언어로 작성된 코어 라이브러리는 기본 암호화 기능을 구현하고 다양한 유틸리티 기능을 제공합니다.

 

OpenSSL 취약점 개요 :

  • (CVE-2022-3602) ossl_punycode_decode(), Punycode 도메인 이름 "xn--" 버퍼 오버플로.
  • (CVE-2022-3786) ossl_a2ulabel(), 점 "."을 포함하는 Punycode 문자열 버퍼 오버플로를 보장합니다.

스택 기반 버퍼 오버플로는 X.509 인증서 확인 프로세스, 특히 ossl_punycode_decode 버퍼에서 트리거 될 수 있습니다. 공격자는 악의적인 인증서를 만들어, 여러 시나리오에서 ossl_punycode_decode 버퍼를 오버플로할 수 있습니다. 이 버퍼 오버플로는 DoS공격 또는 잠재적으로 RCE(원격 코드 실행)를 발생할 수 있습니다.

 

취약점의 식별자는 CVE-2022-3602, CVE-2022-3786 이며 각각 CVSS(v3) 7.8점 과 CVSS(v3)5.8점으로 평가되었습니다.

 

기술 개요 :

  • CVE-2022-3602 관련 :

이 취약점은 punycode.c에 있는 OpenSSL Punycode 라이브러리(ossl_punycode_decode) 내부의 Off-by-one 오류로 인해 발생하는 4바이트(32비트) 버퍼 오버플로로 인해 발생합니다. 최대 길이인수(unsigned int *pout_length)는 할당된 요소의 수이며 범위를 벗어난 경우 확인되지 않습니다. 취약한 함수 ossl_punycode_decode() "xn--"으로 시작하는 모든 하위 도메인을 구문 분석합니다. , 최대 길이보다 정확히 하나 더 많은 32비트 문자로 디코딩하는 모든 Punycode 문자열은 디코딩 된 문자열 바로 다음의 메모리를 덮어씁니다.

 

  • CVE-2022-3786 관련 :

이 취약점은 punycode.c 내의 osl_a2ulabel 함수에 있습니다. Punycode로 인코딩된 문자열의 잘못된 유효성 검사로 인해 발생합니다. 버퍼 바로 뒤에 저장된 메모리 주소로 인해 부분적인 주소 덮어쓰기가 발생하여 악용 가능한 메모리 손상이 발생할 수 있습니다. 코드는 대부분 무한 while 루프에 포함되어 있으며, 이는 각 레이블(, 마침표 사이의 이름 부분)을 소진될 때까지 처리합니다. 레이블이 xn-(표준 레이블)로 시작하지 않으면 기본적으로 출력 버퍼에 직접 복사됩니다. 레이블이 xn--로 시작하면 else 문이 실행되고 취약한 osl_punycode_decode 함수를 사용하여 Punycode로 인코딩 된 문자열을 디코딩합니다.

 

취약한 Punycode 함수는 libcrypto.so(또한 libcrypto.a)공유 라이브러리의 일부입니다.  인증서 검증 후 인증서 검증 기능을 통해 액세스 할 수 있으며, 신뢰할 수 있는 인증서에서는 취약한 OpenSSL 서버 버전을 실행하는 모든 클라이언트 응용 프로그램에 영향을 줄 수 있습니다.

 

문제의 트리거 :

  • 대상에 취약한 소프트웨어가 설치되어 있는 경우
  • 공격자가 대상 서버에 네트워크 연결이 가능한 경우

 

트리거 조건 :

TLS 연결:

일반 클라이언트/서버 핸드셰이크 연결. (서버가 인증서 전송)

상호 인증 핸드셰이크 연결. (서버가 인증서를 보내고 서버가 클라이언트 인증서를 요청함)

 

공격 전달 :

다음 애플리케이션 프로토콜을 사용하여 이 취약점을 악용하는 공격을 전달할 수 있습니다.

  • HTTPS, SMTPS, SIPS 등 과 같은 SSL/TLS 전송 메커니즘

CVE-2022-3602 공격 패킷:

 

 

CVE-2022-3786 공격 패킷:

 

 

해결 방안 :

이 취약점으로 인한 위험은 다음을 통해 완화하거나 제거할 수 있습니다.

  • 제품을 취약하지 않은 버전으로 업그레이드합니다.

 

OpenSSL에서 이 취약점에 관련하여 릴리즈 한 내용은 아래의 링크를 참고하시기 바랍니다.

OpenSSL 릴리즈

 

 

 

 

 

 

 

 

 

Posted by 로버무트
,