Heartbleed – 보안의 심장에서 비밀이 흐르다

인간이 만든 다른 창조물과 마찬가지로, 소프트웨어도 완벽하지 않습니다. 소프트웨어의 흠을 버그라고 부르며 이들 중에 해킹에 이용될 수 있는 것을 특별히 ‘취약점(Vulnerability)’이라 부르죠. 우리가 모르는 사이에도 수많은 취약점이 발견되고, 보고되며, 수정됩니다.

하지만 매우 중대한 취약점은 가끔 일반인들 사이에서까지 이슈가 되기도 합니다. 얼마 전에 NSA가 관여된 것이 아니냐는 의심을 받은 애플 SSL 취약점이 그러했고, 이번 Heartbleed 버그가 그렇습니다.

취약점에 이름을 붙이는 것도 모자라서 로고까지 만들었습니다.

취약점에 이름을 붙이는 것도 모자라서 로고까지 만들었습니다.

 
OpenSSL이 무엇인가요?

SSL(Secure Socket Layer)은 네트워크를 통해 정보를 전달하는 도중에 해커들이 정보를 빼돌리거나 수정하지 못하도록 하기 위한 기술입니다. 업계 표준이 되면서 TLS라는 이름으로 바뀌었지만, 옛 이름도 널리 사용되고 있죠. SSL이 적용된 경우 중 여러분이 가장 흔하게 볼 수 있는 것이 바로 녹색 주소표시줄의 HTTPS입니다. 인터넷뱅킹이나 쇼핑몰의 결제 페이지에서 흔히 볼 수 있죠. 이외에도 이메일, 메신저 등 보안이 중요한 경우에 여러 가지로 적용되고 있습니다.

HTTPS가 적용된 Facebook.com

믿고 쓰는 HTTPS

이 SSL은 ‘~하게 작동해야 한다’는 표준규약이기 때문에 표준을 만족하는 여러 가지 구현들이 있습니다. 이 중 가장 널리 쓰이는 오픈 소스 구현이 OpenSSL이죠. 얼마나 널리 쓰이는가 하면 당장 인터넷 사이트 중 2/3가 OpenSSL을 채용한 Apache와 Nginx를 통해 제공되고 있습니다.


Heartbleed

이번에 발견된 Heartbleed 버그가 바로 이 OpenSSL의 취약점입니다. (CVE-2014-0160) OpenSSL에는 서버와의 연결이 잘 유지되고 있는지 확인하는 확장기능인 TLS/DTLSheartbeat extension (RFC 6520)이 구현되어 있습니다. 이 heartbeat 기능에서 정보가 유출되는 취약점이니 Heartbleed라는 이름을 붙인 거죠.

피를 흘리는 심장이라니 공돌이치고는 제법 시적이지 않습니까? 이 버그를 처음 발견한 Codenomicon사의 직원들은 분명히 이 이름을 붙여놓고 자기들끼리 즐거워했을 겁니다. 물론 이 버그의 심각성을 잘 아는 사람들이니만큼 잔뜩 굳은 얼굴을 하고 말이죠. (참고로 버그의 최초 보고는 구글 보안팀에서 이루어졌습니다.)

이 버그의 원리는 아래의 xkcd 만화에서 쉽게 설명하고 있습니다. 라이센스에 따라 원작 출처를 링크합니다.

heartbleed_explanation_kor


이 버그의 무서운 점은 만화에서 설명한 공격을 통해 OpenSSL이 사용하는 메모리(heap)에서 한 번에 64kB 씩, 원하는 정보를 얻어낼 때까지 무제한으로 반복할 수 있다는 점입니다. 심지어 공격을 시도했다는 기록조차 남지 않습니다. 버그가 있는 버전도 2012년 3월 공개된 1.0.1 버전부터 1.0.1f 버전까지로, 최근 2년간 업데이트된 모든 OpenSSL에 해당합니다.

버그를 해결한 1.0.1g 버전은 지난 4월 7일 공개되었으며, 구글이나 페이스북과 같은 대형 회사들은 발 빠르게 패치를 완료했지만, 여러분이 사용하는 서비스들에서 패치 전까지 얼마나 정보가 빠져나갔는지는 아무도 알 수 없습니다.

 
대응책

일반 사용자들은 패치가 완료된 서비스들에서 패스워드를 바꾸는 정도 대응으로 충분합니다.  (정확히는 그거 외에 할 수 있는 행동이 딱히 없습니다.) 국내에서도 금융권 및 대형 쇼핑몰은 모두 패치가 완료된 것으로 보입니다. 국내 사이트들이 하도 많이 털려대서 슬슬 비밀번호 바꾸기가 지겨워지셨겠지만 어쩌겠습니까. 비트코인 거래소도 제법 공격당했다고 하니 혹시 비트코인을 다량 보유하신 분들은 조심하셔야겠고요.

1Password


패스워드를 관리해주는 프로그램을 쓰는 것도 좋습니다. 사진은 ㅍㅍㅅㅅ 운영진 윤지만씨가 자신있게 추천하는 1Password.

개발자들은 운영 중인 서버의 OpenSSL을 업데이트하고, SSH 등에서 사용하는 인증서를 모두 폐기하고 재등록해야 합니다. 오래 걸리는 작업은 아닙니다만 번거로운 일이죠.

길게 썼지만 독자분들께 별 도움은 되지 않았을 것 같군요. 어차피 여러분의 개인정보는 유출될 만큼 유출되어서 더는 유출될 것도 없으니까요. 이 글을 쓰면서도 스팸전화를 하나 받았습니다만, 한숨을 내쉬고 끊는 것 외에는 할 수 있는 일이 없군요. 대한민국에서 인터넷을 쓰는 우리 모두 힘냅시다.

글쓴이 : D.bono

원본글 : http://ppss.kr/archives/19477

ㅍㅍㅅㅅ

필자와 독자가 경계가 없는 매거진 - ppss.kr