[칼럼]IT관리자들의 10가지 어리석은 실수들-2

일반입력 :2009/08/18 10:39

전상훈
전상훈

전편에는 시스템 및 네트워크 부분에서 빈번하게 발생 되는 케이스들을 살펴 보았다. 이번 칼럼 내용은 2005년 이후 현재까지 진행중인 대부분의 침해사고에 해당되는 애플리케이션에 관한 것이다.

제목에서 네트워크 관리자가 아닌 IT 관리자라 칭한 이유도 범위를 한정해 발생 되는 부분이 아니며 전체 관점에서 바라봐야할 이슈이기 때문이다.

애플리케이션 관련 보안 부분은 2000년대 이후 중요한 흐름을 보이고 있다. 인터넷이 발달하고 생활과 밀접해지면서 삶의 많은 것들이 변화하고 있다.

Web 2.0의 발전이 의미하는 것도 사용자와 더 친밀하고 생활과 연결되면서 삶이 인터넷과 밀접하게 연결되어 간다는 것을 의미한다. 트위터와 미투데이가 확산되고 이들 사용자들 사이에서 인터넷은 적지 않은 비중을 차지한다. 그만큼 위험도 동일하게 존재한다.

이번 칼럼에서 언급하는 애플리케이션은 웹에 한정하기로 한다. 넓은 범주의 애플리케이션이라 하더라도 인터넷 연결이 가능한 대부분의 애플리케이션은 동일한 문제들을 지니고 있다.

2005년을 기점으로 국내 상황을 보면 자동화된 애플리케이션 공격이 최초 출현하고 이후에는 폭발적으로 증가한 상태로 볼 수 있다. 전 세계적으로도 애플리케이션 공격 관련해서는 2005년 이전에는 전문가에 의한 부분적이고 국지적인 침해들이 있었으나 2005년을 기점으로 웹애플리케이션을 공격하는 도구가 출현함에 따라 파급력이 매우 커지는 결과를 초래했다. 현재는 인터넷 환경의 가장 큰 위험으로 등극한 상황이다.

 

수많은 개인정보 유출과 도용 사례, 대규모 좀비 PC, 서비스에 대한 직접적인 DDos(분산서비스거부) 공격과 같은 모든 주요 사안들이 애플리케이션 공격과 연결되어 있다. 이번 칼럼에서 필자는 이점에 대해서 분명히 하고자 한다.

2005년을 기점으로 국내 및 세계의 인터넷 위험도는 급격하게 증가했고 보호를 위한 노력은 느리게 진행됨에 따라 지금까지의 위험보다 더 크고 복잡화된 위험들이 이미 다가와 있음을 분명히 하고자 한다.

기존의 소규모 혹은 국지적으로 이루어지는 해킹사고의 경우 침해사고 범위와 피해 대상이 제한적이었다. 그러나 현재 환경은 개인 PC를 대상으로 하고 있으며 종래에는 서비스까지도 위협하는 단계에 도달해 있다. 공격자들은 공격 범위와 대상에 대해 제한이 없으며 모든 개인 사용자의 PC를 개별적으로 공격할 필요성도 없다.

공격은 웹서비스가 대신해 준다. 공격자는 다만 주된 지점만을 공격하여 악성코드를 유포 하도록하기만 하면 된다.

주된 지점에 대한 공격은 SNS, 게시판, 덧글, 동영상 등을 이용한 악성코드 전파들도 있지만 취약한 웹애플리케이션에 대한 권한 획득이 가장 근본적인 문제다. 웹애플리케이션에 대한 직접적인 공격을 통해 DB에 저장된 데이터를 절취해 가고 웹애플리케이션 소스코드를 변조해 방문하는 모든 사용자에게 악성코드를 유포하도록 한다.

웹애플리케이션에 대한 자동화된 공격도구 출현은 보안에 대한 패러다임을 바꾼 것이 아니라 인터넷 산업 자체의 패러다임을 바꾼 중대한 전환점이라 할 수 있다. 공격 도구의 자동화가 끼친 영향은 DB의 사용자 정보유출이 일차적인 목적이었으나 불특정 다수에 대한 악성코드 유포의 도구로 활용 됨에 따라 큰 전환점이 일어난다.

 

방문 하는 모든 사용자의 PC에 취약성이 존재하면 반드시 감염이 되고 모든 사용자 정보는 공격자에게로 전송된다. 수백만대가 넘는 좀비PC의 확보는 상당 부분 유사한 형태로 이루어 졌을 것이다. 유출된 개인정보들은 DB에 저장된 정보외에도 개인 사용자 PC에서 전송되는 정보들도 있다. 엄청난 양의 개인정보들은 이미 유출 되었고 활용이 되고 있다.

