리눅스, 고스트 결함으로 돌아보는 보안. 필수 요소.
고스트(GHOST)라 불리는 취약점은 모든 주요 리눅스 배포판의 대단히 중요한 부분에 있는 결함입니다. 이론상으로는 해커가 사용자의 아이디와 암호를 알아내지 않더라도 컴퓨터의 통제권을 손에 넣을 수 있게 만드는 결과를 가져옵니다.
그렇긴 하지만, 기억해둬야 할 중요한 사실이 몇 가지 있습니다.
* 이 결함은 실제 환경에서 악용된 적이 한 번도 없습니다. 보안 연구자들의 실험에서만 모습을 확인할 수 있었습니다.
* 지금 현재 모든 주요 리눅스 배포판에서 패치를 제공하고 있습니다.
* 보안 업데이트를 정기적으로 설치하시거나 혹은 주요 구성 요소를 끊임 없이 업데이트하는 롤링 업데이트 방식 배포판을 사용하신다면 걱정할 필요가 없습니다. 최신 업데이트를 설치하면 취약점으로부터 안전합니다 (업데이트 후에는 컴퓨터를 재시작 해줘야 합니다. 미루지 마세요).
* 지원 기간이 끝나서 더 이상 보안 업데이트가 이뤄지지 않는 오래된 배포판 버전을 사용하신다면, 고스트에 취약합니다 (기타 다른 문제에도 취약하죠).
특이한 일이긴 하지만, 요즘의 보안 취약점은 인지도를 높일 목적으로 상표와도 같은 이름을 가지고 있습니다. 충격적인 이름과 빨간 로고를 내세운 하트블리드(Heartbleed, 심장 출혈)가 비교적 최근 사례가 되겠군요. 이런 이름은 이해하기 어려운 문제를 새로운 이야기로 탈바꿈시키고, 문제가 빨리 패치되어 해결될 수 있도록 돕습니다.
클라우드 보안 업체 퀄리즈(Qualys, 영문)는 고스트라는 이름을 들고 이런 경향을 리눅스 세계에도 가져왔습니다. 홍보 팀을 고용해 결함 발견 과정에서 자신들이 한 역할을 알리려 했지만, 많은 사람이 과장 광고라고 느꼈죠.
이걸 이야기해 보겠습니다. 먼저 이 취약점이 무엇이고, 어떤 영향을 미치며, 리눅스 보안 업데이트가 이뤄지는 방식에 대해 무얼 가르쳐주고 있는지 살펴보겠습니다.
고스트는 glibc에 있는 결함입니다. 대부분의 리눅스 배포판에 내장되어 있는 라이브러리(프로그램 실행에 필요한 명령 및 기능 모음)이기도 하고, 모든 프로그램을 실행하기 위한 필수 요소죠. 고스트 취약점은 glibc의 "gethostbyname()" 함수에 존재합니다. 리눅스의 프로그램이 인터넷 주소(www.sergeswin.com..)를 IP 주소(227.84.32.10..)로 변환할 때 사용합니다.
고스트(GHOST)라는 이름은 여기에서 왔습니다. GetHOSTname으로 대소문자를 구분해서 나열해보면 이름이 보이죠.
이 결함은 잠재적인 해커가 자격 증명이나 인증 없이도 코드를 실행할 수 있게 해주는 버퍼 오버플로우(덮어쓰기) 오류를 발생시킵니다. 퀄리즈 사는 문제의 코드를 이메일 서버로 전송해서 취약점을 입증해 보였습니다. 다른 악용 사례도 있을 수 있겠죠.
매우 흥미롭게도 이 결함은 2013년에 고쳐졌지만, 당시만 해도 보안 위협으로는 인식되지 않았습니다.
근본적인 이유를 보면 아무도 이 취약점이 보안 문제라는 사실을 알아채지 않은 것이 원인입니다. 즉, 보안 업데이트가 많은 사용자에게로 전달되지 못한 것이죠.
리눅스 배포판은 광범위한 종류의 다양한 패키지 꾸러미를 묶은 모음집입니다. 사용자에게는 파이어폭스 같은 프로그램과 그놈 같은 데스크톱 환경을 의미하지만, 이런 것은 정말 빙산의 일각에 불과하죠. glibc를 비롯한 여러 프로그램과 라이브러리가 리눅스 이면의 내부를 구성합니다. 이런 프로젝트는 각기 다른 팀을 이루고 있고, 정기적으로 자신들만의 업데이트를 내놓습니다.
정말 많은 수의 리눅스 배포판이 나와 있고, 이런 업데이트를 사용자에게 전달하는 방법도 모두가 서로 다른 접근 방식을 취하고 있습니다. 예를 들어서 롤링 업데이트 방식을 사용하는 배포판의 경우 상당히 꾸준히 업데이트가 이뤄집니다. 한 마디로 아치 리눅스(Arch Linux)와 같은 배포판을 사용하는 사람은 2013년 이래로 계속해서 안전했다는 이야기가 되죠.
다른 예로 우분투(Ubuntu)는 매 6개월마다 새 버전이 나오는 걸 보게 됩니다. 일반적으로 이렇게 새 버전이 출시될 때 모든 패키지가 한 번에 업데이트 되죠. 그 후로는 보안 업데이트만 받을 수 있습니다. 즉, 2014년이나 이후에 나온 우분투 버전은 고스트 문제에 걸릴 우려가 없지만, 우분투 12.04 LTS 버전 사용자는 이 결함에 취약했다는 의미가 됩니다 (적어도 보안 업데이트가 취약점을 고치기 전까지는 말이죠).
보안 회사인 시만텍(Symantec, 영문)에 따르면 취약한 배포판과 버전이 아래와 같다고 합니다.
* 우분투 12.04 LTS(Ubuntu 12.04 LTS)
* 우분투 10.04 LTS(Ubuntu 10.04 LTS)
* 레드햇 엔터프라이즈 리눅스 5(Red Hat Enterprise Linux 5)
* 수세 리눅스 7.1(S.u.S.E. Linux 7.1)
* 데비안 리눅스 6.0(Debian Linux 6.0)
꽤 흥미롭게도, 크롬 OS(Chrome OS) 개발자들은 2014년 초 무렵에 이 결함을 인지하고(영문) 해결을 위해 운영 체제 업데이트를 진행했습니다. 리눅스 진영은 알아차리지 못했던 것 같습니다.
그렇지는 않을 겁니다. 업데이트가 모든 주요 배포판에서 제공됐을 뿐만 아니라, 보안 전문가들에 따르면 결함 자체도 과대 광고가 이뤄진 면이 있다고 합니다. 보안 회사인 트렌드 마이크로의 파완 킹어(Pawan Kinger) 씨(영문)는 아래와 같이 이야기합니다.
"종합해 보면, 고스트 결함을 노려 실제로 악용할 위험성은 쉘쇼크나 하트블리드와 같은 다른 취약점에 비하면 상대적으로 작습니다."
- 파완 킹어(Pawan Kinger)
리눅스와 자유 소프트웨어 개발 커뮤니티와 관련된 소식을 전하는 LWN.net의 제이크 에지(Jake Edge) 씨(영문) 말도 인용합니다.
"고스트 glibc 취약점이 심각하기는 하지만, 악용하기도 꽤나 어려워 보입니다. 더군다나 심하게 과장 광고되기도 했죠."
- 제이크 에지(Jake Edge)
분명 패치와 수정이 필요한 취약점이기는 했지만, 별도의 상표 같은 이름과 로고가 필요한 건 아니었을 겁니다. 잠도 못 잘 정도로 걱정할 일은 아니죠.
보안과 관련해서 사라져야 할 미신이 있다면, 그 가운데 하나가 바로 리눅스 사용자는 보안에 대해서 걱정할 필요가 없다는 생각일 겁니다. 모든 운영 체제가 보안 결함을 가지고 있고, 리눅스도 (상당히 안전하기는 하지만) 예외는 아닙니다.
모든 종류의 시스템에서 사용자 자신을 보호할 최고의 방법 중 하나가 바로 모든 걸 최신 상태에 맞도록 업데이트 하는 것입니다. 따라서, 아래와 같이 요약할 수 있겠네요.
* 항상 보안 업데이트 패치가 있으면 설치하세요.
* 개인 컴퓨터나 서버에 있는 리눅스 버전이 보안 패치를 계속 받을 수 있는지 꼭 확인해보세요. 업데이트가 지원되지 않는다면 새 버전으로 업그레이드하세요.
이것만 해줘도 분명 괜찮을 겁니다.
여기서 한 가지를 알고 싶어지네요. 혹시 업데이트는 설치하셨나요? 아직 하지 않으셨다면, 지금이라도 바로 설치해보세요! 업데이트를 하고 오셨다면, 이걸 포함한 여러 이야기를 아래 댓글에서 나눌 수 있을 겁니다. 그리고 기억하세요. 윈도우를 사용하지 않는다고 해서 완전히 안전해지는 것은 아닙니다!