상세 컨텐츠

본문 제목

TLS 1.2 다운그레이드를 할 수 있는 SLOTH공격 (CVE-2015-7575)

국내외 보안동향

by 알약(Alyac) 2016. 2. 15. 09:24

본문

TLS 1.2 다운그레이드를 할 수 있는 SLOTH공격 (CVE-2015-7575)


공격자가 강제적으로 해쉬 알고리즘을 다운그레이드 할 수 있으며, TLS, IKE, SSH프로토콜의 충돌을 일으킬 수 있는 SLOTH 공격이 발견되었습니다. 


SLOTH 공격이란?


Security Losses from Obsolete and Truncated Transcript Hashes의 약자로 인터넷 프로토콜상에서의 불완전하고 취약한 서명 해쉬가 문제가 되어 발생하는 보안손실을 말합니다. 예를 들어 MD5 서명은 2005년부터 암호학적으로는 파손된 것으로 알려져 있으나, 이는 표준 데스크탑 워크스테이션에 충돌공격이 실제로도 가능한 지금까지도 TLS에 사용되고 있습니다. TLS 1.2 클라이언트나 서버가 RSA-MD5 서명을 지원하는 경우 클라이언트 인증이 파손되고 추가적으로 공격자에 의해 서버인증도 파괴될 수 있습니다.


이 공격은 TLS 1.2 프로토콜에 존재하는 보안 취약점을 이용하는 공격입니다. 지금까지 SSL/TLS 프로토콜에서는 몇번의 취약점이 발견되었으며, 이 취약점들을 이용하면 공격자가 클라이언트/서버가 사용하는 SSL/TLS 프로토콜의 버전 및 암호화 스위트를 다운그레이드 시킬 수 있었습니다. POODLE, FREAK, Logjam 등은 모두 이런 방법을 사용한 공격들 이였습니다. 하지만 이번에 발견된 SLOTH공격은 강제로 클라이언트/서버에게 취약한 해쉬 알고리즘을 사용하도록 할 수 있으며, 이를 통해 공격자가 공격에 성공하도록 돕습니다.



TLS1.2 시그니처 해쉬 알고리즘 다운그레이드


클라이언트 사이드: 클라이언트 사이드에서 발생하는 공격으로 클라이언트로 하여금 서버에서 사용하는 약한 해쉬 알고리즘을 사용하도록 하는 공격입니다. TLS 1.2 프로토콜 중 ServerKeyExchange 메시지의 SignatureAndHashAlgorithm 필드를 통하여 다운그레이드 시키는 공격입니다. 


서버사이드 : 서버사이드에서 발생하는 공격으로 서버로 하여금 클라이언트에서 사용하는 약한 해쉬 알고리즘을 사용하도록 하는 공격입니다. SLOTH공격 중  TLS 프로토콜의 ClientCertificateVerify 메시지를 통하여 다운그레이드 시키는 공격입니다. 


클라이언트 사이드 TLS 1.2 MD5 다운그레이드


TLS1.2 이전 버전에서는 클라이언트사이드와 서버사이드에터 시그니처와 해쉬 알고리즘을 선택할 수 있는 옵션이 존재하지 않았으며, 일반적으로 MD5 및 SHA1을 사용하였습니다. 


하지만 TLS 1.2에서 ServerKeyExchange 메시지 중 SignatureAndHashAlgorithm 필드를 만들어, 서버가 클라이언트에게 사용할 시그니처와 해쉬 알고리즘을 지정해 줄 수 있도록 하였습니다. 이는 즉 공격자가 강제적으로 클라이언트에게 약한 해쉬 알고리즘을 사용하도록 할 수 있다는 것입니다.

과정은 아래와 같습니다. 


핸드쉐이크 과정에서 클라이언트는 Client Hello 패킷을 서버에게 전송합니다. 이 패킷 안에는 서버에서 사용할 수 있는 시그니쳐와 암호화 알고리즘이 정의되어 있는데, 공격자는 이 패킷을 중간에서 가로채고, 클라이언트에게 약한 알고리즘으로 수정하라는 내용이 담긴 패킷을 전송하여 클라이언트에게 암호화 알고리즘을 다운그레이드 하라고 요청합니다. 이후 공격자는 공격목표인 서버에게 공격을 시작합니다.