그 결과 정확도와 신뢰도가 높은 보이스 피싱과 일반적인 피싱 공격들이 연이어서 발생 하는 것뿐이다. 더불어 권한 획득된 개인 PC를 이용해 DDos 공격을 하고 개인정보를 이용해 서비스 혼돈을 초래하며 거래를 통해 이득을 얻어내고 있다.

 

모든 전문가들이 개인PC 보안을 강화하라고 한다. 그러나 보다 근본적으로는 모든 IT 서비스에 대해 보안성 검증이 먼저 있어야할 것이다. 전파가 가능한 매개체를 줄이면 피해는 국지적으로 발생 할 뿐이다. 지금은 그 어떤 것도 되어 있지 않고 개인의 책임만을 이야기 한다. 일면 무책임 하기도 하다. 물론 개인PC에 대한 보안성 강화는 당연히 있어야 하는 일이다.

일반적으로 우리가 악성코드라고 부르는 것은 백신에서 악성코드라고 탐지를 할 때에야 비로소 알게 된다. 악성행위를 하는 프로그램은 백신개발 업체에 의해 분석되고 등록되기전에는 악성코드라고 탐지가 되지 않는다.

만약 새로운 유형의 악성코드가 지금껏 발표되지 않은 비공개된 취약성을 이용하여 개인PC를 공격 한다면 사전에 발견 할 수 있을까? 아직 기술의 진보는 여기에 완전하게 이르지 못했다. 그렇다면 웹서비스를 통해 새로운 유형의 악성코드가 유포 된다면 감염자는 얼마나 될 수 있을까?

방문 하는 사용자의 상당비율이 감염이 될 것임은 불을 보듯 뻔하다. 지금은 얇디 얇은 유리와 같은 상태로 인터넷 서비스와 산업이 유지되고 있는 상황이다.

지금의 현실은 상상하기에도 끔찍한 현실이다. 그러나 이 현실 속에서도 생존해야만 미래가 있다. 그 생존을 위해서는 문제를 공론화 하고 풀어가는 과정이 필요한데 숨기려고만 한다. 풀어가는 과정조차 없고 문제의 핵심에 대한 논의도 거의 없는 상태이다.

지금까지는 기본적인 현실에 대한 간략한 설명이었다. 각 항목별로 어떻게 연결이 되는지 확인을 해보자. 이제 열 가지 실수 중 남은 부분을 살펴 보면 다음과 같다.

Failing to test noncritical applications for basic vulnerabilities

중요하지 않은 애플리케이션이란 용어에 몇 가지 의미가 있을 수 있으나 이 부분에서는 외부로부터 http 접근이 허용이 된 모든 애플리케이션이라고 보는게 바람직하다. 일반적으로 외부로부터 침입에 활용되는 매개체는 2005년 이전 직접적인 서비스 공격에서 서비스 포트에서 운영이되는 웹애플리케이션으로 옮겨져 있다.

지금의 공격도 여기에 집중이 되고 있다. 항상 외부 관점에서 취약성을 평가해야만 안정성을 보장 할 수 있다. 일반적으로 각 서비스 회사마다 하나에서 수십, 수백여개의 서비스 URL들을 운영 하고 있을 것이다. 그러나 대부분 보안상 위험에 대한 관점은 주된 서비스 몇개에 한정 되어 있다.

위험에 대한 모니터링과 보안 강화 조치들도 대부분 주요 서비스에만 집중 되어 있는 상황이다. 특히 애플리케이션에 대한 보안성 강화는 많은 노력과 시간들이 소요 됨으로 인해 주요 서비스만 시행을 하는 경우가 많다. 내부망에 침입 할 수 있는 주변 애플리케이션에 대한 관리가 소홀하고 취약성 제거가 이뤄지지 않는다면 그 동안의 모든 보안강화 조치는 우회를 통해 완전하게 무력화된다.

우회 할 수 있는 여러 통로들이 있고 어차피 동일한 결과를 가져 오는 상황에서 보안이 강화된 사이트들을 직접 공격할 이유는 전혀 없다. 중점 관리의 영역에서 벗어나 있고 외부에 오픈된 상태로 존재하는 웹애플리케이션의 존재는 전체를 위험하게 만들 수 있다. 우회하여 권한을 획득하고 해당 서버에 백도어를 설치한 이후 주변 서버로 제한 없이 공격을 실행 하고 확대하는 것은 보호되고 있는 서비스망 전체를 무너지게 만든다.

결론적으로 서비스를 제공하는 모든 애플리케이션에 대해서 외부에서의 오픈 현황을 정기적으로 확인하고 오픈된 서비스에 대해서는 반드시 취약성 존재 유무를 확인하고 제거해야 한다. 본질적으로는 허가를 받지 않은 서비스는 외부에 오픈되믄 안 되는게 기본이나 예외적 상황은 언제든 발생하게 마련이다.

