2009.02.02 15:39

보안 취약점과 버그

버그에 대해 고민하다보면... 과연 보안 취약점 자체가 버그일까? 라는 고민을 해볼 수 있다. 해킹 당할 위험이 있더라도 일단... "기능적"으로는 제대로 동작을 한다. 과연 괜찮을까? 물론 아니지만... 이러한 질문을 던져보는 이유는 간혹 요구사항이라는 것을 언급할 때 "기능적" 요구사항만을 생각하기 쉽상이기 때문이다. 바쁠 때는 특히 그렇다. 일단 눈에 보이도록 "돌아가는 제품"이 시급하기 때문이다. 물론, 어떠한 버그 때문에 보안이 취약하다고 말하는 것이라면... 보안이 취약하다는 것과 버그는 의미는 틀리더라도 동일시 생각해도 될 것 같다.

버그에 패턴에 있듯이... 보안이 뚫리는 insecure code 를 보면, 역시나 패턴이 있다. 여기서의 패턴은 GoF의 디자인 패턴이 아니라... 일반적으로 말하는 정말 그냥... "패턴"이다. 굳이 말하자면, Micro Pattern 이라고 볼 수 있겠다.

취약점을 이용하려는 해커들의 공격은 "동적"이다. 정해진 정적 패턴이 없다. 그냥 단순한 패턴 비교만으로는 쉽지 않다. 그들의 공격 대상도 참으로 Layer 적이다. 서버를 공격하기 위한 code injection, 브라우저상에서 문제를 일으키기 위한 cross-site scripting, DB를 공격하기 위한 SQL injection 의 형태만 봐도 알 수 있다. 또한, 어떻게든 "구멍?"을 찾아 자신의 소중한 공격 코드나 악성 화일을 올려보려는 노력도 정말 창의적이다. 확장자 변경, 화일명에 코드 삽입을 하거나 URL이나 기타 각종 Request를 Tampering 하기도 하고, Firebug와 같은 도구를 활용해서 Bypassing 시키기도 한다.

공격자와 방어자들간의 도구를 살펴보더라도 거의 구분이 가지 않을 정도이다. 서로 계속해서 방법을 바꾸어가면서 속이고... 속이는 전략인 것 같다. 특히나 botnet을 이용한 분산 공격은 골치가 아프다. bot들을 이용한 DDoS 공격은 참 막기도 쉽지 않다. 하지만, 방어를 하려는 honeybot은 이러한 공격자의 botnet을 역으로 이용해서 그들의 망에 대한 정보를 뽑아내기도 한다.

그런데... 해커(공격자)의 입장에서 다음을 한번 생각해보자. 내가 뿌려놓은 botnet 망에 마치... 하나의 bot처럼 행세하면서 프로토콜을 이용해서 필요한 정보들을 뽑아가는 node가 하나 있다면... 그 bot은 상당히 바쁠 것이다. 그래서 실제로 트래픽들을 조사해보면... 그 bot을 중심으로 성게형의 visual한 패턴이 나올 수 있을 것이다. 이러한 패턴에 대해서는 이미 많은 연구가 진행되었다... 물론, 이러한 것을 숨기기 위해 스텔스처럼 조용히 물어본다면 어쩔 수 없겠다.

하지만... 만약, 네트웤 프로토콜 분석으로는 알기 어려운 공격자만이 알고 있는 어떤 특이한 수열이나 시간 정보를 이용해서 프로토콜을 변경하거나 이용한다면... 섣불리 honeybot이 덤비긴 힘들 것 같다. 잘못 덤비다간... botnet으로부터 잘못된 정보 리스트를 얻거나(이게 더 사악한 것 같다) 차단당할 수도 있기 때문이다. 그렇다면, 기존의 이러한 방법으로 honeybot으로 먹고 사는 회사들은 좀 힘들어질 것도 같다.

보안은 참 재미있는 분야임에는 틀림없다. 나 역시 작년말부터 보안쪽을 가볍게 즐기고(?) 있는데... 최근 보안 관련 세미나를 들으면서 좀더 관심을 가지게 된 것 같다.

써놓고 보니, 그다지 정리가 별로 안된 상태로 마구 끄적인 것 같다... 그냥 보안에 대해 재미를 느끼고 이를 공유하려는... 초보의 횡수라고 생각해주길...

- swinside -
Trackback 0 Comment 1
  1. Ray 2009.02.03 14:36 address edit & del reply

    저는 버그를 매우 광범위하게 보기 때문에 일반적인 보안 취약점은 당연히 버그로 보고 있지만, 심지어는 스펙에 없다라도 문제가 된다면 버그로 보지만 DDoS 공격을 받는 것은 버그 볼 수는 없을 것입니다.