OpenSSL 라이브러리 서비스 거부 취약점
2022. 7. 4. 17:49
OpenSSL 라이브러리에서 서비스 거부 취약점이 보고되었습니다.
이 취약점은 BN_mod_sqrt() 함수의 검증 부족으로 인해 발생됩니다.
원격 공격자는 OpenSSL 라이브러리를 사용하여 OpenSSL 서버 또는 응용프로그램에 조작된 패킷을 전송하여 이 취약점을 이용할 수 있습니다. 공격에 성공하면, 영향을 받는 서비스에서 서비스 거부 상태가 발생할 수 있습니다.
영향을 받는 OpenSSL 버전은 1.0.2와 1.1.1, 3.0 이며, 해당 버전은 아래 버전에서 해결되었습니다.
- OpenSSL 3.0.2 (3.0.0, 3.0.1에 영향을 미침)
- OpenSSL 1.1.1n (1.1.1-1.1m에 영향을 미침)
- OpenSSL 1.0.2zd (1.0.2-1.0.2zc에 영향을 미침)
취약점의 식별자는 CVE-2022-0778이며 CVSS(v3) 6.1점으로 평가되었습니다.
기술 개요:
이 취약점은 모듈로 제곱근을 계산하는 데 사용되는 인터페이스 함수인 BN_mod_sqrt()에서 비롯되며 매개변수 p가 소수여야 하지만 함수에 검사가 없으므로 내부에 무한 루프가 발생할 수 있습니다. 이 함수는 다음 형식의 증명서를 해석할 때 사용됩니다.
- 인증서에 압축 형식의 타원 곡선 공개 키가 포함된 경우.
- 기준점이 압축 형식으로 인코딩 된 명시적인 타원 곡선 매개변수를 가진 인증서.
즉, 이 함수는 인증서를 해석할 경우 점 좌표를 압축 해제할 때 호출합니다. 따라서 외부에서는 불법적인 명시적 곡선 매개변수가 있는 인증서를 만들어, DoS 공격을 유발하고 무한루프를 발생시킬 수 있습니다.
문제의 트리거:
- 압축된 형태의 타원 곡선 공개 키가 포함된 인증서 구문 분석.
- 압축 형식으로 인코딩 된 기준점이 있는 명시적 타원 곡선 매개변수.
- 유효하지 않은 명시적 곡선 매개변수가 있는 인증서 작성.
- 명시적 타원 곡선 매개변수를 포함할 수 있는 조작된 개인 키 구문 분석.
트리거 조건:
- 서버 인증서를 사용하는 TLS 클라이언트.
- 클라이언트 인증서를 사용하는 TLS 서버.
- 고객으로부터 인증서 또는 개인 키를 받는 호스팅 제공업체.
- 인증 기관이 가입자의 인증 요청을 구문 분석.
- ASN.1 타원 곡선 매개변수를 구문 분석하는 기타 모든 것.
- 매개변수 값을 제어하는 BN_mod_sqrt()를 사용하는 OpenSSL 응용 프로그램.
공격 전달:
다음 애플리케이션 프로토콜을 사용하여 이 취약점을 악용하는 공격을 전달할 수 있습니다.
- SSL/TLS, OpenSSL
해결 방안:
이 취약점으로 인한 위험은 다음 방법을 통해 완화하거나 제거할 수 있습니다.
- 이 취약점을 제거하는 OpenSSL 제공 패치를 적용합니다.
- 신뢰할 수 없는 사용자에 대한 쓰기 권한을 제거합니다.
OpenSSL에서 이 취약성에 대해 릴리스한 코드 변경사항은 아래의 링크를 참고하시기 바랍니다.