본문 바로가기

30./31. Web

OpenSSL HeartBleed 취약점

OpenSSL HeartBleed 취약점


네트워크를 통한 데이터 통신에 쓰이는 프로토콜인 TLS와 SSL의 오픈 소스 구현판인 OpenSSL의 라이브러리인 HeartBeat에서 서버에 저장된 중요 메모리 데이터가 노출되는 취약점 발견되었습니다.

* 본 보안 취약점(CVE-2014-0160)은 하트블리드(HeartBleed)로 알려져 있음


※ 참조 : http://heartbleed.com/


  • 발생 원인

OpenSSL 암호화 라이브러리의 하트비트(Heartbeat)라는 확장 모듈에서 클라이언트 요청 메시지를 처리할 때 데이터 길이 검증을 수행하지 않아 시스템 메모리(서버)에 저장된 64KB 크기의 데이터를 외부에서 아무런 제한 없이 탈취할 수 있는 취약점입니다.

· HeartBeat : 통신 시 연결의 유지, 서버의 상태 체크 등을 목적으로 이용

· 노출 가능한 정보 : SSL 서버 비밀키, 세션키, 쿠키 및 개인정보 등 

    (원격 메모리 덤프, 위치는 지정 불 가능함)


  • 공격방법
    1. (전송) 공격자는 하트비트 패킷 헤더에서 페이로드 길이 필드를 조작하여 서버에 전송
    2. (응답) 서버는 공격자가 요청한 길이(최대 64KB)만큼 메모리에서 데이터를 추출하여 공격에게 응답


  • 취약 버전 및 관련 정보
     · Version : OpenSSL 1.0.1 ~ 1.0.1.F (2014.04.08. openssl-10.1g에서 패치됨)
     · 파일 및 함수명: "d1_both.c" dtls1_process_heartbeat 함수, "t1_lib.c" tls1_process_heartbeat 함수 내 코드 패치


  • 보안 취약점
    ·  데이터 길이를 확인하지 않고 안전하지 않은 메모리 복사 함수 이용
    ·  HeartBeat(RFC 6520) 기능 구현 시 악용 가능한 취약점 존재

 구분

소스코드 

 비고

 openssl-1.0.1e

dtls1_process_heartbeat(SSL * s){

....

  n2s(p, payload);

  pl = p;

....

 입력 데이터 크기를 확인하지 않음

 openssl-1.0.1g

 dtls 1_process_heartbeat(SSL *s){

...

  n2s(p, payload);

  if ( 1 + 2 + payload + 16 > s->s3->rrec.length)

    return 0; /* silently discard per RFC 6520 sec. 4 */

  pl = p;

...

 입력 데이터 크기를 확인하고 예외 사항 처리




Heartbleed test.zip


  • 취약점 여부 확인

· http://filippo.io/Heartbleed/

  • 공격 스크립트

· 파이썬(기본형) : http://www.exploit-db.com/exploits/32745/

· 파이썬(발전형) : https://github.com/sensepost/heartbleed-poc/blob/master/heartbleed-poc.py

· 파이썬(발전형) : https://raw.githubusercontent.com/musalbas/heartbleed-masstest/master/ssltest.py

· NMAP sslheartbleed 기능 : http://nmap.org/nsedoc/scripts/ssl-heartbleed.html

· C언어 : http://www.exploit-db.com/exploits/32791/ 




※ 참조

KISA 인터넷침해대응센터 : http://krcert.or.kr/

http://legend.anycert.co.kr/support/openssl_install.html







'30. > 31. Web' 카테고리의 다른 글

Actionscript XSS using flash  (0) 2014.04.29
URL 한글 인코딩, 디코딩  (0) 2014.04.19
The Hacker Firefox  (0) 2014.04.17
22. 세션고정(SF) 취약점  (0) 2014.04.16
Flash SWF을 이용한 XSS  (0) 2014.03.20