벽은 눈 앞에만 쌓여 있고 한 걸음만 옆으로 비껴가면 벽은 없는 것과 마찬가지다. 좀더 나아가 서비스별로 접근제어도 고민해야하고 내부망에서의 위험 인지를 위한 방안들도 고민해야 사고가 발생하더라도 피해를 최소화할 수 있다. 

보안은 침입을 막는 것도 중요하나 더 중요한 부분은 침입에 대한 피해를 최소화 하고 분석과 재발방지를 위한 대안을 제시할 수 있느냐가 관건이다. 전문가의 역할도 여기에 있다.

Not adequately protecting your servers from malware

Malware라는 개념은 악성코드라는 개념으로 볼 수 있고 일반적인 백도어와 키로거 등을 총칭한다.현재의 항목에서 논의되는 사항은 바로 위의 항목 부분에서 언급한 내용과 동일하다.

대부분의 서비스 관리자는 바깥으로부터의 침입에만 여력을 기울이는 경향이 매우 크다. 그러나 항상 모든 애플리케이션은 취약점이 있다는 자세로 그 다음 단계를 준비하는 것이 반드시 필요하다.

대부분의 공격자들은 침입 이후에는 계정정보를 획득 하거나 백도어를 설치 할 때 알려진 도구를 일반적으로 사용한다. 이 경우 탐지 할 수 있는 도구가 필요하며 일반적인 백신 제품 설치도 요구된다. 서버군이 많을 경우에는 중앙통제가 가능한 형태의 백신 제품을 사용 하여야 관리와 통제가 용이하다. 최소한 알려지지 않은 도구를 사용하더라도 발견 즉시 전체 서버군에 적용할 수 있어야 한다.

그래야 피해를 확실히 알고 종합적인 대책이 가능하다.  우회 침입 이후 공격자 행동을 탐지하고 제약하기 위한 도구들의 운영미비는 항상 존재한다. 또 공격자들은 침입 이후 (침입자체를 백신제품이 완전히 탐지 하지는 못한다.) 백신 제품이 활성화돼 있을 경우 백신 제품을 비활성화 시키고 의도한바를 이루고자 한다. 만약 중앙통제 및 관리가 되지 않는 제품이라면 놓칠 수 밖에 없는 부분이다.

Not knowing where credit card or other critical customer data is stored

서구권역의 경우 중요한 개인정보는 거래 및 카드 관련된 내용, 사회보장번호 등이 가장 중요한 내용으로 취급된다. 국내의 경우에는 개인 신상에 관련된 정보들이 휠씬 더 중요한 의미를 가지고 있다. 카드 도용 사고는 서구권역에서 비일비재하게 발생 되는 이슈이고 사고 발생 이후 추적을 통해 문제들을 제거하는 경우가 일반적이다.

국내의 경우 금융 관련 거래에는 여러 다양한 제약 조건들이 있어서 공격자가 데이터를 가져간다 하여도 어려움이 존재한다. 장단점이 있지만 국내의 경우는 개인정보가 고유한 Identity를 나타냄으로 인해 여러 유형의 피싱에 이용 될 수 있고 보다 더 복잡한 문제들을 일으키게 된다.

따라서 데이터 보호는 최우선 순위이고 대부분의 IT관리자들이 이점을 잘 알고 있다.  데이터 관점은 보호 관점에서 분류가 달라 질 수 있다. 개발소스가 될 수도 있고 고객정보가 될 수도 있다. 최우선순위에 해당하는 보호 대책이 적용되고 있는 중요 데이터 저장 서버외에도 백업된 데이터 및 개발자나 관리자 PC에 남겨진 데이터들에 대한 관리들도 제대로 되고 있는지 살펴 볼 필요는 있다.

개발자나 관리자외에도 고객상담과 관련된 분야에 있어서도 고객 관련된 데이터를 취급함으로써 문제가 발생 소지는 높다. 공격자는 강화된 수준의 중요 데이터 저장 서버를 직접 공격하기 보다는 우회하여 주변의 백업 혹은 개발자, 관리자, 고객상담 관련 부분에 대한 우회 공격을 통해 손쉽게 정보를 가져올 수 있다.

정책적이고 기술적인 측면에서 중요 데이터에 대한 접근과 관리 및 보관에 대해서는 엄격한 적용이 필요하고 보호대책도 준수되어야 함을 알 수 있다.

Failing to find SQL coding errors. ( or Application vulnerability)

애플리케이션의 취약성을 찾는 것은 항상 어렵다. 특히 C/S 애플리케이션이 아닌 변화와 갱신이 많은 웹애플리케이션에 대해 보안성을 항상 최상으로 유지하는 것은 상당히 어려운 수준의 업무임은 틀림 없다.

