웹 무른모의 위기와 SQL 인젝션…

아래 칼럼 하나를 소개합니다. SQL 인젝션을 비롯한 웹 무른모에 대한 공격에 대해 경고를 하는 전상훈 님의 칼럼입니다.

[칼럼] 98년의 크리스마스

글에서 잠시 언급되었는데, Unu 라는 루마니아의 해커가 있습니다. 올 한 해동안 굵직한 보안 업체들의 웹사이트들을 해킹하고 공개해왔던 해커지요. 카스퍼스키, 시만텍, 엔프로젝트 등… 보안 관련된 곳만 집중적으로 노리고 있습니다. 최근에는 인텔을 공격했네요. Unu 가 주로 쓰는 기법이 SQL 인젝션입니다.

사용자 삽입 이미지
SQL 인젝션은 SQL 쿼리문에 특정 패턴의 코드를 삽입하여서 엑세스 권한을 얻거나 DB를 열람할 수 있는 기법입니다. 이전 글 “SQL Injection 하나면 절반은 먹고 갈까?”
에서 얘기했었지만, 웹에서는 이것이 정말 골칫거리입니다. 서비스를 위해서는 DB를 안 쓸 수 없고,
그러자니 SQL 문을 써야 하는데, 그러면 결국 SQL 삽입 공격에 의한 정보 유출을 피하기가 힘듭니다. 물론, 서비스
구축 단계에서 미리 이것을 염두에 두고 설계한다면, 피해를 입을 확률을 확연히 줄일 수 있겠지요.

몇몇 분들은 SQL 인젝션을 잡기술로 치부하곤 합니다. 분명히 이 공격기법에는 더 이상 새로운 기술이 나오지 않고 있습니다. 단지 이전까지 나왔던 방법들을 반복하고 있을 뿐이죠. 하지만 피해가 줄지 않는 것도 사실입니다. 오히려 피해 규모는 점점 커지고 있죠. 웹 무른모들의 SQL 인젝션에 관한 취약점들도 계속 공개되고 있습니다. Exploit Database 에는 SQL 삽입 공격에 대한 취약점들이 거의 매일 올라오고 있고, 어느 날은 10개도 넘는 취약점이 한꺼번에 공개되기도 합니다. 이 중에는 아직 고쳐지지 않은 것들도 상당수 있구요.

전상훈 님은 Unu 를 단순히 스크립트 키드로 말씀하셨지만, 저는 그가 스크립트 키드라고 하더라도 그가 해킹해서 공개하고 리포팅하는 의도를 존중합니다. 보안에 대해 전문적인 지식을 가진 보안 업체들의 웹사이트를 해킹함으로써 우리가 얼마나 안일했는지를 경고해주니까요. 보안 업체가 그 정도인데, 일반 웹 사이트들, 웹 무른모들은 어떨까요? 전상훈 님의 칼럼에서도 언급되었듯이 규모가 상상을 초월합니다. 이미 저는 물론이고, 지금 이 글을 보시는 분들의 개인정보는 노출되었다고 보는 게 옳습니다.

한국인터넷진흥원(KISA)에서는 이 때문에 캐슬(CASTLE)을 보급하고 있습니다. 이 캐슬을 서버에 설치하면 SQL 인젝션 같은 공격이 웹 무른모나 웹 사이트에 적용되기 전에 캐슬에서 먼저 처리되도록 하는 또 하나의 웹 무른모입니다. 일종의 웹 방화벽이라고 볼 수 있지요. 저도 예전에 캐슬 덕을 본 적이 있고, 몇몇 서비스 제공자에게 캐슬을 추천하고 있습니다. 효과는 분명히 있거든요. 하지만 캐슬을 한 번 거쳐서 데이터가 서비스에 전달되는 시간적인 간격이 단점으로 지적되고, 공격을 방어해주는 방법이 패턴에 의한 사전 방어라는 것도 지적되고 있습니다. 새로운 패턴에는 취약할 수 밖에 없지요.

