Computer >> 컴퓨터 >  >> 네트워킹 >> 인터넷

하트블리드(Heartbleed), 내 심장 박동 소리를 들어봐, 오-오

평소 나는 소프트웨어 보안에 대해 상당히 회의적인 입장이다. 보안 업계의 주된 목적 중 하나는 사람들을 겁주어 보안 제품을 구매하게 만들고, 그 결과 '안전하다'는 착각만을 심어주는 것이라고 믿기 때문이다. 가장 좋은 예는 윈도우 XP가 퇴장하기 전 윈도우 악성코드 상황을 두고 벌어진 상반된 시각이다. 마이크로소프트의 보고서는 자사의 최신 운영체제가 더 안전하다고 밝힌 반면, 백신 업체들의 보고서는 정확히 반대를 주장했다. 이런 눈살 찌푸리는 태도 그대로, 이번 최신 OpenSSL 문제를 들여다보자.

몇몇 독자들, 즉 한 명 이상이 내 다소 냉담한 태도를 고려해 이 주제를 좀 더 자세히 설명해달라고 요청했다. 실제로 이건 윈도우가 아니라 리눅스이고, 웹이며, 완전히 다른 차원의 이야기다. 그래서 흥미로울 수밖에 없다.

하트블리드(Heartbleed) 핵심 요약

핵심적으로 하트블리드는 OpenSSL의 하트비트(Heartbeat) 확장 기능에 존재하는 버그로, 요청자가 대상 시스템의 OpenSSL 라이브러리 메모리로부터 임의의 데이터를 받아낼 수 있도록 허용하는 문제다. 다시 말해, TLS 통신에 꼭 필요한 데이터만 돌려줘야 할 대상 호스트가 그 이상을 함께 반환한다는 뜻이다. 이는 사실상 원래 요청자에게 보내져서는 안 될 메모리 페이지까지 열람할 수 있음을 의미한다.

그리고 그게 전부다. 문제는 이 버그가 영향을 미치는 범위다. 수많은 고객을 보유한 웹 호스팅 서비스와 사이트 곳곳이 대상이기 때문에, 하트블리드는 단순한 또 하나의 버그 그 이상이 되었다.

왜 이것이 심각한가

그렇다, 잘 들었다. 나는 이것이 심각한 문제라고 생각한다. 하지만 표적 사이트에서 어떤 종류의 데이터가 수집되었을 수 있는지 때문이 아니다. 기밀 정보를 훔치는 것이야 원래 도청의 목적이며, 앞으로도 그럴 것이다. 그건 논외다.

정말 중요한 것은 이 문제가 어떤 경위로 발생했느냐이다. 하트비트 버그는 두 가지 핵심 원인에서 비롯됐다. 첫 번째는 잘못된 입력값 검증이다. 프로그래밍의 오래된 난제로, 개발자가 변수 초기화, 경계 검사, 반환값 확인을 잊어버릴 때 발생한다. 사무실 칸막이 속 개발자를 함부로 믿으면 안 되는 이유다. 물론 최고의 개발자에게도 일어나는 일이다. Hello World! 수준을 넘어서면 어쩔 수 없는 노릇이다.

두 번째 문제는 OpenSSL 개발자들이 메모리를 동적으로 할당하고 해제하는 free와 malloc 루틴을 자체적으로 재구현해 사용했다는 점이다. 즉, 자신들이 남들보다 더 잘 안다고 믿었던 것이다.

그래서 맞다, 이렇게 문제를 분해해서 보면 짜증이 난다. 거의 체르노빌 사고와 비슷하다. 자잘한 문제들이 하나둘 쌓여 결국 하나의 디지털 참사가 된 것이다.

우리가 할 수 있는 일 - 올바른 관점

솔직히 말해 일반 사용자가 할 수 있는 일은 많지 않다. 문제는 대부분 서버 쪽에 있다. 물론 취약한 OpenSSL 라이브러리를 사용하는 모든 머신에도 영향을 미친다. 하지만 스스로에게 물어보라. 웹에서 정보를 가져오거나 게임 서버에 접속하는 것 외에, 당신의 기기가 TLS로 다른 호스트와 직접 통신하는 일이 얼마나 자주 있는가?

반면 대형 사이트라면, 설령 피해가 있었더라도 트래픽 규모가 너무 방대해서 모든 정보를 처리하려면 상당한 컴퓨팅 파워가 필요하고, 메모리 내용도 너무 파편적이어서 일관된 그림을 만들어내기 어렵다고 나는 개인적으로 생각한다.

물론 이건 수학적 논문이 아니라 어디까지나 나의 직감이므로, 독설은 접어두기 바란다. 생각해 보라. 구글을 예로 들어보자. 수만 대의 서버로 구성된 거대한 컴퓨팅 팜이 웹 관련 서비스를 제공하며, 각 서버는 초당 수백 건의 요청을 처리한다. 이런 자원에 하트비트 요청을 보낸들, 데이터를 모두 수집하려면 자신도 서버 여러 대를 동원해야 한다. 게다가 SSL 데이터를 진지하게 노리는 공격자라면 해당 자원에 DoS 공격을 가해 스스로 발을 걸어둘 이유가 없다. 세째로, 설령 인증 정보가 유출되었더라도 스위치 네트워크에서 의미 있는 방식으로 트래픽을 엿보는 것 자체가 쉬운 일이 아니다.