SQL 인젝션 공격은 현재 직접적인 웹서버 침입과 데이터 절취에 직접 사용되는 공격 기법이고 자동화된 도구가 대량으로 출현한 상태라 웹애플리케이션의 안정성은 높은 수준으로 위협을 받고 있다. 문제 해결을 위해서는 장비 도입을 통해 임시적으로 막는 방법들이 있고 또 한가지는 근본적인 소스코드 문제점을 수정하는 방법이 있다.

웹 보안 장비 도입을 통해 막는 방법은 우회할 수 있는 여러 기법들과 새로운 공격 기법의 출현에 따라 무력화 되면 새로운 공격 기법이나 우회 기법이 나올 때 마다 업데이트를 진행 해 주어야만 하는 점이 있다.

특징을 가진 웹 사이트의 경우 각 사이트마다 특징에 맞는 구성을 해줘야하는 점도 있어 공격 유형의 변화에 빠른 대응을 하기란 어려운 점들이 있다. 근본적인 문제 해결을 위해서는 전문인력을 통해 보안성을 점검하거나 스캐너, 소스코드 리뷰 등을 통해서 소스코드에 존재하는 문제점을 찾아 내고 수정 할 수 있도록 가이드해야 한다.

보안장비의 경우에는 변화되는 공격에 무력하다는 점과 특징이 있는 경우에는 커스터마이징이 대량으로 필요하다는 점에서 어려움이 존재한다. 그러나 당장의 소스코드 개선 여력이 없는 곳에서는 알려진 위험을 막기 위해서라도 도입 하는 것은 바람직하다. 근본적인 개선은 아니며 향후 문제 발생 소지가 계속 존재한다는 점은 절대 잊지 말아야 한다.

전문인력을 통해 진단하고 소스코드를 리뷰 하는 행위의 문제점은 웹 서비스 개발보다도 리소스 비용 및 시간 소요가 더 오래 걸리는 경우가 많다는 점이다. 치명적인 문제점이라 할 수 있다. 또한 템플릿을 기반으로 하여 시큐어 프로그래밍(Secure programming)을 진행하는 경우 웹 개발자에게 획일화된 프로그래밍을 하도록 제약 함으로써 창의성을 해치는 결과를 가져 오기도 한다.

두 방안 모두 장단점이 있으나 여력이 있는 서비스 업체와 그렇지 않은 업체 사이에 선택은 다를 수 밖에 없을 것이다. 현재의 인터넷 환경은 가난하고 여력이 없는 서비스에 대해서는 무지막지할 정도로 가혹한 환경이다. 이 부분에 대해서는 근 시일 내에 컬럼으로 효율적인 대응 방안을 정리 할 수 있도록 하겠다.

Not following the Payment Card Industry Data Security standards

위의 항목은 국내 현실과는 약간 다른 항목이다. 국내에서 통용되는 부분으로 논의하자면 좁은 범주의 정보보호관리체계인증(ISMS), 정보보호안전진단, ISO 27001 (이전의 BS7799)등에 존재하는 데이터 보호 규정을 준수하여 데이터를 보호해야 한다는 것을 의미한다. 

데이터 보호를 위한 규약들은 기본적인 규칙의 준수를 의미한다. 기밀성이 필요한 데이터에 대한 암호화, 외부로부터의 접근제한, 접근자에 대한 통제, 기본적인 서비스 보안구성, 암호화된 데이터 전송 등은 필수적으로 고려해야 할 대상이다. 상세한 설명은 이 곳에서 찾을 수 있다.

이상과 같이 전편에 이어 이번 편에 이르기까지 10가지의 실수들에 대한 언급을 통해 자주 발생 되는 침해사고에 대한 내용들과 연관된 부분들을 살펴 보았다. 물론 개인적인 경험들이 들어간 내용이라 정확한 방향이라고 언급하기에는 어려운 부분이 있다. 여러 해 동안을 일선에서 살펴보고 대응을 하는 과정에서 일관되게 발견 되는 문제점으로서 언급을 하였다는 정도로 인식을 해주시면 바람직할 것이다.

관련기사

현재 인터넷은 침해사고에 대한 언급을 하기 이전에 상당히 위험한 상황에 처해 있으며 앞으로 상당 수준의 노력을 기울여야만 일정 수준의 성과를 보장 할 수 있는 상태다. 위험성은 은폐한다고 해서 사라지지 않는다. 은폐든 무지든 마찬가지 결과다. 더 큰 결과로 산업을 위협하게 될 것이다.

사막의 여행자는 눈 앞의 끝없는 사막이 아니라 밤하늘의 별을 볼 수 있어야만 생존 할 수 있다고 한다. 지금 우리는 어디쯤인지도 모르는 것은 아닐까?

*본 칼럼 내용은 본지 편집방향과 다를 수 있습니다.

전상훈 IT컬럼니스트

보안컬럼니스트, 빛스캔 기술이사, 시큐리티 기반한 미래 예측과 전략, 근본적인 문제해결을 위한 방안.