앵하니의 더 나은 보안
[CVE-2009-3555] 금취평 취약한 https 재협상 허용 관련 본문
전자금융기반시설 보안 취약점 평가 항목 중 '취약한 https 재협상 허용' 이라는 항목이 존재한다.
https(SSL/TLS) 재협상이란 기존 보안 세션 내에서 다시 핸드쉐이크를 진행함으로써 새로운 세션을 맺는 것을 뜻한다.
진단 시 기준은 insecure client-initiated renegotiation(클라이언트의 안전하지않은 재협상)을 시도했을 때
재협상이 가능할 경우 취약, 안전하지 않은 재협상을 지원을 하지않아 재협상이 불가능할 경우 양호로 판단한다.
취약한 https 재협상 허용 항목을 접했을 때 '그래서 이게 왜, 이게 취약하면 뭔데' 라는 생각에 한번 찾아본 것을 정리한다.
1. CVE-2009-3555 = 재협상 중간자 공격
클라이언트의 안전하지 않은 재협상이 이루어질 경우, 서버는 TLS 재협상 후 수신된 데이터가
재협상 전과 동일한 클라이언트에서 전송된다고 가정하기 때문에 중간자 공격에 취약하다.
그래서 클라이언트에서 TLS 재협상 시도를 한다면 ARP 스푸핑 또는 DNS 포이즈닝 같은 중간자 공격 시
해당 재협상 시도를 가로채고 공격자는 인증된 클라이언트로 가장할 수 있다.
내가 이해한 바로는 아래와 같은 과정으로 해당 취약점을 활용할 수 있다.
- 해커가 victim에게 ARP 스푸핑
- victim은 해커의 PC를 통해 전자 금융 서비스 관련 패킷 전송
- 해커의 PC는 victim으로부터 패킷을 전달 받지만 HTTPS 통신으로 암호화된 패킷을 해석하지 못한채 전달받은 패킷을 실제 전자 금융 서비스의 서버로 전송하는 forward 기능만 수행
- 서비스 이용 도중 insecure client-initiated renegotiation 발생 시 해커의 PC에서 가로채 HTTPS 통신의 세션을 다시 성립시킴으로써 해커의 PC에서 복호화된 데이터를 확인 가능하고 이에 따라 victim의 민감 정보 확인 가능
2. 해당 취약점의 진단
해당 취약점은 openssl을 통해 테스트해 볼 수 있는데,
클라이언트가 시작한 안전하지 않은 재협상(insecure client-initiated renegotiation)을 테스트 해보면 된다.
하지만 이 안전하지 않은 재협상은 openssl의 최신버전에서 지원하지 않고 0.9.8k 버전 이하에서 지원하므로
만약 해당 항목을 진단할 경우 openssl 0.9.8k 이하의 버전을 사용해 테스트 해야한다.
openssl은 윈도우의 경우 https://code.google.com/archive/p/openssl-for-windows/downloads 에서 다운로드 하고
리눅스 계열의 경우 https://www.openssl.org/source/old/0.9.x/ 에서 다운로드하면 된다.
3. 진단 시연
1) openssl version 입력으로 openssl의 버전을 확인한다.
insecure client-initiated renegotiation을 지원하는 0.9.8k 이하 버전이면 된다.
2) openssl s_client -connect google.com:443 명령 수행
3) SSL/TLS 정보 출력이 완료되면, R 입력 후 엔터
재협상 시도 시 에러가 발생한다면 양호, 재협상이 완료된다면 취약
시연 환경에서는 에러가 발생했으므로 양호로 판단한다.
'보안 기술 > WEB' 카테고리의 다른 글
CSRF 취약점과 대응방안 (0) | 2022.08.22 |
---|---|
SSL strip과 HSTS (0) | 2022.08.12 |
WEB Ahnlab Safe Transaction bypass (20) | 2022.08.12 |
X-XSS-PROTECTION bypass(X-XSS-Nightmare, XXN) (0) | 2022.07.18 |
JWT (0) | 2022.07.18 |