2014년 4월에 선보인 OpenSSL의 취약성 허트블리드(Heartbleed)는 야후(Yahoo) 같은 주요 사이트를 구동하는 수천 개의 웹 서버에 존재했다. OpenSSL은 ‘TLS & SSL 프로토콜’을 구현하는 오픈소스 코드 라이브러리이다. 이 취약성 때문에 악의적인 공격자가 취약한 웹 서버를 손쉽게 속여 사용자 이름과 비밀번호 등의 민감한 정보를 전송하도록 할 수 있었다.
이 결함은 TLS/SSL 표준 자체보다 OpenSSL 구현에 있었지만 문제는 OpenSSL이 너무 광범위하게 사용되고 있다는 점이다(버그가 공개되었을 때, 전체 SSL 서버의 17%가 영향을 받았다).
허트블리드를 허트블리드라 부르는 이유?
‘허트블리드’라는 이름은 TLS/SSL 프로토콜의 중요한 구성요소의 이름인 ‘heartbeat’에서 유래했다. ‘heartbeat’는 사용자가 다운로드 또는 업로드를 하지 않고 있는 순간에 서로 통신하는 2개의 컴퓨터가 여전히 연결되어 있음을 서로에게 알려주는 방식이다. 때로는 두 컴퓨터 중 하나가 다른 컴퓨터에게 ‘heartbeat request’라는 암호화된 데이터를 전송한다. 두번째 컴퓨터는 정확히 동일한 암호화된 데이터로 응답하여 연결되어 있음을 증명한다.
허트블리드 취약성은 공격자가 ‘heartbeat request’를 사용하여 대상 서버로부터 정보를 추출할 수 있기 때문에 이름이 붙여졌다. 은유적으로 표현하자면, 피해자는 ‘heartbeat request’를 통해 민감한 데이터를 유출(bleed)한다.
허트블리드는 어떻게 작동하는가?
허트블리드는 민감한 사실 하나에 기반한다. ‘heartbeat request’에는 자체 길이에 대한 정보가 포함되어 있지만 취약한 버전의 OpenSSL 라이브러리는 정보가 정확한지 확인하지 않으며 공격자는 이를 활용해 대상 서버가 비공개로 유지되어야 하는 메모리 부분에 대한 공격자의 액세스를 허용하도록 속일 수 있다. 그 이면의 메커니즘을 이해하기 위해 전형적인 OpenSSL 사례를 살펴보면 다음과 같다.
야후 메일을 읽고 있지만 추가적인 정보를 로딩하기 위해 아무런 동작도 하지 않았다고 생각해보자. 웹 브라우저는 야후의 서버가 여전히 활성 상태로 응답하고 있는지 확인하고 싶기 때문에 기본적으로 다음과 같은 메시지를 전송한다. “곧 40KB 메시지를 받게 될 것이다. 이것을 나에게 재전송하라.”
이것이 우리가 앞서 논의한 ‘heartbeat request’이다. ‘heartbeat request’는 크기가 가변적일 수 있으며(최대 64KB), 각 요청은 특정 길이에 대한 정보를 포함해야 한다.
야후의 서버가 이 메시지를 수신하면 메모리 버퍼(정보를 저장할 수 있는 물리적인 메모리 부분)를 ‘heartbeat request’의 보고된 길이와 같은 크기로 할당한다. 우리의 예에서는 40KB이다. 그리고 서버는 요청의 암호화된 데이터를 메모리 버퍼에 저장한 후 즉시 데이터를 다시 읽어 들이고 웹 브라우저로 재전송한다. 브라우저가 전송한 정보를 재전송 받으면 현 시점까지 통신하고 있던 서버와 여전히 연결되어 있음을 확인할 수 있다.
허트블리드 취약성은 OpenSSL의 ‘heartbeat’ 기능 구현에 중요한 안전 조치가 누락되어 있었기 때문에 발생했다. ‘heartbeat request’를 수신한 컴퓨터가 요청의 길이가 실제로 정확한지 절대로 확인하지 않았다. 그래서 요청에서 40KB 길이라고 이야기하지만 실제로는 20KB 밖에 되지 않는 경우 수신하는 컴퓨터는 40KB의 메모리 버퍼를 할당하고 실제로 수신한 20KB를 저장한 후 20KB와 함께 메모리의 다음 20KB에 있는 것을 재전송한다.
그 20KB에는 온갖 것들이 있을 수 있다. 왜냐하면 컴퓨터가 정보 처리를 끝냈더라도 다른 것으로 덮어쓸 때까지는 해당 데이터가 여전히 메모리 버퍼 안에 존재한다. 추가적인 20KB의 데이터는 공격자가 웹 서버로부터 새롭게 추출한 정보가 되는 셈이다.
허트블리드가 위험한 이유는 무엇인가?
허트블리드는 공격자가 민감한 정보가 포함되어 있을 수 있는 메모리 버퍼의 내용을 확인할 수 있기 때문에 위험하다. 솔직히, 공격자 입장에서는 서버에서 탈취한 그 20KB에 어떤 것이 숨어 있을지 미리 알 수 없지만 다양한 가능성이 있다. 횡설수설하거나 쓸모없는 쓰레기일 수 있다. 정말로 운이 좋다면 해당 서버에 대한 보안 통신의 복호화를 허용하는 SSL 비공개 키를 얻을 수 있다. 가능성은 낮지만 공격자에게는 성배가 될 것이다. 일반적으로 서버에서 구동하는 애플리케이션과 서비스로 제출된 사용자 이름과 비밀번호를 얻을 수 있으며, 이를 통해 앱에 로그인하여 사용자 계정에 액세스할 수 있다.
랜달 먼로의 웹툰 xkcd는 특히 먼로의 전문 분야인 컴퓨터 공학 부문의 어려운 과학적 개념을 쉽게 설명하는 것으로 유명하다. 2014년의 이 xkcd 만화에서는 허트블리드 취약성이 어떻게 작용하는지 간결하게 요약하고 있다.
허트블리드는 어떻게 발견되었는가?
허트블리드는 독립적으로 활동하는 2개의 그룹이 전혀 다른 방식으로 발견했다. 하나는 OpenSSL의 오픈소스 코드베이스의 검토 과정이었고, 다른 하나는 OpenSSL을 구동하는 서버에 대한 일련의 시뮬레이션 공격 과정에서였다. 두 그룹은 불과 몇 주 차이로 이 취약성을 발견했다. 이 취약성이 2년 동안 감지되지 않고 숨어 있었다는 점을 감안하면 우연적인 결과다.
구글에 근무하는 엔지니어 닐 메타가 2014년 3월 처음으로 허트블리드를 발견했다. 메타는 OpenSSL 코드에 대한 라인별 감사를 수행하기로 결정했다. 왜냐하면 해당 연도 초에 발견된 2건의 SSL 결함인 goto fail과 GnuTLS 때문에 SSL/TLS 생태계의 다른 곳에 다른 위험이 숨어 있을 수 있다고 의심하게 됐다.
그가 이 버그를 찾아내고 구현을 실현한 후 구글은 공개적으로 발표하거나 미 정부에게 알리지 않았지만 클라우드플레어(CloudFlare) 같은 일부 인프라 기업들에게 이에 관해 비밀스럽게 알리기 시작했다.
두번째 발견은 몇 주 후 핀란드의 사이버 보안 기업 코드노미콘(Codenomicon)에서 이뤄졌다. 해당 기업은 암호화 및 인증 툴링에 대한 침투 테스트를 위해 설계된 세이프가드(Safeguard)라는 제품을 개발하고 있었다. 스스로의 개먹이를 먹는 장엄한 기술 산업 전통 속에서 코드노미콘은 자체 인프라에서 세이프가드를 테스트하기로 결정했고 충격적인 양의 데이터에 액세스할 수 있음을 발견했다.
코드노미콘은 구글과 꽤 다른 조치를 취했다. 발견사항을 공개할 뿐 아니라 이를 브랜드화 했다. 허트블리드라는 이름을 붙였고 심지어 로고도 디자인했다. 이것은 보안 기업이 취약성 발견을 마케팅 기회로 삼은 초기 사례이기도 하다.
허트블리드 CVE
CVE 시스템에서 허트블리드의 식별자는 CVE-2014-0160이며, 이 링크를 따라가면 버그에 관한 많은 정보를 얻을 수 있다.
memcpy()는 데이터를 복사하는 명령이다. bp는 이를 복사하는 위치이다, pl은 복사를 하는 출처이며 payload는 복사되는 데이터의 길이이다. 언급했듯이 문제는 pl의 데이터의 양이 payload의 주어진 값과 같은지 절대로 확인하려 시도하지 않았다는 것이다.
여기에서 가장 아이러니한 점은 OpenSSL이 오픈소스 소프트웨어라는 점이다. 누구든 코드를 들여다볼 수 있었지만 메타와 코드노미콘 팀이 우연히 발견할 때까지 아무도 이런 꽤 기본적인 코딩 오류를 알아차리지 못했다.
허트블리드 익스플로잇 공격: 누가 허트블리드의 영향을 받는가?
허트블리드 취약성에 대한 실질적인 익스플로잇 공격이 있었지만 버그가 널리 공개되기 전에 발생했는지 여부는 확실하지 않다. 2013년경에 보안 기업들이 감지한 일부 공격에서 이 취약성을 찾고 있었을 수 있으며, 일각에서는 공격자들이 정부 보안 기관이었다고 생각하고 있다.
코드노미콘이 취약성을 공개한 2014년 4월 이후, 기업들이 시스템을 업데이트하느라 분투하면서 많은 활동과 일정량의 혼란이 있었다. 예를 들어, 야후와 OK큐피드(OKCupid)의 사용자들은 이 서비스들이 OpenSSL의 설치를 패치 할 때까지 계정에 로그인하지 말고 액세스를 다시 획득하면 비밀번호를 변경하라는 안내를 받았다.
이런 대기업들은 나쁜 일이 닥치기 전에 만반의 준비를 갖출 수 있었지만 해커들은 여러 사례에서 취약점을 악용할 수 있었다. 환자 데이터를 훔친 CHS(Community Health Systems)에 대한 공격도 CRA(Canadian Revenue Agency)에서 수백 개의 소셜 ID 번호가 도난당한 것과 마찬가지로 허트블리드가 원인이었다.
비용
허트블리드의 비용은 이런 성공적인 공격으로 인해 발생한 피해 이상의 수준이었다. 시큐리티 매거진(Security Magazine)은 SSL 인증을 폐지하고 대체해야 하는 수천 개의 조직의 비용이 최대 500억 달러에 달할 수 있을 것으로 추산했다. 그리고 시스템 점검 및 업데이트에 필요한 근로 시간이 증가하고 이 취약성과 직접 관련된 지출이 크게 증가한다.
허트블리드 픽스(Fix)
허트블리드 픽스는 2014년 4월 8일 공개된 OpenSSL 라이브러리의 1.0.1g 버전에서 제공되었으며, 이후의 모든 소프트웨어 버전에도 포함되었다. OpenSSL을 최신 버전으로 업그레이드하여 허트블리드 취약성을 해결할 수 있고 모든 최신 코드에 대한 링크는 OpenSSL 웹 사이트에서 확인할 수 있다.
/* Read type and payload length first */
if (1 + 2 + 16 > s->s3->relent)
return 0;
/* silently discard */
hbtype = *p++;
n2s(p, payload);
if (1 + 2 + payload + 16 > s->s3->rrec.length)
return 0;
/* silently discard per RFC 6520 sec. 4 */
pl = p;
픽스를 구현하는 코드에 대해 궁금하다면 살펴볼 수 있다. 어쨌든 OpenSSL은 오픈소스다. 이 코드의 첫번째 부분은 ‘heartbeat reques’t가 문제를 유발할 수 있는 0KB가 아닌지 확인한다. 두번째 부분은 길이가 요청한 대로인지 확인한다.
허트블리드는 여전히 문제인가?
허트블리드는 8년 전에 발견되어 패치 되었기 때문에 많은 서버들이 여전히 허트블리드 취약성을 숨기고 있다는 사실이 놀라울 수 있겠다. 사실, SANS ISC(Internet Storm Center)의 연구원에 따르면 2020년 11월에 20만 개가 온라인 상태였다. 그 이후로 수치가 조금 감소했을 수는 있지만 여전히 다수의 취약한 서버가 언제 해킹될지 모르는 상황이다.
숙련된 보안 전문가는 이런 사실에 그리 놀라지 않을 것이다. 기업들은 백업 없이 업무에 필수적인 시스템의 다운타임을 피하기 위해 또는 단순히 방치하면서 패치를 하지 않는 경우가 많다. 하지만 패치 되지 않은 기기의 수는 스스로 탄탄한 패치 관리 프로그램 제공의 중요성에 대한 경종을 울리고 있다.
허트블리드 취약성 테스트: 허트블리드를 감지하는 방법
무료 온라인 도구로 서버를 손쉽게 테스트하여 허트블리드 취약성을 감지할 수 있다. 예를 들어, <pentest-tools.com>은 URL을 입력하여 서버가 허트블리드 및 기타 다수의 취약성에 대해 적절히 패치 되어 있는지 확인할 수 있는 무료 웹 기반 테스트가 있다.
관리하는 서버가 한 동안 취약한 상태로 방치되었음을 발견한 경우 OpenSSL 코드를 업데이트하는 것 외에 할 일이 있다. 예를 들어, 서버가 사용하는 SSL 인증서가 흔적 없이 해킹되었을 수 있기 때문에 변경해야 한다. 그리고 시스템에 계정이 있는 사용자도 비밀번호를 변경해야 한다. ciokr@idg.co.kr
VPN (가상 사설 네트워크, Virtual Private Network)은 인터넷 사용자에게 개인 정보 보호와 보안을 제공하는 중요한 도구로 널리 인정받고 있다. VPN은 공공 와이파이 환경에서도 데이터를 안전하게 전송할 수 있고, 개인 정보를 보호하는 데 도움을 준다. VPN 서비스의 수요가 증가하는 것도 같은 이유에서다.
동시에 유료와 무료 중 어떤 VPN을 선택해야 할지 많은 관심을 가지고 살펴보는 사용자가 많다. 가장 먼저 사용자의 관심을 끄는 것은 별도의 예산 부담이 없는 무료 VPN이지만, 그만큼의 한계도 있다.
무료 VPN, 정말 괜찮을까?
무료 VPN 서비스는 편리하고 경제적 부담도 없지만 고려할 점이 아예 없는 것은 아니다.
보안 우려
대부분의 무료 VPN 서비스는 유료 서비스에 비해 보안 수준이 낮을 수 있다. 일부 무료 VPN은 사용자 데이터를 수집해 광고주나 서드파티 업체에 판매하는 경우도 있다. 이러한 상황에서 개인 정보가 유출될 우려가 있다.
속도와 대역폭 제한
무료 VPN 서비스는 종종 속도와 대역폭에 제한을 생긴다. 따라서 사용자는 느린 인터넷 속도를 경험할 수 있으며, 높은 대역폭이 필요한 작업을 수행하는 데 제약을 받을 수 있다.
서비스 제한
무료 VPN 서비스는 종종 서버 위치가 적거나 특정 서비스 또는 웹사이트에 액세스하지 못하는 경우가 생긴다. 또한 사용자 수가 늘어나 서버 부하가 증가하면 서비스의 안정성이 저하될 수 있다.
광고 및 추적
일부 무료 VPN은 광고를 삽입하거나 사용자의 온라인 활동을 추적하여 광고주에게 판매할 수 있다. 이 경우 사용자가 광고를 보아야 하거나 개인 정보를 노출해야 할 수도 있다.
제한된 기능
무료 VPN은 유료 버전에 비해 기능이 제한될 수 있다. 예를 들어, 특정 프로토콜이나 고급 보안 기능을 지원하지 않는 경우가 그렇다.
유료 VPN의 필요성
최근 유행하는 로맨스 스캠은 인터넷 사기의 일종으로, 온라인 데이트나 소셜 미디어를 통해 가짜 프로필을 만들어 상대를 속이는 행위다. 이러한 상황에서 VPN은 사용자가 안전한 연결을 유지하고 사기 행위를 방지하는 데 도움이 된다. VPN을 통해 사용자는 상대방의 신원을 확인하고 의심스러운 활동을 감지할 수 있다.
그 외에도 유료 VPN만의 강점을 적극 이용해야 하는 이유는 다음 3가지로 요약할 수 있다.
보안 강화
해외 여행객이 증가함에 따라 공공 와이파이를 사용하는 경우가 늘어나고 있다. 그러나 공공 와이파이는 보안이 취약해 개인 정보를 노출할 위험이 있다. 따라서 VPN을 사용하여 데이터를 암호화하고 개인 정보를 보호하는 것이 중요하다. 서프샤크 VPN은 사용자의 개인 정보를 안전하게 유지하고 해킹을 방지하는 데 유용하다.
개인 정보 보호
인터넷 사용자의 검색 기록과 콘텐츠 소비 패턴은 플랫폼에 의해 추적될 수 있다. VPN을 사용하면 사용자의 IP 주소와 로그를 숨길 수 있으며, 개인 정보를 보호할 수 있다. 또한 VPN은 사용자의 위치를 숨기고 인터넷 활동을 익명으로 유지하는 데 도움이 된다.
지역 제한 해제
해외 여행 중에도 한국에서 송금이 필요한 경우가 생길 수 있다. 그러나 IP가 해외 주소이므로 은행 앱에 접근하는 것이 제한될 수 있다. VPN을 사용하면 지역 제한을 해제해 해외에서도 한국 인터넷 서비스를 이용할 수 있다. 따라서 해외에서도 안전하고 편리하게 인터넷을 이용할 수 있다.
빠르고 안전한 유료 VPN, 서프샤크 VPN
뛰어난 보안
서프샤크 VPN은 강력한 암호화 기술을 사용하여 사용자의 인터넷 연결을 안전하게 보호한다. 이는 사용자의 개인 정보와 데이터를 보호하고 외부 공격으로부터 사용자를 보호하는 데 도움이 된다.
다양한 서버 위치
서프샤크 VPN은 전 세계 곳곳에 여러 서버가 위치하고 있어, 사용자가 지역 제한된 콘텐츠에 액세스할 수 있다. 해외에서도 로컬 콘텐츠에 손쉽게 접근할 수 있음은 물론이다.
속도와 대역폭
서프샤크 VPN은 빠른 속도와 무제한 대역폭을 제공하여 사용자가 원활한 인터넷 경험을 누릴 수 있도록 지원한다. 온라인 게임, 스트리밍, 다운로드 등 대역폭이 필요한 활동에 이상적이다.
다양한 플랫폼 지원
서프샤크 VPN은 다양한 플랫폼 및 디바이스에서 사용할 수 있다. 윈도우, 맥OS, iOS, 안드로이드 등 다양한 운영체제 및 디바이스에서 호환되어 사용자가 어디서나 안전한 인터넷을 즐길 수 있다.
디바이스 무제한 연결
서프샤크 VPN은 무제한 연결을 제공하여 사용자가 필요할 때 언제든지 디바이스의 갯수에 상관없이 VPN을 사용할 수 있다.