어플리케이션

Heartbleed 취약점에 대해 알아보겠습니다.

forward error correction Circle 2024. 8. 12. 08:21
반응형

Ⅰ. Heartbleed 취약점 이란? 

Heartbleed 취약점(CVE-2014-0160)은 2014년 4월에 공개된 OpenSSL 라이브러리의 심각한 보안 결함입니다. OpenSSL은 SSL/TLS 프로토콜을 구현한 오픈 소스 라이브러리로, 인터넷 상의 보안 통신에 널리 사용됩니다. Heartbleed는 이 라이브러리의 Heartbeat 확장 기능에서 발생한 버퍼 오버리드(buffer over-read) 취약점으로, 공격자가 서버나 클라이언트의 메모리 일부를 임의로 읽어낼 수 있게 합니다.

Ⅱ. Heartbleed 취약점의 공격 원리

Heartbleed 취약점은 OpenSSL의 TLS Heartbeat 확장에서 발생합니다. Heartbeat는 클라이언트와 서버 간의 연결이 살아있음을 확인하기 위해 사용하는 간단한 신호입니다. 클라이언트가 Heartbeat 요청을 보내면, 서버는 이 요청에 응답하여 동일한 데이터를 반환해야 합니다. 이 과정에서 데이터의 길이를 클라이언트가 지정하게 되는데, Heartbleed 취약점은 이 길이를 검증하지 않는 데서 발생합니다.

ⅰ) 요청 구조: 클라이언트는 서버에 데이터(예: 1KB의 데이터를 요청)와 이 데이터의 길이를 포함한 Heartbeat 요청을 보냅니다.
ⅱ) 취약점 발생: 클라이언트가 실제로는 1KB의 데이터를 보내면서, 데이터 길이를 고의로 64KB로 설정하여 요청을 보낼 수 있습니다. 서버는 이 요청을 처리할 때, 길이를 확인하지 않고 클라이언트가 요청한 64KB만큼의 데이터를 반환하려 합니다.
ⅲ) 메모리 누출: 서버는 클라이언트가 보낸 데이터보다 긴 데이터(여기서 63KB 추가)를 반환하게 되는데, 이 추가된 데이터는 서버 메모리에서 임의의 데이터를 가져오게 됩니다. 이 데이터에는 암호화 키, 비밀번호, 세션 쿠키 등 민감한 정보가 포함될 수 있습니다.

Ⅲ. Heartbleed 취약점 특징

ⅰ) 영향 범위: Heartbleed는 OpenSSL 버전 1.0.1부터 1.0.1f까지, 그리고 1.0.2-beta 버전에 영향을 미쳤습니다. 이 취약점은 전 세계 수백만 대의 서버와 클라이언트에 영향을 미쳤습니다.
정보 노출: 메모리에서 유출된 정보에는 암호화 키, 사용자 비밀번호, 세션 토큰, 인증서 등 매우 민감한 정보가 포함될 수 있습니다. 이러한 정보가 유출되면, 공격자는 시스템에 무단 접근하거나 암호화된 통신을 해독할 수 있습니다.
ⅱ) 비추적성: Heartbleed 공격은 로그에 남지 않기 때문에, 공격이 발생했는지 여부를 파악하기가 매우 어렵습니다. 이는 공격자가 반복적으로 메모리 데이터를 탈취하더라도 탐지가 매우 어려움을 의미합니다.

Ⅳ. Heartbleed 취약점 조치 방법

ⅰ) OpenSSL 업데이트: 취약한 OpenSSL 버전을 사용하는 모든 시스템에서 즉시 패치를 적용해야 합니다. OpenSSL 1.0.1g 버전에서 이 취약점이 수정되었습니다. 따라서 1.0.1g 이상의 버전으로 업데이트해야 합니다.

ⅱ) TLS/SSL 인증서 재발급: 취약점이 존재하는 동안 공격자가 비밀 키를 탈취했을 가능성을 염두에 두고, 모든 SSL/TLS 인증서를 재발급받고 비밀 키를 교체해야 합니다.

ⅲ) 비밀번호 변경: 취약한 서버를 사용하던 사용자들에게 비밀번호 변경을 권고해야 합니다. 서버의 사용자 데이터가 유출되었을 수 있기 때문에, 공격이 가능했던 기간 동안 사용되던 모든 비밀번호를 재설정하는 것이 중요합니다.

ⅳ) 시스템 점검: 취약점을 이용해 민감한 정보가 유출되었을 가능성을 점검하고, 관련 로그나 데이터를 검토하여 추가적인 보안 위험을 평가해야 합니다.

ⅴ) 보안 모니터링 강화: Heartbleed와 같은 취약점으로 인해 보안 시스템을 더욱 강화하고, 보안 모니터링 체계를 재점검하는 것이 필요합니다.

반응형