2013년 4월 7일 OpenSSL에 치명적인 보안 결함이 세상에 알려졌으며, "하트블리드 (Heartbleed, 심장출혈)" 이라는 좀 무서운 이름으로 명명되었습니다. 아래 그림만 보아도 매우 위험해 보이는 보안 취약성입니다.^^




이번 글에서는 하트블리드의 원인과 대책을 살펴보겠지만, UC 및 협업 솔루션 위주로 살펴보겠습니다. 넥스퍼트를 방문하시는 여러분들이 웹서버나 기타 단말에 대해서는 별로 관심이 없을 듯합니다. ^^



하트비트 (Heartbeat)의 이해
하트블러드는 하트비트를 이용한 공격이므로 하트비트에 대해 먼저 알아야 합니다. 아래 그림과 같이 TLS / SSL을 이용하여 암호화 통신 중에 클라이언트는 서버와 현재의 세션이 유지되고 있는 지를 확인하기 위해 하트비트를 주고 받습니다. 하트비트는 심장박동을 가리키는 의학용어이지만, IT 에서는 통신하는 상호간의 Keep-alive Check를 하는 행위를 가리킵니다. 



TLS/SSL에서 하트비트는 요청과 응답 (Request & Response) 으로 구성됩니다. 하트비트 요청 시 기존의 TLS / SSL 세션으로 특정 단어를 보내면서 이 단어로 응답해 줄 것을 요청합니다. 요청을 받은 서버가 응답을 하면 세션이 살아 있는 것이므로 통신을 계속합니다. 



하트블리드(HeartBleed)의 이해

OpenSSL기반의 TLS / SSL 통신 상의 하트비트의 문제점은 요청하는 단어의 길이를 제한하지 않았기 때문입니다. 아래그림과 같이 "stupid"라는 단어로 응답해줄 것을 요청하면서 단어의 길이를 1000글자라고 보내게 되면, 서버는 "stupid"라는 단어와 함께 1000글자를 보내야 하므로 서버 메모리 내의 정보 가운데 stupid가 포함된 문자열을 무작위로 1000글자를 전송합니다. 하트비트의 요청 단어의 길이는 최대 64KB로 제한되어 있으므로 한번에 64KB 씩 메모리가 복제되는 것입니다. 따라서, 공격자가 반복적으로 시도 시 메모리에 있는 불특정한 정보를 가져갈 수 있습니다. 


보안 전문가들은 하트비트에서 보안 취약점이 발견되었으므로 심장에서 피를 흘린다는 의미로 하트블러드 (심장출혈)라고 명명하였습니다. 



하트블리드의 위험정도 및 해결책
공격자가 지속적으로 하트비트를 이용한 공격을 지속적으로 시도할 경우 주민등록번호 및 카드번호와 같은 개인 정보와 암호화 키나 키쌍이 노출될 가능성이 있습니다. 이런 가정은 최악의 상황을 가정한 것으로 실제적으로는 쉽게 가져갈수는 없습니다. 


공격자가 "라인하트"라는 사람의 개인정보를 획득하기 위해 지속적으로 시도한다고 할때 관련 정보가 메모리에 있을 경우에 64KB 정도의 정보를 가져가게 되고 장기간에 걸친 공격으로 수집된 정보를 조합하여 해킹을 할 수 있습니다. 그러나 보안 전문가들이 하트비트를 이용한 공격을 시도하여 보았지만 실제적인 성공률은 매우 낮다고 발표하였습니다.  


현재 전세계 서버의 약 67% 정도가 영향을 받는 것으로 추정되고 있으며, 직접적인 영향을 받는 OpenSSL 버전은 다음과 같습니다.  

  • OpenSSL 1.0.2 beta
  • OpenSSL 1.0.1 ~ OpenSSL 1.0.1f
위에서 명시된 버전의 OpenSSL Library를 사용한 장비들은 기본적으로 영향을 받게 됩니다. OpenSSL 1.0.1 이상 버전은 TLS 1.1 및 TLS 1.2를 지원하는 버전으로 역시 최신 기술은 성숙될 시간이 필요하다는 사실을 다시금 보여준 사례입니다. 

하트블리드를 해결하기 위해서는 다음의 버전으로 OpenSSL Library를 업그레이드 해야 합니다만, 장비별로 구현하는 과정이 다르므로 단순한 업그레이드만으로 해결되는 것만은 아닐 것입니다.
  • OpenSSL 1.0.2 beta2
  • OpenSSL 1.0.1g
  • OpenSSL 1.0.0 (and 1.0.0 branch release)
  • OpenSSL 1.9.8 (and 0.9.8 branch release)

지금까지 TLS / SSL에 대해서만 언급하였지만, HTTPS를 사용하는 어플리케이션들에서도 마찬가지 문제가 발생합니다. 하트블리드는 보안 서비스를 사용하는 경우에 발생하는 것으로 하드웨어 문제가 아니므로 소프트웨어 패치로 해결이 될 수 있습니다.


시스코의 대응
시스코는 4월 7일 하트블리드 보안 취약점이 공개된 이후 발빠르게 움직이고 있습니다. 시스코는 다수의 제품에 대한 전수조사에만 몇 주가 소요되고 있습니다. 관련 업데이트 정보는 Cisco Security Advisory에 실시간으로 공유되고 있습니다. 또한, 시스코는 시스코의 유지보수 계약에 상관없이 하트블리드 취약점을 해결한 패치를 무료로 배포하기로 결정하였습니다. 

시스코 제품을 사용중인 기업은 아래의 웹페이지에서 영향받는 제품과 해결책을 확인할 수 있습니다.



위의 웹페이지에서 "Vulnerable Products" 부분은 아래 그림과 같이 제품과 관련 정보를 확인할 수 있습니다. 