이 말은 당신을 안심시키기 위한 것이 아니다. 그게 요점이 아니다. 문제를 합리적으로 검토하라는 것뿐이다. 그래, 이론적으로, 어쩌면 실제로도 일부 SSL 데이터가 유출되었을 수 있다. 예방 차원에서 일부 웹사이트는 비밀번호 변경을 권장했다. 이건 나쁘지 않은 습관이다. 더 나아가 2단계 인증 활용과 사이트마다 다른 비밀번호 사용도 좋은 선택이다.

걱정을 조금 덜어줄 만한 사실 하나는, 전 세계 기업 환경의 설치 기반 대부분이 구버전 엔터프라이즈 배포판을 실행 중이며, 이들은 대체로 이 취약점의 영향을 받지 않았다는 점이다. 낡은 CentOS 같은 것들을 '구식이고 촌스럽다'며 깎아내리곤 했지만, 적어도 이번에는 쓸모가 있었던 셈이다.

일반 사용자로서 할 수 있는 것

착한 시민이 되고 싶다면 실제로 할 수 있는 일들이 있다. 자주 쓰는 사이트들이 아직 취약한 버전을 사용 중인지 확인하라. 그렇다면 신고하고, 상위에 전달하고, 수정을 요청하라. 사용자 입장에서는 이 정도다.

비밀번호는 앞서 언급했다. 단, 이 버그가 2012년 초부터, 2년 넘게 존재해왔다는 점을 기억하라. 그동안 아무도 몰랐다는 사실은 아마도 이 문제가 광범위하고 은밀하게 악용되지 않았음을 의미할 것이다. 만약 악용되었다면, 2년 전부터 지금 사이 어딘가에서 정보가 유출되었을 수 있다. 상황을 올바른 관점으로 바라볼 필요가 있다.

직접 사이트를 운영한다면 책임감 있게 시스템을 업데이트하고, 새 라이브러리가 메모리에 로드되도록 해당 서비스를 재시작하라. 그리고 가장 중요한 것, 평범한 컨설팅 회사가 개발한 형편없는 애플리케이션이 자체적으로 정적 컴파일된 OpenSSL을 끌고 다니지 않도록 반드시 확인하라. 정적으로 빌드된 경우 당신의 업데이트를 전혀 반영하지 못하기 때문이다.

음모론

당연히 새로운 NSA 감청 음모론도 등장했다. 이 세 글자 기관이 이 버그를 수년간 알고 있었다는 주장이다. 내 생각에 이건 의심스럽다. 구글의 엔지니어들을 포함한 두 개의 서로 다른 회사와, 핀란드(즉, 미국이 아닌) 회사인 코데노미콘(Codenomicon)이 거의 동시에 이 버그를 보고했기 때문이다. 이는 최근에 새로 생긴 취약점이라는 뜻이다.

그래서 NSA가 걱정된다면 여기 처방전이 있다. 마이클 만(Michael Mann)을 아는가? '마이애미 바이스'와 '히트'를 비롯해 수많은 훌륭한 영화를 연출한 감독이다. '레드 드래곤'보다 훨씬, 훨씬 뛰어난 한니발 렉터 영화인 '맨헌터'도 그의 작품이다. 그리고 그 테마곡이 바로 '하트비트(Heartbeat)'인데, 이 곡은 '마이애미 바이스'의 수많은 명장면 중 하나에도 등장한다. 이 노래를 들어보면 무엇을 의미하는지 아주 분명하게 이해할 수 있을 것이다.

Heartbeat, heartbeat, listen to my heartbeat, oh-oh
(심장 박동, 심장 박동, 내 심장 박동 소리를 들어봐, 오-오)

결론

아마도 데도이메도(Dedoimedo)가 흔한 겁주기가 아니라 진짜로 진지하게 받아들여야 할 보안 문제가 있다고 말하는 것은 이번이 처음일 것이다. 그렇다, 하트블리드로 인한 메모리 누수는 흔한 멀웨어 헛소리가 아니다. 동시에 이 문제는 주로 기업과 서비스 제공업체가 해결해야 할 사안이기도 하다. 이 게임에서 당신의 역할은 작다. 중요한 것은 침착하고 합리적으로 있는 자세다.

기억하라. 인터넷 백본이 아플 때는 몸을 뒤로 기대고 지켜보면 된다. 매일 있는 일이 아니며, 늘상 들어오는 '당신의 PC가 위험할 수 있습니다'라는 허튼소리와는 달리 상쾌한 변화다. 이번 문제는 당신보다 훨씬 크다. 그러니 긴장을 풀자.

그럼 이만.