틀린 부분이 있다면 언제든지 댓글 남겨주세요!
OpenSSL 이란?
- TLS/SSL (네트워크 내 데이터 통신에 쓰이는 프로토콜)의 오픈소스 구현판. C언어로 구현되어 있으며 기본적인 암호화 기능 및 유틸리티 함수들이 구현되어 있음.
* SSL(Secure Sockets Layer) = HTTP 통신을 안전하게 하기 위해 만들어진 프로토콜로 HTTPS에 적용. 서버 인증, 클라이언트 인증, 데이터 암호화(대칭키, 비대칭키 혼용) 기능을 제공함
(SSL을 사용하는 URL은 https라는 scheme을 사용하여 구분함)
관련 취약점
CVE-2014-0160 (Heartbleed)
- OpenSSL 1.0.1 버전에서 발견된 소프트웨어 버그. OpenSSL을 구성하고 있는 TLS/DTLS의 heartbeat확장규격에서 발견
* heartbeat = server와 client 사이에 안정적인 연결 유지를 위해 정보를 주고 받을 때 사용하는 확장규격
- 연결 유지를 위한 통신 시 client로 부터 전달받은 정보의 길이와 정해진 길이가 일치하지 않으면 server는 응답하지 않아야 하는데 검증 없이 응답하여 취약점 발생
- client는 한번에 64KB의 정보를 요청하기 때문에 매우 작은 정보만 담을 수 있지만, 이러한 작은 정보를 지속적으로 유출하면 무의미한 정보가 모여 하나의 유의미한 정보가 될 수 있으므로 문제가 됨
- 이 공격을 통해 server와 client 사이에 주고받는 정보를 탈취해 개인 키, 세션 쿠키, 암호를 훔칠 수 있음
- 대상: OpenSSL 1.0.1 ~ OpenSSL 1.0.1f / OpenSSL 1.0.2-beta, OpenSSL 1.0.2-beta1
CVE-2022-0778
- OpenSSL 내 BN_mod_sqrt() 함수에서 연산 시 무한 루프로 인해 발생하는 서비스 거부 취약점
* BN_mod_sqrt() = 인증서를 구문 분석할 때 모듈식 제곱근을 계산하는 함수
- 대상: OpenSSL 1.0.2 / OpenSSL 1.1.1 / OpenSSL 3.0 및 이전버전
CVE-2022-3602
- OpenSSL에서 X.509 인증서 검증의 이름 제약 조건 검사 기능 내에서 버퍼 오버플로우 시 발생
- 인증서에 버터 오버플로우를 트리거 하도록 설계된 퓨리코드(punycode)로 인코딩 된 이메일 주소가 포함되어 있을 때 발생할 수 있음
* punycode = 비 지원 언어(한국어, 중국어 등)를 공통적으로 표현하기 위해 unicode를 ascii 문자 집합으로 인코딩할 때 사용
- 원격 코드 실행 공격이 가능하고 공격에 성공하면 DoS 조건이 발생할 수 있음
- 대상: OpenSSL 3.0.0 ~ 3.0.6
* OpenSSL 3.0.0 ~ 3.0.6 버전을 지원하는 브라우저(파이어폭스, 인터넷 익스플로러 등)에만 영향.
출처: KISA 인터넷 보호나라&KrCERT , 알약 블로그 , 보안뉴스(https://www.boannews.com/media/view.asp?idx=111229&kind=14)
댓글