현재 하트블리드 문제를 해결한 제품과 버전은 "Software Version and Fixes"에서 확인할 수 있습니다. 시스코 협업 솔루션 가운데 하트블리드를 해결한 제품은 다음과 같습니다.

  • Cisco WebEx Meeting Server 2.0 MR2
  • Cisco TelePresence Video Communication Server (VCS) 8.1.1






하트블리드에 대처하는 우리의 자세
IT 기업들은 적극적으로 대처하고 있습니다. 구글은 안드로이드 4.1.x 젤리빈이 취약한 것으로 밝혀져 4.2 업그레이드를 권장하고 있습니다. 애플은 폐쇄적인 OS 운영으로 이번  하트블리드에 대한 문제가 없습니다. 아이러니하게도 애플의 iOS와 OS X의 폐쇄성이 보안에는 더 나은 결과를 만들었습니다. 

하트블리드와 관련된 기사들을 살펴보면 하트블리드건에 대해 두 가지방향으로 이야기가 전개되고 있습니다. 하나는 오픈소스의 개발 방식의 문제점을 부각하는 내용이고, 하나는 자극적인 제목으로 위험성을 강조하는 내용입니다. 

자극적인 제목의 위험성을 강조하는 기사가 많지만, 일반인들의 반응은 시큰둥합니다. 매달 수십만건의 개인정보 유출 사고가 발생하는 나라에 살고 있는 사람들의 반응으로는 당연해 보입니다. 아무리 자극적인 제목을 달아도 사람들이 관심은 적고 이에 대응을 위한 개인의 역할은 제한적으로 패스워드 변경정도 밖에 없습니다. 결국 IT 종사자들이 관련 제품의 위험성을 확인하고 제조사와 연계하여 제품 업그레이드 및 인증서 변경등을 수행해야 합니다. 사실 하트블리드 보안 취약성에 대한 위험성은 인지하고 대처할 필요는 없지만, 불안감을 너무 높일 필요는 없을 듯합니다.   

또하나의 이야기 전개인 오픈 소스에 대한 부정적인 시각입니다. 모든 소프트웨어는 항상 버그나 보안에 취약할 가능성을 가지고 있습니다. 오픈소스는 수많은 전문가들에 의해 끊임없이 검증과정을 거치지지만, 소프트웨어 업체의 프로그램은 몇몇 관련 직원들에 의해서 폐쇄적으로 검증됩니다. 하트블리드는 검증과정이 소홀했음이 드러나긴 했지만, 대형 소프트웨어 기업의 어플리케이션이 오픈소스보다 더욱 안전하다고 말할 수 있는 사람은 아무도 없습니다. 실제로 마이크로소프트 운영체제의 보안사고는 빈번하게 발생해 왔습니다. 하트블리드건으로 오픈소스 진영에 대한 공격으로 위축시키기 보다는 오픈소스가 기여한 바를 볼때 기업들의 펀딩이 활발해지길 기대해 봅니다. 


마치며
그러고 보니 보안 위험성 때문에 마이크로소프트도 포기한 액티브X를 끝까지 붙들고 있는 나라가 있습니다. 대한민국에서 액티브 X와 공인 인증서의 보안 취약성과 하트블리드 중 어느 것이 더 위험할까요? 살짜기 궁금해집니다. ^^



참고자료

엔하위키미러 : http://mirror.enha.kr/wiki/%ED%95%98%ED%8A%B8%EB%B8%94%EB%A6%AC%EB%93%9C%20%EC%82%AC%ED%83%9C




라인하
트 (CCIEV #18487)
  ----------------------------------------------------------
ucwana@gmail.com (라인하트의 구글 이메일) 
http://twitter.com/nexpertnet (넥스퍼트 블로그의 트위터, 최신 업데이트 정보 및 공지 사항) 
http://groups.google.com/group/cciev (시스코 UC를 공부하는 사람들이 모인 구글 구룹스) 
http://groups.google.com/group/ucforum (벤더에 상관없이 UC를 공부하는 사람들이 모인 구글 구룹스) 
세상을 이롭게 하는 기술을 지향합니다. ________________________________________________________



Posted by 라인하트

댓글을 달아 주세요

  1. 시오현 2014.04.26 07:11 신고  댓글주소  수정/삭제  댓글쓰기

    라인하트님 글 감사합니다. 고객사에서 UC쪽에 Heartbleed 위험은 없는지 체크해달라는 요청도 있더군요. Cisco 링크중에 vulnerable product 가 있던데 CUCM version 10 밑으로는 위험이 없는 걸까요? 하위 버전은 별 설명을 안해놔서 궁긍하네요. 딱히 workaround solution 도 나오지 않았는데 version 10으로 업그레드하는 것도 조금 꺼려지네요.

    Vulnerable Products.
    Cisco Unified 7800 Series IP Phones [CSCuo16987]
    Cisco Unified 8961 IP Phone [CSCuo16938] [*]
    Cisco Unified 9951 IP Phone [CSCuo16938] [*]
    Cisco Unified 9971 IP Phone [CSCuo16938] [*]
    Cisco Unified Communications Manager (UCM) 10.0 [CSCuo17440]
    Cisco Unified Communications Manager Session Management Edition (SME) [CSCuo17440]
    Cisco Unified Presence Server (CUPS)[CSCuo21298], [CSCuo21289]
    Cisco Unity Connection (UC)[CSCuo30540]

    • 라인하트 2014.04.28 12:12 신고  댓글주소  수정/삭제

      네 CUCM 10.0 이하 버전은 OpenSSL 하트비트 취약 버전을 사용하고 있지 않습니다. 그러므로 별 문제 없습니다.



티스토리 툴바