현대는 공격자들에게는 기회의 때
[보안뉴스 문가용] 오픈소스가 세계를 잠식하고 있다. 좋은 현상이다. 오픈소스 커뮤니티는 날마다 커지고 있으며 인기도 높아지고 있다. 소규모 사업장에서부터 대기업들까지 적어도 한 개 이상의 오픈소스를 사용하고 있다. 미국 국방부도 그중 하나다. 그러다보니 이제 코딩을 오픈소스 커뮤니티에 공유하고 나누는 것이 미덕처럼 되고 있고 그렇게 하라는 권장도 점점 늘어나는 눈치다.
▲ 다 좋다고 나누는 거겠지만...
오픈소스의 장점이라고 하면 제일 먼저 가격을 꼽을 수 있다. 공짜니까 말이다. 그러니 오픈소스를 선호하는 현상은 어지간해서는 없어지지 않을 것으로 보인다. 그러나 오픈소스가 더 많이 사용되고 퍼지기 전에 반드시 몇 가지는 해결하고 넘어가야 한다. 특히 오픈소스의 보안문제는, 마치 사물인터넷처럼, 심상치 않다.
코드를 깨끗하게
코드 위생 혹은 코드 하이진(code hygiene)이라고 부르는 개념이 있다. 앱이 얼마나 ‘깨끗하게’ 짜여져 있는가를 묘사하는 표현이다. 당연히 취약점이 있는지, 너무 복잡하지는 않는지 등을 말한다. 위생적인 코드는 애플리케이션을 구축하는 데 필요한 모든 요소들을 한 눈에 볼 수 있게 해주며, 특수한 경우에 고려해야 할 정보들까지도 알게 해준다. 위협 모델링이나 자동화된 실험 등 소프트웨어 개발의 라이프사이클에 포함되는 여러 행위들이 코드 위생을 보장해준다.
그러나 이런 일련의 행위들로 구성된 ‘코드 위생’에는 한계가 있는데, 바로 그 행위가 일어나는 순간에만 깨끗해진다는 것이다. 위협의 유행이 바뀔 때마다 늘 위생적이리란 보장이 없다는 뜻.
얘기를 좀 더 쉽게 해보자. 치과에 가서 진료를 받았는데 건강하다는 검진 결과가 나왔다고 치면, 그것은 충치도 없고 잇몸도 튼튼하다는 뜻이다. 좋은 소식이다. 그러나 그것이 ‘당분간은 이를 닦지 않아도 된다’거나 ‘한 주 정도는 회식 때 병을 이빨로 따도 무방하다’는 뜻이 아니다. 지금까지 관리를 잘 해왔으니, 앞으로도 그렇게 하라는 거다. 다음날 온 과학계가 발칵 뒤집혀 당근이 지상 최대의 충치요인이라고 밝혀지면, 식단도 조정하는 지혜를 가지라는 것이기도 하다.
오픈소스의 보안도 마찬가지다. 보안에 민감한 조직은 오픈소스를 포함한 모든 요소들을 잠재적 위험요소로 간주한다. 늘 양치를 하고 딱딱한 걸 씹을 때 살살 잘근잘근 깨무는 것과 같다. 그러면서 최근 업계나 네트워크, 혹은 인터넷 상에 유행하고 있는 취약점이 무엇인지, 그 위험성의 정도는 얼마나 되는지 알아본다. 특히 오픈소스로 된 무언가를 적용하기 전엔 사용자 후기 비스무리한 것도 꼼꼼하게 읽어보고 모든 안전 사항을 확인한다. 또, 오늘 안전하다고 판명난 오픈소스 코드가 내일도 안전하리라는 보장이 없다는 것도 인지해야 한다.
네 코드를 알라
보안의 가장 기본이 되는 규칙이 있다면 나에게 닥쳐오는 위협의 정체를 알아야 한다는 것이다. 뭘 알아야 방어를 하지. 오픈소스 코드는 어디에나 붙이고 빼기가 매우 용이하다. 오히려 그래서 좋은 코드가 반드시 가져야 할 가시성이 훼손된다. 오픈소스 코드 자체가 아무리 안전하다해도 가시성이 사라지면 사라질수록 위험 잠재성은 늘어만 간다.
오픈소스의 사용에 대해 철저한 정책을 가지고 있는 기업이라고 해도 현실에 제대로 반영되지 않는 경우가 수두룩하다. 오픈소스가 적용되는 곳마다 정책을 반영할 방법이 현실적으로 없다. 그래서 보안 담당자나 책임자라도 자기 회사에 얼마나 오픈소스 코드가 존재하는지 감도 못 잡는 경우가 거의 대부분이다.
예를 들어 어떤 대형 금융기관의 경우 제3의 코드를 사용할 때 관련 라이선스, 대체 라이브러리, 코드 복잡성, 취약점 히스토리를 꼼꼼하게 확인하고 적용해야 한다는 규칙을 엄수하고 있다. 굉장히 안전하지 않은가? 그러나 해당 기관의 담당자는 “허울만 좋은 정책”이라고 한다. 실제로 이를 ‘강제할’ 방법이 하나도 없다는 것. 정책에 위반이 되는 코드가 프로젝트에 첨부되어도 개발자에게 일일이 찾아가 이 코드 어디서 나온 거냐고 캐묻지 않는 이상 알아낼 수도 없다고 한다.
공격자들에겐 황금기
우린 이미 오픈소스를 통한 공격에 많이 시달려온 전적이 있다. 하트블리드(Heartbleed)가 있었고, 쉘쇼크(Shellshock)가 있었고 푸들(Poodle)도 있었다. 하나 같이 대형 사건들이었다. 오픈소스를 악용하려는 공격자들에겐 이 사건들이 하나하나 기념일과 같다. 이 사건들이 말하는 건 무엇인가? 현대 환경이 공격자들에게 매우 유리한 기회의 때라는 것이다.
여기서 현대 환경이라 하면 노릴 표적이 넘쳐날 정도로 풍부하고, 이미 대중적으로 알려진 취약점도 셀 수 없을 정도로 많다는 것이다. 이건 무슨 뜻일까? 취약점을 알고 업데이트도 해야 하는 책임이 일정 부분 사용자에게도 지워진다는 거다. 취약점을 괜히 공개하는 게 아니다. 기업들이 이미 다 내놓은 상품에 대한 업데이트를 부지런히 개발하는 것도 괜한 수고가 아니다. 다 ‘보안 위생점검’에 동참하자고 초대하는 것이다. 게다가 해커들은 유튜브로 취약점 익스플로잇 방법을 친절하게 설명해주기도 한다. 그렇다면 지금은 공격자들에게만 황금의 때인 것일까?
한 명의 사용자로서 다음과 같은 사항을 지금 당장이라도 점검하는 것부터 시작하기를 권장한다.
1) 오픈소스에 대한 규정이 존재하는가?
2) 규정이 존재한다면 그것이 실제 업무에 반영될 수 있게끔 하는 장치도 있는가?
3) 취약점은 어떤 식으로 파악하고 추적하고 있는가?
나를 알고 적을 알면 백전백승이란 옛말은 오늘 날에도 유효하다. 적은 너무나 많으니 차치하고, 나부터라도 잘 알아보자. 정책을 수립하고 적용하는 것, 결국엔 이런 차원의 일이다. 앞으로도 오픈소스가 늘어나면 늘어났지 줄어들진 않을 것이다. 오픈소스에 대한 구체적인 대응책을 지금부터 마련하고 체질화시켜도 결코 이르지 않다.
글 : 마이크 피텐저(Mike Pittenger)
Copyrighted 2015. UBM-Tech. 117153:0515BC
[국제부 문가용 기자(globoan@boannews.com)]
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>