그렇다면, 앞으로의 웹은 어떻게 흘러갈까요? 너무나 심하게 오염되어서 치외 격리 공간으로 지정될까요? 아니면 캐슬보다 더 뛰어난 방법으로 정화가 되어서 청정 구역이 될까요? 현실만을 본다면 전자의 경우가 확률이 더 높을 것 같습니다. 그리고 이것이 앞으로 보안을 공부하는 이들의 숙제가 아닐까요?

Similar Posts

  • smpCTF 2010 후기

    지난 7월 10일 오전 8시부터 12일 오전 8시까지 48시간 진행된 smpCTF 2010 예선에 저희 CERT-IS 가 참여했었습니다. 그리고 의외로 좋은 성과를 내어서 2175점으로 25등을 했습니다. 와우! ㅊㅋㅊㅋ http://ctf2010.smpctf.com/flags_submitted.php 대회 형식은 일반적인 CTF 예선의 형태였습니다. 초반에 몇 개의 문제들만 공개되고 서서히 공개하는 식이었죠. 문제의 종류도 원격 서버 공격, 포렌식, 웹, 암호, 리버싱, 트라비아 등 다양했습니다. 최근의…

  • DLL injection 은 어떻게 이루어지는가? – SetWindowsHookEx ()

    SetWindowsHookEx () 이번에는 윈도우즈에서 정상적으로 지원하는 후킹 함수를 이용하는 방법을 알아보겠습니다. 윈도우즈는 OS와 프로세스 간에 메시지를 주고받는데요. 키보드를 누른다던지, 마우스를 클릭한다던지, 디버깅에 관한 메시지라던지 그런 것들을요. 그리고 그렇게 주고받는 메시지를 후킹할 수 있는 함수도 제공하고 있습니다. [그림 1] SetWindowsHookEx() 함수의 개요 SetWindowsHookEx() 함수가 그것이죠. [그림 1]처럼 이 함수에 삽입할 DLL의 Handler, 즉 주소와 함수의 주소를…

  • 까막눈의 보안소식. 2010년 7월 5주차

    Security researcher demonstrates ATM hacking http://news.cnet.com/8301-1009_3-20012019-83.html 올해 Blackhat USA 에서 대박 발표가 있었다고 합니다. Barnaby Jack 의 “Jackpotting Automated Teller Machines Redux” 라는 제목의 발표죠. 이미 소식 빠른 분들은 다들 아시죠? 원래 작년 Blackhat 에서 발표하려다가 올해까지 연기된 발표입니다. 전세계적으로 많이 쓰이는 ATM 이 보안상 얼마나 취약한지를 보여준 발표였는데, ATM 에서 돈이 인출되는 시연까지 보여주었네요….

  • SPYKIDS OWNZ YOUR SYSTEM, 제로보드4 속수무책으로 당하다.

    Zone-h.kr에서는 국내의 해킹된 사이트를 알려줍니다. 그런데 오늘따라 유난히 많은 사이트들이 해킹되었습니다. 최근에 잠잠하던 거랑 비교해서 이례적인데요. 현재 시각 11시 6분… 22개의 해킹된 사이트 중 20개의 사이트가 브라질의 SPYKIDS라는 팀에 의해 해킹되었습니다. 이들 사이트는 제로보드4를 사용중입니다. 아무래도 SPYKIDS 팀은 제로보드4를 집중적으로 노린 것 같네요. 이미 예전부터 제로보드4는 보안상 취약점이 많은 것으로 알려졌는데 아직 많은 사이트들이 이…

  • 노트북 도청 방지 버튼? ActiveX의 반복?

    어제 동아일보에 노트북의 내장마이크에 의해 도청이 가능하다는 기사(http://news.donga.com/3/all/20100107/25242944/1)가 게재되었습니다. 기사 내용에 따르면, 시나리오는 아래와 같습니다. 악성코드 실행 -> 내장 마이크 on -> 음성파일 녹음 -> 공격자에게 전송 처음에 전 희박한 가능성이라도 시나리오를 공개하고 대중에게 주의하라고 알릴 수 있는 이 기사의 기능에 대해 긍정적이었습니다. 보안은 어렵다, 직접 겪지 않아서 아직 와닿지 않는다 등등의 보안에 대한 대중의…

  • OpenSSH 제로데이 익스플로잇, 속지 마세요.

    인터넷에 OpenSSH의 제로데이 익스플로잇이라고 소개하며 떠도는 소스파일이 있습니다 openssh0day.c 인데요. 저는 버그트럭에서 Justin Kim 님이 올리신 글 덕분에 이게 가짜란 것을 알았습니다. 시험삼아 버추어박스로 페도라를 띄운 후 컴파일해서 실행 해봤는데요. /home 폴더 아래의 모든 데이터를 날리더군요. 정말 어처구니가 없는 녀석이었습니다. 아래는 openssh0day.c 안의 쉘코드 내용입니다. 실제로는 아스키 문자로 되어 있는 것을 printf() 함수로 출력하였습니다. 보시다시피…

0 Comments

  1. 웹 방화벽으로는 한계가 있을 수 밖에 없습니다.

    ==============================================================
    가장 큰 이유로 IPS나 웹방화벽은 성능상의 이유로 패턴매칭을 텍스트 서치
    가 아닌 바이너리 서치를 한다는 점입니다.
    쉽게 말해 대소문자 처리를 하지 못하는데 예를들어 패턴에 SELECT 를 넣
    으면 SELECT 는 잡아 내지만 select 는 잡아내지 못한다는 점입니다.
    직접 특수문자가 아닌 일반 영문자 까지 URL 인코딩 한 경우에는 더더욱 탐
    지율이 떨어지게 됩니다.
    DB는 대소문자를 구분하지 않습니다.
    또한 웹서버는 자동으로 URL 디코딩을 합니다.
    따라서 아래의 문자열들은 모두 DB에서 동일하게 인식됩니다.
    공격자 웹서버 DB
    SELECT SELECT
    SelecT SelecT
    select select
    %53%45%4C%45%43%54 SELECT select
    %53%65%6C%65%63%54 SelecT
    %73%65%6C%65%63%74 select
    S%45LECT SELECT
    s%45lect sElect
    IPS나 웹방화벽은 패킷이 웹서버에 도착하기 전에 먼저 검사를 합니다.
    일반적으로 바이너리 패턴매칭을 한다면 SELECT 문자열 만으로도 대소문자.
    URL인코딩 문자 등을 조합한 패턴은 수만가지가 나올 수가 있습니다.
    ==============================================================

    위의 자료는 http://blog.dasom.pe.kr/attachment/ek060000000021.pdf 에서 발취한 것입니다. 글쓴이의 결론은 개발 소스 상에서 필터링하는 것이지요.

    즉, 캐슬이나 WAF로는 한계가 있다는 뜻입니다.

    참, 저와 공감되는 생각을 가지신 분을 보니 반갑습니다.

    PS: 옆 링크중에 초보웹은 주소가 틀렸습니다. 수정하셔야 할거 같아요.

  2. 하지 말아야 해서 모두가 하지 않을거라고는 생각하지 않습니다. 누군가는 악용할 가능성이 분명히 있으니까요. 그렇기 때문에 그 전에 이렇게나마 취약점을 알려주는 게 미래 지향적인 관점에서 더 유익하다고 봐요. 물론, 일방적으로 공개하는 것에 대해서는 저도 이게 맞는건지 의구심이 들고, 저렇게 태연하게 블로깅을 할 수 있다는 사실도 신기합니다.

  3. 유명 사이트.. 보안.. 은행.. 정부… 침입은 할 수 있지만, 하지 말아야하기 때문에 하지 않는 것이라 생각입니다. 하더라도 조용히 해야한다고 생각이 되는데….(그냥 제 생각)

    하지만 Unu는 하지 말아야할 것을 하면서, 그걸 또 공개하는 것이 조금 이상하다고 생각 드네요 ^^ (소심한 생각)

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다