HearBleed 취약점
OpenSSL 서버에서 HeartBeat
라는 SSL/TLS 확장 프로토콜을 구현하는 과정에서 발생한 취약점
일종의 오버플로 취약점
많은 웹사이트가 사용자와 서버간 통신 시 OpenSSL을 이용하여
암호화 통신을 한다. IT서비스, 금융 및 카드사 등의 암호시스템에
주로 쓰이고 있다.
그리고 사용자가 웹사이트에서 서버와 정보를 주고받지 않아도 세션을 유지할 수 있도록 만들어주는 것이 HeartBeat이다.
이 HeartBeat의 취약점을 이용한 공격이 HeatBleed이다.
원리는 아래 만화를 보면 가장 쉽게 이해할 수 있다.
![]() |
https://xkcd.com/1354/(영문판) http://www.bloter.net/archives/189032(번역판) |
사용자가 무작위 데이터의 하트비트 패킷을 웹서버에 보낼 때 이 데이터의 양을 같이 알려준다. 그리고 이 웹서버는 같은 양의 데이터를 돌려보내 이 둘의 연결을 확인한다.
여기에서 사용자가 보낸 데이터 양을 거짓으로 보낼 경우 문제가 발생하는 것이다.
만화에서처럼 ‘모자’ 라는
데이터만을 보내고는 난 500단어를 보냈다 라고 말하면 서버는 모자를 포함하여 메모리에 저장되어 있던
다른 정보를 채워 사용자에게 전송한다. 이때 채워진 정보에 다양한 정보(ID, PW, 암호키 등등)이 함께 포함될 수 있다는 것이다.
가장 큰 문제점
서버에 이와 관련한 기록이 없다. 어느정도 규모로 데이터가 유출되었는지 아무것도 알 수가 없다. 공격을 당했는지조차 확인할 길이 없다.
문제가 있던 버전
OpenSSL 1.0.2-beta
OpenSSL 1.0.1 –
OpenSSL 1.0.1f
대처 방법
1. 서버 관리자 입장
가. 최신버전 또는 Heatbeat 기능이 없는 구 버전을 사용한다. 새롭게 사용하고자 한다면 굳이 구버전보다는 새 버전을 쓰면 되겠지
나. 코드 수정(Heartbeat 기능 제거)
DOPENSSL_NO_HEARTBEATS 부분을 비활성화 한 상태로 OpenSSL 재컴파일한다.
2. 사용자 입장
사용자 입장에서는 별다른 방법이 없다고 한다.
해당 업체가 문제를 해결한 경우 비밀번호를 변경하는 정도
(사용자가 비밀번호를 변경해도 서버에서 해결이 안되었다면 변경한 비밀번호도 노출될 수 있다.)