Heartbleed(하트 블러드)

Woo·2025년 1월 2일

보안 이론

목록 보기
1/6
post-thumbnail

Heartbleed 버그는 2011년 12월에 OpenSSL에 처음 소개되었으며, 2012년 3월 14일에 출시된 OpenSSL 1.0.1 이후로 널리 퍼져 나갔다. 그후 2014년 4월 7일에 출시된 OpenSSL 1.0.1g는 이 버그를 수정하였다.

배경

OpenSSL

전송 계층 보안(TLS/ Transport Layer Security) 및 보안 소켓 계층(SSL/Secure SOcket Layer) 프로토콜을 위한 강력하고 상용급의 기능을 갖춘 툴킷

OpenSSL의 하트비트(Heartbeat) 기능: TLS/DTLS 프로토콜에서 클라이언트와 서버 간의 연결 상태를 확인하기 위해 추가된 확장 기능 (TLS 하트비트 확장은 기본적으로 연결이 유지되고 있는지를 확인하거나 연결을 활성 상태로 유지하기 위해 주기적으로 신호를 주고 받는다.)

Heartbleed란?

Heartbleed는 OpenSSL 암호 라이브러리의 보안버그이다.
이 버그는 TLS 하트비트 확장 구현에서 입력 점증이 제대로 이루어지지 않아(범위 확인 누락으로 인해) 발생하였다.
이 버그의 이름인 Heartbleed는 Heartbeat에서 유래되었다.


개요

Heartbleed 취약점과 Heartbeat의 관계

  • 2014년에 발견된 Heartbleed(CVE-2014-0160) 취약점은 openssl heartbeat 기능의 입력 검증 오류에서 비롯되었다.
  • 하트비트 요청을 받을 때 요청된 데이터의 길이를 검증하지 않아, 악의적인 사용자가 잘못된 길이 값을 지정하여 서버 메모리의 민감한 정보를 읽어올 수 있게 되었다.
    ex) 클라이언트가 1바이트의 데이터를 보내면서 길이를 64KB로 요청하면, 서버는 추가적인 데이터를 반환하며 민감한 정보가 노출됨

OpenSSL HeartBleed 취약 버전

  • OpenSSL 1.0.1 ~ 1.0.1f(포함)은 취약
  • OpenSSL 1.0.1g는 취약하지 않음
  • OpenSSL 1.0.0 브랜치는 취약하지 않음
  • OpenSSL 0.9.8 브랜치는 취약하지 않음

-> 처음에 말했듯이 이 버그는 2011년 12월에 OpenSSL에 처음 소개되었으며, 2012년 3월 14일에 출시된 OpenSSL 1.0.1 이후로 널리 퍼져 나갔다. 그후 2014년 4월 7일에 출시된 OpenSSL 1.0.1g는 이 버그를 수정하였다.

첫 번째 수정된 버전인 1.0.1g는 2014년 4월 7일 출시되었습니다.2014년 6월 21일 기준으로 309,197개의 공개 웹 서버가 취약한 상태로 남아 있었다.


버그 수정

대응

  • Heartbleed 취약점이 공개된 후, OpenSSL에서는 하트비트 기능에서 입력 값 검증(길이 검증)을 강화하여 메모리 범위를 초과하는 요청을 차단하였다
  • 현재 최신 버전의 OpenSSL에서는 이 취약점이 패치되어 안전하게 사용할 수 있다.

참고자료
https://en.wikipedia.org/wiki/Heartbleed

profile
다덤벼

0개의 댓글