Wins blog

글로벌 정보보안 파트너! Global Security  No.1 윈스는 국가대표 정보보안 기업에서 글로벌 강소기업으로 도약합니다.

보안 정보

앞 내용 보기 다음 내용 보기
취약점 정보[CVE-2016-2107] OpenSSL Padding Oracle 취약점
작성일 2018-10-19 조회 943

 

 

 

 

 

2016년 5월 4일에 공개된 Openssl Lucky MITM 취약점 (CVE-2016-2107)은 5월 3일, Openssl에서 긴급 업데이트(https://www.openssl.org/news/secadv/20160503.txt)를 발표하고 국내에서도 많은 이슈가 있었던 취약점입니다.

 

최근까지도 CVE-2016-2107 취약점을 이용한 PoC가 개발되어 지고 있어, 실제 공격에 사용되어 질 가능성이 높기에 각 사이트에서는 주의 깊게 살펴야 하겠습니다.

 

 

[그림 1.] 최근에 공개된 PoC

 

 

해당 취약점은 클라이언트가 AES_128(256)_CBC와 관련된 암호화 모듈과 서버(AES-NI지원)와 통신할 때 공격자는 클라이언트와 서버가 주고받는 데이터에  Padding oracle attack을 통하여 복호화 할 수 있습니다. 

 

 

 

 

취약점 분석

우선 해당 취약점은 2016년에 공개되었음에도 불구하고, 구현의 난이도가 최상이기 때문에 실제 공격사례가 발견되지는 않았습니다.
그럼에도 꾸준히 PoC가 개발되어 지고, 인터페이스가 간편해지면서 해커들이 관심있게 지켜보고 있는중입니다.

 

 

[그림 2.] 취약한 서버를 스캐닝해 True/False로 Response

 

 

[그림 3.] 취약점 테스트 결과 False 판단

 

 

[그림 4.] Heartbeat를 이용한 취약점 공격

 

 

TLS 피어간에 교환되는 메시지(레코드)를 보호하기 위해 다양한 암호화 primitive를 사용할 수 있습니다. 
그 중 하나는 CBC 모드에서 AES와 결합 된 MAC입니다. 
TLS는 MAC-then-PAD-then-Encrypt 메커니즘을 사용하는데 이는 먼저 일반 텍스트를 통해 MAC을 계산 한 다음 블록 길이의 배수가되도록 메시지를 채우고 마지막으로 AES-CBC를 사용해 암호화합니다.

 

여기서 문제점이 암호 Decryptor에 있습니다.
암호문을 전송받은 Decryptor는 먼저 메시지의 암호를 해독하고 마지막 바이트를 확인하고 unpad하고 MAC을 확인해야합니다. 


항상 MAC 유효성 검사를 진행해야 하는데 실패한 경우 항상 동일한 오류 메시지가 반환되어야 합니다.
그런데 약간의 타이밍 차이에 의해 평문의 오류 메시지가 동일하지 않게 전송이 되어 의도치 않은 정보유출이 평문형태로 발생하게 됩니다.

 

공격자는 공격을 실행하여 다음과 같이 진행합니다.


공격자는 단순히 클라이언트가 보낸 모든 메시지를 ChangeCipherSpec 메시지까지 전달합니다. 
그런 다음 원래 클라이언트 Finished 메시지에서 암호문을 제거하고 대신 응용 프로그램 메시지의 수정 된 데이터를 삽입합니다. 
서버는이 새로운 Finished 메시지의 암호 해독을 시도하고 일반적인 평문의 경고 메시지로 응답합니다.

 

 

[그림 5.] 붉은색으로 표시된 메세지는 암호화된 패킷-Server의 BAD RECORD MAC패킷이 암호화되어 사용자에게 전송(https://web-in-security.blogspot.com/2016/05/curious-padding-oracle-in-openssl-cve.html)

 

 

[그림 6.] 붉은색으로 표시된 메세지는 암호화된 패킷-Server의 BAD RECORD MAC패킷이 평문으로 사용자에게 전송(https://web-in-security.blogspot.com/2016/05/curious-padding-oracle-in-openssl-cve.html)

 


다시 정리하자면

TLS RSA 핸드 셰이크 및 메시지 교환은 다음과 같은 순서로 이루어집니다.

 

1. 클라이언트와 서버는 TLS 채널 속성에 동의하는 위치에서 Hello 메시지를 교환
2. 클라이언트는 서버의 공개 키로 암호화 된 premaster secret를 포함하는 ClientKeyExchange 메시지를 보냄
3. 클라이언트는 ChangeCipherSpec 메시지와 Finished 메시지를 보냄
4. 서버는 ChangeCipherSpec 메시지와 Finished 메시지로 응답
5. 이제부터는 두 피어가 암호화 된 응용 프로그램 메시지를 교환

 

공격자는 3번 과정에 Finished 메시지의 암호문을 제거하고 대신 Application message의 수정 된 데이터를 삽입합니다.
서버는이 새로운 Finished 메시지의 암호 해독을 시도하고 plain alert message로 응답합니다.

 

공격자는 노출된 평문 응답을 통해 중요한 정보를 탈취 할 수 있습니다.


현재도 위와 같은 형태의 공격은 다수의 인터넷에 노출된 서버에 성공하고 있습니다.

 

- Shodan Keyword
  Server: Apache/2.4.10 (Debian) port:"443"

 

 

 

 

대응방안

벤더사에서 제공하는 최신의 패치를 적용한다.
https://github.com/openssl/openssl/commit/70428eada9bc4cf31424d723d1f992baffeb0dfb

 

 

 

 

윈스 스나이퍼 대응방안

Sniper-IPS

[4512] OpenSSL AES-NI CBC MAC Padding Information Leak
[4513] OpenSSL AES-NI CBC MAC Padding Information Leak.A
[4514] OpenSSL AES-NI CBC MAC Padding Information Leak.B

Sniper-UTM

[805374691] OpenSSL AES-NI CBC MAC Padding Information Leak
[805374692] OpenSSL AES-NI CBC MAC Padding Information Leak.A
[805374693] OpenSSL AES-NI CBC MAC Padding Information Leak.B

Sniper-APTX

[3763] OpenSSL AES-NI CBC MAC Padding Information Leak
[3764] OpenSSL AES-NI CBC MAC Padding Information Leak.A
[3765] OpenSSL AES-NI CBC MAC Padding Information Leak.B

 

 

 

 

참조
https://www.exploit-db.com/exploits/39768/
https://web-in-security.blogspot.com/2016/05/curious-padding-oracle-in-openssl-cve.html
https://blog.cloudflare.com/yet-another-padding-oracle-in-openssl-cbc-ciphersuites/

첨부파일 첨부파일이 없습니다.
태그 CVE-2016-2107  OpenSSL Padding Oracle