일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- HTML5
- 네트워크
- 문자열
- Lenovo D330-10igm
- 안드로이드
- Web Programming
- 고전게임기 만들기
- 진단항목
- ubuntu
- c#
- 인증 및 세션관리
- 이보드
- 셀프인테리어
- 인테리어
- fiddler
- 피들러
- 보안
- 단열
- ASP.NET
- 웹
- 고전게임
- network
- WEB
- 한컴오피스
- 우분투
- D330-10igm
- 자바스크립트
- retropie
- 윈도우 8
- D330
- Today
- Total
Kinesis´s Open Document
INSECURE RC4 CIPHER 본문
※ 본 게시물은 https://www.kinesis.kr/insecure-rc4-cipher/ 에 게재한 내용의 Shadow (복제본) 입니다.
RC4는 1987년 미국 암호학자 Ronald Lorin Rivest(로널드 라이베스트, 1947~)가 만든 스트림 암호로 전송 계층 보안(TLS)이나 WEP등 여러 프로토콜에 사용되어 왔으나, 이후 여러 연구를 통해 취약한 것으로 밝혀져 현재는 사용을 지양(권장하지 않음)하고 있다. 특히 2016년도부터 각 브라우저(Google Chrome, Mozilla Firefox, Microsoft Internet Explorer) 및 Oracle JDK(Java Development Kit) 등에서도 RC4 암호화를 기본 비활성화 또는 제거한 만큼 특별히 사용해야 할 사유가 없다면 사용을 지양하고 안전한 암호화 알고리즘으로 대체가 필요하다.
SUMMARY : 요약
기존까지 사용되어 왔던 RC4 암호 알고리즘에서 취약점이 발견되었으며, 2016년부터 각종 브라우저 및 JDK 등에서 해당 암호 알고리즘을 지원하지 않도록 변경되어, 특별히 사용해야 할 사유가 없다면 사용을 지양하고 안전한 암호화 알고리즘으로 대체해야 한다.
– 일반적인 경우 RC4 지원 비활성화에 따른 영향은 없다.
– Android의 경우 AES-128 지원시 RC4 비활성화에 따른 영향은 없다.
– 조치 : SSLv2 및 SSLv3 을 비활성화하고 RC4 Cipher를 비활성화 한다. (TLSv1.0▲ 사용)
본문
※ 본 내용은 Web Server 설정시의 RC4 설정에 초점을 두고 기술한다.
최근 대부분의 Web Sites는 암호화의 중요성 및 필요성이 대두되면서 SSL을 적용 HTTPS 프로토콜 통신을 지원하고 있다. 그러나 아직까지 많은 사이트는 단순히 HTTP에서 HTTPS 만 지원하면 안전한 줄 알고 있어 RC4와 같이 취약한 암호화 방식을 지원하는 사이트들이 다수 존재하고 있다. 이러한 취약한 설정을 내포하고 있을 경우 SSL 적용을 통한 HTTP + Secure 라는 HTTPS 전환의 의미나 가치가 무색해질 수 있다.
이러한 경우를 막고자 한켠에서는 SSL Labs(www.ssllabs.com)이나 SSL Scan(github.com/rbsec/sslscan) 같이 SSL 적용 설정을 점검할 수 있는 도구나 방법을 제공하고 있으며, Microsoft(마이크로소프트), Mozilla(모질라) 재단, Google(구글) 등 Web Browser(웹 브라우저)를 제공하는 업체에서도 RC4 지원을 종료하는 등의 보안성 향상 조치가 이루어지고 있다. 특히 RC4 NOMORE (www.rc4nomore.com)이라는 일종의 운동 단체가 생겨나기도 하는 모습이 확인되기도 한다.
DEMONSTRATION
출처 : http://www.rc4nomore.com/ 에서 공개한 RC4 취약점에 관한 취약점관련 시연 영상
Demonstration 내용 요약
- 피해자는 RC4 취약점이 있는 사이트에 접속
- 공격자는 RC4 취약점을 이용해 공격 자바스크립트 삽입
- 공격자는 피해자의 통신을 캡쳐
- 공격자는 수집된 암호화된 패킷을 복호화
- 공격자는 피해자의 Cookie 등을 복원해 내 계정 탈취 등의 피해를 일으킴
일반적인 경우 RC4 지원 비활성화에 따른 영향은 없다.
Web Browser(웹 브라우저) 같은 경우는 이미 2016년도부터 주요 Vender 사에서 RC4 지원을 종료하기 시작하였고, Oracle(오라클)사에서 역시 JDK(Java Development Kit, 자바 개발 키트) 8u60 Update(2015년 8월 릴리즈) 에서 RC4 지원을 종료함에 따라 2019년도에 들어선 현재는 일반적인 Web Service 목적으로서는 RC4 지원을 비활성화하더라도 별도의 영향도가 발생하지 않는다고 볼 수 있다.
문제가 발생하는 경우는 Client(클라이언트) 측의 Browser(브라우저) 또는 Application (애플리케이션)에서 지원하는 암호화 알고리즘과 Server (서버) 측에서 지원하는 암호화 알고리즘 간 상호 지원되는 알고리즘이 RC4 밖에 없을 때, 서버측이 RC4 지원을 비활성화 하는 경우에 한정하여 Network Packet Level (네트워크 패킷 레벨)에서 3-Way Handshake(쓰리웨이 핸드쉐이크)를 맺을 수 없어 통신이 되지 않음으로써 발생하는데, 이러한 복합적인 조건을 충족하는 경우는 사실 많지 않다.
- Client 와 Server 측에서 상호 동일하게 지원하는 암호화 알고리즘은 RC4 뿐이다.
- 1의 조건을 갖춘 상태에서 Server 측에서 RC4 지원을 비활성화 한다.
- 2의 작업 이후 상호간 동일하게 지원하는 암호화 알고리즘은 없다.
- 상호간 지원되는 암호화 알고리즘이 다르므로 3-Way Handshake 가 성립되지 않는다.
- 3-Way Handshake 가 성립되지 않으므로 통신이 이루어지지 않는다. (장애상태 발생)
Android의 경우 AES-128 사용시 대체적으로 영향은 없다.
Android Application (안드로이드 애플리케이션)의 경우 구 기존 호환에 따른 이슈가 발생할 수 있다. 특정한 사유로 Android 2 버전대까지 지원을 해야 하는 경우 등이 이에 해당되는데, 이러한 경우 RC4 비활성화의 대안으로 AES-128을 지원하는 경우 대체적으로 영향은 없다.
스크린샷 출처 : https://www.ssllabs.com/ssltest/viewClient.html?name=Android&version=2.3.7&key=56
SSL Labs 에서 제공하는 User Agent Capabilities 중 Android 2.3.7(코드명 Gingerbread, 진저브레드) 버전을 참고해 보면 Android 2.3.7 버전에서 지원하는 프로토콜은 SSL3, TLS1.0 2가지인 것을 확인할 수 있고, 취약하다고 알려진 RC4 암호화 위주로 통신이 이루어짐을 확인할 수 있다.
그러나 다행히도 Android 2.3.7 버전에서도 AES-128 암호화 통신을 지원하고 있음이 확인되고 있으며, 해당 암호화 방식을 이용한 통신을 지원할 경우 Connection 문제 없이 통신이 가능함을 예상해 볼 수 있다.
Guide Line : 조치방안
안전한 버전의 SSL 버전으로 업데이트하거나, 취약한 암호화 알고리즘(RC4를 포함)을 사용하지 않도록 정의한다. Mozilla 에서 제공하는 SSL Configuration Generator를 이용해 현황에 맞는 SSL 설정을 적용하는 것도 하나의 대안이 될 수 있다.
SSL 설정 생성을 위한 옵션 설명 부분
출처 : https://mozilla.github.io/server-side-tls/ssl-config-generator/
▶ Apache
SSLCipherSuite 설정 부분에 “!RC4” 를 추가하여 명시적으로 RC4 암호화를 비활성화 시킬 수 있다.
▶ Nginx
Apache와 유사하게 ssl_ciphers 설정 부분에 “!RC4″를 추가하여 명시적으로 RC4 암호화를 비활성화 시킬 수 있다.
▶ lighttpd 위와 유사하게 “ssl.cipher-list” 에 “!RC4″를 추가하여 명시적으로 RC4 암호화를 비활성화 시킬 수 있다.
▶ HAProxy
마찬가지로 “ssl-default-bind-ciphers” 및 “ssl-default-server-ciphers”에 “!RC4″를 추가하여 명시적으로 RC4 암호화를 비활성화 시킬 수 있다.
위의 간략한 예시 외에, 보다 구체적인 예시 및 설정 값을 확인하고 싶은 경우 “Mozilla SSL Configuration Generator” 페이지에서 참고하고자 하는 “서버유형 선택 > 호환 유형 선택 (Modern 최신호환, Intermediate 중간호환, Old 구버전호환)”을 선택 후 하단의 설정 예시에 나오는 값을 참고하여 서버에 반영 조치하면 된다.
▶ 관련 참고 자료 또는 문헌
- https://ko.wikipedia.org/wiki/RC4
- https://developer.android.com/reference/javax/net/ssl/SSLSocket
- https://www.oracle.com/technetwork/java/javase/8u60-relnotes-2620227.html
- https://www.chromestatus.com/feature/6493219084828672
- https://blog.mozilla.org/security/2015/09/11/deprecating-the-rc4-cipher/
- https://www.mozilla.org/en-US/firefox/44.0/releasenotes/
- https://support.microsoft.com/ko-kr/help/3151631/rc4-cipher-is-no-longer-supported-in-internet-explorer-11-or-microsoft
- https://www.ssllabs.com/ssltest/clients.html
- https://mozilla.github.io/server-side-tls/ssl-config-generator/
'MEMO/기술 자료 > Security' 카테고리의 다른 글
이제는 "모의해킹"이 아니라 "침투테스팅(Penetration Testing)"이다. (2) | 2018.06.07 |
---|---|
Fiddler : Example for Request-body change script (0) | 2017.03.24 |
SSL - 암호화 스위트(Cipher Suite) 정보 분석표 (6) | 2017.03.24 |
SSL Configure : HTTP Public Key Pinning (HPKP) 설정하기 (0) | 2016.12.28 |
안드로이드(Android) : drozer를 이용한 App 동적분석 배치(bat) 파일 (0) | 2016.11.22 |
루팅 탐지 및 우회 (0) | 2016.07.27 |
HTTP Header : X-XSS-Protection (0) | 2016.07.11 |