기술을 얘기한다 2007.02.04 12:43
/* (저자 주) 2003년 1월 25일의 슬래머 웜에 대하여 자료와 생각을 
정리한 글입니다. */


인터넷 대란의 원인

2003년 2월 4일 고양우
0. 열며 2003년 1월 25일은 인터넷 또는 보안 분야에서는 매우 중요한 날이 되었다. 만약, 우리가 이 문제를 푸는 방법을 제대로 찾지 못한다면, 이 날은 들불처 럼 번저나가는 웜 바이러스, 시스템 파괴, 전지구적 상거래 마비 등과 같은 치명적인 미래에 대한 한 장면을 얼핏 미리 보게된 날로 기록될 것이다. [9] 하지만, 이 사건이 주는 파장은 매우 큰 데 반하여 이 사건의 실체적 진실을 파헤치기 보다는 제 논에 물대기 식의 해석과 주장이 널리 퍼지는 것은 지나 간 오류로부터 새로운 지혜를 배우는 올바른 태도가 아닐 것이다. 따라서, 이 글에서는 최대한 실체를 바르게 이해하기 위한 자료를 제공하는 것에 초점을 맞추고 있다. 1. 사건의 요약 [2] 사파이어 또는 슬래머 라고 불리우는 웜이 2003년 1월 25일 5시 30분(표준시 기준)에 다른 호스트를 감염시키기 시작하였다. 사파이어 웜은 마이크로소프 트사의 SQL Server 또는 MSDE 2000 를 실행시키고 있는 컴퓨터의 버퍼 오버 플로우 취약성을 이용한다. 이 약점은 2002년 7월에 발견되었으며 마이크로 소프트사는 패치를 배포한 바 있다. 이 웜은 최소한 7만 5천대 이상의 호스 트를 감염시켰으며 네트웍의 불통시켜서 결과적으로는 비행기 예약 취소, 선 거 과정의 혼선, 현금 입출금기의 중단, 인터넷 쇼핑 사이트의 업무 마비 등 을 일으켰다. 2. 웜이란 무엇인가 ? 2-1. 버그와 악의적인 프로그램 버그는 개발자의 실수로 프로그램이 사용자가 기대하지 않은 오동작을 하는 것을 의미한다. 반면에 악의적인 프로그램은 악의를 가진 사람의 의도에 따라 사용자가 기대하지 않은 기능을 하는 것을 말한다. [1] 물론, 상당수의 악의 적인 프로그램은 대상 시스템에 들어 있는 버그를 이용한다. 이때, 이러한 버 그를 흔히 취약성이라고 부른다. 물론, 취약성 중에는 버그로 인한 것이 아닌 경우도 있고 모든 버그가 취약성으로 연결되는 것은 아니다. 2-2. 악의적인 프로그램의 종류 [1] * 보안 툴킷 : 대상 시스템의 약점을 발굴하는 프로그램으로 공격용 도구로 사용되기도 하고 자체 방어를 위한 점검용으로도 쓰인다. * 백도어 : 일단 접근이 가능해진 시스템에 대하여 다음 번에 시스템에 쉽게 들어올 수 있도록 구멍을 뚫어 놓는 것을 말한다. * 로긴 폭탄 : 비정상적인 상태에서 튀어 나오게 되어 있는 숨겨진 기능. 이 스터 에그는 로긴 폭탄의 일종이다. * 바이러스 : 다른 프로그램을 변형시키면서 자기 복제를 하는 프로그램. * 웜 : 시스템을 변경 시키지 않으면서 옮겨 다니는 프로그램. * 트로이의 목마 : 겉으로 보이는 기능과 전혀 다른 일을 하는 프로그램으로 서 사용자가 실행시킬 때까지는 아무런 짓도 하지 않고 가만히 있는다. * 박테리아 (또는 토끼) : 순식간에 자기 복제를 해서 시스템 자원을 잡아 먹는 프로그램. 3. 밝혀진 사실 3-1. 슬래시 웜은 어떻게 동작하나 ? 슬래시 웜은 VU#484891(CAN-2002-0649)[3] 에서 설명되어 있는 취약성을 이용 한다. 이 취약성은 SQL Server 가 설치된 컴퓨터로 하여금 임의의 일을 하도록 시킬 수 있도록 한다. 일단, 어떤 컴퓨터를 감염시키는데 성공하고 나면 슬래시 웜은 자기 자신을 전파시키기 위하여 376 바이트 짜리 패킷 (네트웍을 통하여 전송하는 정보의 한 묶음) 을 생성하여 임의의 IP 주소의 1434번 UDP 포트로 전송한다. 전송받 은 기계가 이 취약성을 갖고 있는 기계라면 (즉, 패치가 제대로 되지 않은 SQL Server / MSDE 2000 이 설치된 컴퓨터라면) 감염이 되며 거기에서 또 전파를 계속한다. 웜에 포함된 코드는 이러한 전파행위 이외의 기능은 없다. [4] 3-2. 슬래시 웜은 왜 그렇게 큰 충격을 주었나 ? [2] 앞에서 이미 언급한대로, 슬래시 웜 자체는 - 다른 일반적인 웜들과 마찬가지 로 - 자기 자신을 전파하는 것 이외의 악의적인 코드는 갖고 있지 않다. 하지 만, 자기 자신을 전파하는 방법의 효율성이 매우 높다는 사실이 이미 충분한 위협 요인이 되고 있다. 전파의 초기에 약 8.5 초 마다 그 수가 두배씩 늘어 났으며 3분 뒤에는 초당 5천 5백만 스캔 (공격 대상을 검색하는 행위) 에 달 하는 최대 트래픽을 발생시켰다. 그 이후로는 전파 속도가 떨어지기 시작했는 데 그 이유는 자신이 발생시키고 있는 트래픽 때문에 네트웍 대역 자체가 거의 고갈되어 있거나 대상 기계가 이미 감염이 되어 있기 때문이다. 10분 이내에 취약성을 가진 거의 모든 기계가 감염되었다. 이러한 감염 속도는 이미 여러 번 이론적으로는 제시된 바 있으나 실제로 웜으로 만들어져서 퍼진 것은 이번 이 처음이다. 슬래시 웜에 따른 타격은 두 가지 형태로 발생한다. 첫번째로, 웜에 감염된 컴퓨터에서 웜이 컴퓨터의 자원을 지나치게 소모하여 컴퓨터가 현저히 느려지 는 현상이 발생한다. 두번째로, 웜이 자신을 전파하기 위하여 많은 트래픽을 발생시킴으로써 네트웍 대역의 대부분을 차지하여 다른 트래픽이 거의 처리될 수 없게 되는 것이다. 예를 들어, 어떤 회사와 인터넷 망이 연결된 대역의 대 부분이 쓸데없는 웜의 트래픽으로 가득 차게 되는 것이다. 4. 고민거리 4-1. 백본의 마비 사태는 ? 만약, 대부분의 회사들이 "평소에도" 할당 받은 대역의 상당 부분을 사용하고 있음에도 불구하고 백본에서는 큰 문제가 없었는데 이번에는 일부 백본에서 마비 사태가 발생하였다면 (이는 확실히 확인되지 않은 사항입니다) 왜 그런 일이 생겼을까 ? 만약에 그렇다면, 슬래시 웜 자체가 백본의 어떤 기능에 대한 직접적인 공격을 하였거나 특별히 많은 트래픽을 발생시켰다기 보다는 백본에 직접 또는 아주 가까이에 연결되어 있는 기계의 상당수가 감염됨으로써 백본 자체가 발생시키는 트래픽도 많았다는 점과 이상 징후에 대하여 강력한 대응을 하지 않은 것에 그 원인이 있었던 것이 아닌가 생각을 해볼 수 있다. 4-2. 더 큰 충격도 가능하다 [2] 슬래시 웜이 충분히 큰 충격을 주었지만 실제로 더 큰 충격을 주는 것이 가능 하다. (1) 정교한 난수 생성 인터넷에 널리 퍼져 있는 컴퓨터 전체를 대상으로 골고루 공격을 하기 위해서 는 각각의 감염된 컴퓨터에서 난수로 대상을 선택하는 것이 필요하다. 그런데 슬래시 웜에 포함된 난수 생성 코드는 - 개발자의 실수로 추정되는 - 한계가 있어서 충분히 정교한 난수를 생성하지 못한다. 만약, 이 부분이 수정되었더 라면 더 많은 컴퓨터를 공격 대상으로 삼을 수 있었을 것이다. (2) 악의적인 코드를 포함 일반적으로 웜 자체는 자신을 전파하는 코드만을 갖지만 여기에 다른 자원을 고갈시키거나 파괴하는 (예를 들어, 파일을 삭제하는) 코드가 포함된다면 충 격도 훨씬 더 커질 것이다. 물로, 그 코드가 웜 자체의 전파 행위를 방해하지 않아야 한다는 제한이 있다. 예를 들어, 웜에 포함된 코드가 시스템 자체를 중단시켜 버린다면 더 이상의 전파는 불가능해지기 때문이다. (3) 더욱 널리 퍼진 취약성을 공격 SQL Server 는 일반 사용자들은 설치할 필요가 없는 소프트웨어이다. 따라서, 감염될 수 있는 대상 자체가 한정된다. 따라서, 더 널리 사용되는 소프트웨어 의 거의 패치되어 있지 않은 취약성을 대상으로 하는 웜이 나온다면 그 충격 은 더 커질 것이다. (4) 더욱 흔한 서비스를 공격 UDP 1434 번 포트는 마이크로소프트사의 SQL Server 에서 사용하는 포트이다. 따라서, 외부 즉 인터넷 쪽에서 사내의 SQL Server 로 이 포트로 접근을 할 필요는 많지 않다. 따라서, 만약 방화벽이 설치되어 있다면 이 포트는 당연히 차단될 것이고 웜의 공격을 피할 수 있다. 하지만, 만약 웹 서비스를 위한 포트와 같이 외부에서 내부로 접근이 흔히 발 생할 수 있는 포트를 대상으로 공격이 이뤄졌다면 이를 방화벽에서 차단하기 가 더욱 어려워져서 공격의 성공 가능성은 훨씬 더 높아질 것이다. 따라서, 흔히 대외적으로 제공되는 서비스 - 웹, 도메인 이름 시스템 등 - 를 대상으 로 한 웜이 더 큰 충격을 줄 수 있다. 재작년에 크게 창궐하였던 님다, 코드 레드 등의 웜 바이러스가 이러한 특성을 활용한 바 있다. 4-3. 보안 문제는 기술로 해결되지 않는다 사건이 일어난 뒤 여기저기에서 저마다 처방을 내놓고 있다. 하지만, 처방이 실효성이 있기 위해서는 그 처방이 풀어야 할 문제가 놓여있는 공간이 수학자 들의 책상이 아니라 지극히 평범한 - 즉 게으르기를 기원하는 - 인간들 세상 이라는 점을 전제로 하여야 한다. 브루스 쉬나이어가 그의 책에서 여러번 지적하였듯이 보안은 제품이 아니라 과정이다. [5] 즉, 어떤 제품을 설치하거나 일시적인 보완을 한다고 해서 보 안이라는 문제가 해결되는 것은 아니다. 실제로 문제가 해결되기 위해서는 그 해결을 실제로 이뤄내기 위한 과정을 실행할 수 있어야 하며, 설령 그렇게 한다고 하더라도 그것은 이후에도 계속될 과정의 시작에 불과하다. 지속적인 과정으로서 보안이 이뤄지도록 하기 위해서는 다양한 유인책과 강제책이 필요하다. 소프트웨어 개발 회사들은 이렇게 변명한다. "그건 우리의 잘못이 아니다. 당 신들은 우리가 이미 배포한 패치를 적용했어야 한다" 라고 말이다. 하지만, 마이크로소프트 사 내부의 상당수의 서버도 슬래머 웜에 의하여 감염되었다는 사실은 패치라는 개념이 사회적으로 제대로 동작할 수 없다는 것을 입증하는 것이다. [8] 사실 시스템 관리자들은 매주 수십개의 패치 정보를 받고 있으며 어떤 패치는 괜히 설치 했다가 문제가 생기는 경우도 있기 때문에 실제로 패 치를 제대로 설치해야 한다는 말은 변명이 될 수가 없다. [9] 패치되지 않은 소프트웨어를 깔아서 사용하는 그 수많은 시스템 관리자들이 보안이라고 하는 끝없는 과정에 참여하도록 할 수 있는 방안은 무엇인가 ? 인 터넷 서비스 제공자들이 더욱 꼼꼼이 네트웍을 감시하고 공조해서 인터넷 서 비스의 품질과 안정성을 높이 방안은 무엇인가 ? 소프트웨어 개발 회사들이 보안상 더 안전한 소프트웨어를 만들지 않으면 안되게 하는 방안은 무엇인가 ? 등 모든 측면에서의 대책이 다 나와야 실효성을 거둘 수 있게 된다. 5. 생각해 볼 점 5-1. 다양성이 해결책인가 ? 이번 사건을 겪으면서 이것이 특정 회사의 특정 제품으로 시장이 획일화 되어 감으로써 나타나는 위험성이라고 경고하는 목소리도 높아지고 있다. 주장을 요약하자면, 많은 시스템 (그것도 중요한 시스템) 이 특정 제품 일색으로 되 어 있기 때문에 한번 병충해가 돌면 같은 유전자를 가진 모든 곡물이 다 피해 를 보듯이 하나의 공격에 의하여 전체가 무너질 수 있다는 지적이다. [6] 이 에 대하여 컴퓨터 분야에서는 1990년대 중반부터 연구가 이뤄지고 있으나 뚜 렷한 진전은 많지 않은 편이다. [7] 이러한 주장은 대체적으로 옳다고 생각된다. 하지만, 이번 사태에 이 주장을 그대로 적용시키는 것은 무리가 있다고 생각된다. 왜냐하면 이번에 사용된 웜 은 오히려 그 반대의 주장도 가능하다는 생각을 하게 하기 때문이다. 이때까 지 웜 바이러스를 연구하는 전문가들은 대체로 세계적으로 2만대 이하의 컴퓨 터에 사용되는 소프트웨어는 웜의 공격대상이 되지 않을 것으로 추정하였다. 왜냐하면 인터넷에 연결된 수많은 컴퓨터 중에서 2만대라고 하면 극히 일부에 불과하여 임의의 주소로 공격을 시도하여 성공할 가능성이 극히 낮고 따라서, 웜이 충분히 빨리 전파될 수 없기 때문이다. 하지만, 개별 컴퓨터의 성능이 좋아지고, 그들이 인터넷에 연결되어 있는 네트웍 대역이 커지고, 웜을 개발 하는 기술이 정교해 짐에 따라 이 벽도 점점 무너지는 것이 아닌가 생각된다. 슬래머 웜을 기준으로 한다면 2만대 정도의 흩어진 컴퓨터를 감염시키는 데에 는 한시간이면 충분하다. [2] 따라서, 사용되는 소프트웨어의 다양성을 증가시키는 것도 중요하지만 다양성 증가 자체에도 한계가 있고 또한 이것 만으로 웜에 대응할 수 없다는 점을 간 과해서는 안될 것이다. 5-2. 이런 속도의 공격은 자동화된 대응 이외에는 방법이 없다 앞에서도 지적된 것 처럼 앞으로 나올 웜은 아마도 1시간 이내에 상황이 종료 가 될 것이다. 하지만, 실제 보안대응 체계에서 사람이 주어진 상황을 분석하 여 대응하는 데에는 1시간 이상이 걸린다. 따라서, 감시 결과를 보고 사람의 판단을 거치지 않고 직접 대응할 수 있는 방법이 개발되어야 한다. 하지만, 관련 기술은 아직 초보단계에 머물러 있다고 보인다. 6. 자료 [1] Simson Garfinkel, Alan Schwartz, Gene Spafford, Practical Unix & Internet Security, O'Reilly [2] David Moore, et. al, The Spread of the Sapphire/Slammer Worm, http://www.caida.org/outreach/papers/2003/sapphire/sapphire.html [3] CERT/CC, Vulnerability Note, http://www.kb.cert.org/vuls/id/484891 [4] Analysis of the Sapphire Worm - A joint effort of CAIDA, ICSI, Silicon Defense, UC Berkeley EECS and UC San Diego CSE http://www.caida.org/analysis/security/sapphire/ [5] Bruce Schneier, Secrets and Lies : Digital Security in a Networked World, John Wiley & Sons [6] 허남혁, 인터넷 대란 교훈은 '다양성' 의 소중함 http://www.hani.co.kr/section-001062000/2003/01/001062000200301291848123.html [7] Crispin Cowan, Heather Hinton, Calton Pu, and Jonathan Walpole, The Cracker Patch Choice: An Analysis of Post Hoc Security Techniques, http://www.immunix.org/autonomix/crackerpatch.pdf [8] Robert Lemos, Microsoft fails Slammer's security test, http://news.com.com/2102-1001-982305.html [9] Alex Salkever, The Big Lessons of a Little Worm, http://www.businessweek.com/technology/content/jan2003/tc20030131_4727.htm
posted by 신묘군

댓글을 달아 주세요