아래는 Client Hello 패킷으로, 시그니처 알고리즘에는 RSA-MD5 알고리즘이 포함되어 있지 않습니다. 



<출처 : http://blog.trendmicro.com/trendlabs-security-intelligence/sloth-downgrades-tls-1-2-encrypted-channels >



클라이언트와 서버 중간에서 공격자는 Server Hello, Certificate, Server Key Exchange 패킷으로 클라이언트 요청에 응답합니다. Server Key Exchange 중, 공격자는 RSA-MD5 알고리즘을 사용하라고 클라이언트에게 요청합니다. 


<출처 : http://blog.trendmicro.com/trendlabs-security-intelligence/sloth-downgrades-tls-1-2-encrypted-channels >



클라이언트는 “서버측” 응답을 받고, 약한 해쉬 알고리즘을 사용하게 됩니다. 이 후 클라이언트는 Client Key Exchange 응답을 통하여 핸드쉐이크가 성공적으로 마무리 되었음을 나타냅니다. 



<출처 : http://blog.trendmicro.com/trendlabs-security-intelligence/sloth-downgrades-tls-1-2-encrypted-channels >


TLS 다운그레이드 후, 공격자는 서버를 사칭할 수도 있으며, 암호화된 트래픽을 엿볼 수도 있습니다. 


서버사이드 TLS 1.2 MD5 다운그레이드


SLOTH공격은 반대로도 가능합니다. 공격자는 클라이언트를 가장하여 서버에게 약한 시그니처와 암호화 알고리즘을 사용하도록 할 수 있습니다. 

핸드쉐이크 과정에서 클라이언트는 서버에게 Client Hello 패킷을 전송하는데, 이때 공격자는 해당 패킷을 탈취하며, Client Hello 패킷 중 알고리즘 내용을 RSA-MD5 알고리즘 만을 지원하도록 수정한 후 전송합니다.


이 중간자 공격에서 signature_algorithms 필드에 다른 값도 추가할 수 있지만, 만약 서버가 해당 알고리즘을 지원하지 않는다면 서버에서 해당 패킷을 드랍 시킬 수도 있습니다. 이 후 공격자는 클라이언트로 위장할 수 있으며, TLS 다운그레이드에 성공하면 TLS 레벨의 클라이언트 신분인증이 가능하게 됩니다. 


SLOTH 공격의 경우, 특히 IE 8이상의 구버전 브라우저를 지원하기 위해 TLS1.1~TLS1.2를 적용한 웹사이트에 치명적일 가능성이 높습니다.



영향받는 소프트웨어


* Red Hat Enterprise Linux 6/7, Debian Wheezy, Android 4.4.2/5.0.0, Akamai GHost server

* NSS Client 3.20 이전 모든버전(sercer 제외), FireFox 42 이전 모든버전

* Oracle Java client and Server 8u66 이전 모든 버전 (7u79 포함)

* GnuTLS 클라이언트 및 서버 3.3.14 이전 모든 버전

* BouncyCastle Java client 1.53 이전 모든 버전

* Polar SSL/mbedTLS 2.2.0 이전 모든 버전

* 이밖에 RSA-MD5, ECDSA-MD5를 지원하고 MD5를 기반으로 하는 모든 TLS 클라이언트 및 서버



패치방법


* RHEL 6, 7의 OpenSSL, NSS, GnuTLS 패키지 업데이트

* NSS ver 3.21 / Firefox 43 업그레이드

* GnuTLS 3.3.15로 업그레이드 

* Java ver 1.54  및 C# ver 1.8.1 업그레이드 

* mbedTLS 2.2.1, 2.1.4, 1.3.16으로 업그레이드

TLS, SSH, VPN과 관련된 모든 설정들을 확인하여 MD5 지원을 해제



참고 : 

http://www.mitls.org/pages/attacks/SLOTH

http://blog.trendmicro.com/trendlabs-security-intelligence/sloth-downgrades-tls-1-2-encrypted-channels/

https://en.wikipedia.org/wiki/Template:TLS/SSL_support_history_of_web_browsers


 





관련글 더보기

댓글 영역