Skip to content
Tags

,

1시간만에 작성된 프로그램에 의해 22개의 XSS 버그가 발견된 네이버

July 19, 2012

우리나라에서 가장 유명한 포털 사이트인 네이버에서 무려 22개의 XSS 취약점이 발견되었습니다. 이 22개의 버그는 1시간만에 작성한 자동 프로그램으로 발견한 취약점으로, 이는 네이버의 보안 수준이 낮다는 것을 보여줍니다. 자세한 내용은 블로그 글 안에 포함되어 있습니다.

우리나라에서 가장 유명한 포털 사이트인 네이버에서 무려 22개의 XSS 취약점이 발견되었습니다.

    – 위키피디아: http://en.wikipedia.org/wiki/Cross-site_scripting

최근 몇몇 매체에서 네이버의 XSS 취약점들이 기사화된 것을 보았고 “네이버의 보안 수준”이 궁금하여 본 프로젝트를 진행하게 되었습니다. 과거 네이버의 취약점들을 네이버 보안팀에 알려준 경험이 몇번 있으나, 사이트의 보안 수준에 대해서 객관적으로 평가를 해본 적은 없었기 때문에 이런 호기심이 생겼습니다.

[From wired magazine]

 

시작하기 전에 몇가지 언급하겠습니다. 기존에 공개되어있는 웹 보안 점검 툴들은 대체로 효과적이지 않기 때문에 사용하는 사람들도 좋은 결과를 기대하는 경우는 별로 없습니다.

또한, 네이버는 굉장히 많은 서버, 도메인, 그리고 페이지가 있습니다. 보안팀 인력이 많다고 해도 모든 페이지에 대해서 일일이 수작업으로 검증하는 것은 쉽지 않습니다.

마지막으로, 아직까지 국내 개발자들은 Secure Coding에 익숙하지 않습니다. 즉, 네이버 같은 대형 사이트에서는 버그 없는 사이트를 유지하기란 매우 어렵다고 볼 수 있습니다.

위와 같은 이유 때문에 프로젝트를 시작하기 전에 몇가지 룰을 정해놓았습니다. 이 프로젝트의 특징은 다음과 같습니다.

[프로젝트 특징]

  1. XSS 발견에만 초점:
 
    서버 프로그램의 취약점을 찾는 행위는 법적으로 문제가 될 수 있기 때문에, 주로 클라이언트에 영향을 주는 버그인 XSS 발견에만 초점을 맞추었습니다. (물론, CSRF로 확장되어 악용될 가능성도 있습니다.)

  2. XSS 발견 자동화 프로그램 제작:
 
    대형 사이트의 보안 수준을 체크해야 하기 때문에 프로그램을 제작한 후, 취약점을 자동으로 발견하는 방향으로 진행되었습니다.

  3. 수작업을 통한 해킹은 제외:
 
    보안 전문가에 의해 진행되는 수작업을 통한 세밀한 해킹은 네이버뿐만 아니라 해외의 유명 사이트들에서도 마찬가지로 취약점이 발견될 수 있기 때문에 보안 수준을 객관적으로 측정하기 위해 수작업 해킹은 제외하였습니다.

  4. 단시간내의 프로젝트 진행:
 
    이 프로젝트는, 한명의 해커가 짧은 시간내에 얼마나 많은 버그를 찾아낼 수 있는지 알아보기 위함입니다. 만약 짧은 시간에 많은 버그가 발견되었다면 그만큼 보안 수준이 낮다고 볼 수 있기 때문에 이러한 규칙을 세웠습니다.

 

이 프로젝트를 통해 다음과 같은 결과를 얻었습니다.

[프로젝트 결과]

  1. 프로젝트 진행 시간
 
    – 총 진행시간: 8시간
    – 자동 취약점 점검 프로그램 제작: 1시간
    – 프로그램 실행 시간: 6시간
    – 검증 시간: 1시간

  2. 발견한 XSS 버그
 
    – 총 버그 갯수: 22개
    – 버그가 발생한 페이지수: 14
     (하나의 페이지에 여러 xss 취약점이 존재하는 경우도 있음)

 

위 결과를 통해 알 수 있듯이, 짧은 시간에 대량의 버그가 나왔습니다. 프로그램을 실행한 시간동안 저는 수면을 취하고 있었으므로, 실제로 제가 본 프로젝트에 투자한 시간은 2시간입니다.

프로그램의 원리는 단순합니다. 저는 프로그램을 파이썬으로 작성하였고, 해당 프로그램이 수행하는 기능을 요약하면 다음과 같습니다.

  1. naver.com 사이트 크롤링 (하위 도메인 및 페이지 포함)
 
  2. 인자가 들어가는 페이지들을 식별한 후 파싱
 
  3. 사용자로부터 문자열을 입력받는 페이지들에 특정 crafted 스트링을 삽입
    (속도 문제로 인하여 정수형 인자만 받는 페이지들은 테스트에서 제외)
 
  4. Response 받은 페이지를 다시 파싱하여, crafted 스트링이 어떻게
    해석되었는지 확인
 
  5. 해석된 결과에 따라 xss 가능성 여부를 판단하여 기록
 
  6. 마지막으로 “검증 시간” 과정에서 프로그램이 발견한 버그들이
    실제 버그가 맞는지 검증

 

(이 프로그램은 제한된 시간 내에서 작성된 것입니다. 만약 시간을 더 투자하여 프로그램을 업그레이드할 경우 더 많은 버그를 네이버 사이트에서 발견할 수 있을 것으로 생각합니다. 이 프로젝트는 즉흥 아이디어를 구현한 것이기 때문에 naive하며, 위에서 설명한 작동 원리 역시 기본적인 내용입니다.)

이 프로젝트의 결과를 통해 어떠한 점들을 시사할 수 있는지 알아보겠습니다.

 

1. 국내 대형 포탈 사이트들의 보안 수준

(본 프로젝트는 네이버를 대상으로 진행하였으나, 네이버뿐만 아니라 기타 다른 국내 포탈 사이트도 네이버와 비슷한 보안 수준을 갖고 있을거라 생각하고 있습니다. 따라서, 여기서 제가 언급하는 부분은 네이버에 국한된 내용이 아니라, 다른 국내 사이트에도 적용된다고 볼 수 있습니다.)

결과를 다시 정리해보자면,

    – 아주 짧은 시간에 대량의 버그들이 발견되었으며
    – 발견된 버그들은 어려운 유형의 XSS가 아니라 비교적 쉬운 유형의 XSS

따라서 우리나라 포털 사이트들의 보안 수준은 낮다고 볼 수 있습니다.

적어도 XSS에 대비한 코딩은 매우 미흡하다고 증명된 것입니다. XSS 버그를 완벽히 예방하는 것은 어려운 일이지만, 발견한 버그들은 비교적 쉽게 찾을 수 있는 유형의 버그였습니다. 따라서 XSS가 아닌 다른 해킹 기법에 대비한 코딩도 잘되어있지 않을 것이라 예상할 수 있습니다.

실제 시도를 해보지 못했기 때문에 정확한 의견을 내기는 어렵지만, 다른 유형의 버그들도 비슷한 난이도의 수준에서 발견할 수 있을 것으로 예측합니다.

(다시 한번 언급하지만, 본 프로젝트에서는 XSS 유형의 버그를 발견하는 것에만 초점을 맞추었습니다. 서버단에서 발생할 수 있는 취약점들에 대한 스캔은 법적으로 문제의 소지가 있기 때문입니다.)

 

2. 해외 포털 업체와 비교한 국내 포털 업체의 보안 수준 향상을 위한 노력

먼저, 저는 해외 포털이나 국내 포털 회사에서 일해본 경험이 없기 때문에 제가 알고 있는 지식이 사실이 아닐 수도 있음을 말씀드립니다. 여기서 서술하는 정보는 각 회사들에 근무하는 주변의 지인들로부터 들은 이야기이고, 제 나름의 기준으로 평가를 내린 것입니다.

자체 보안팀을 갖고 있는 것은 해외, 국내 모두 동일합니다. 보안팀 내부 상황이나 현실적인 문제에 대해서는 제가 알 수 있는 방법이 없으므로, 외부인의 관점에서 봤을 때의 차이점을 표로 나타내봤습니다.

 

  해외     국내  
 취약점 접수 센터  Yes No
 외부 전문가 활용  Yes No

[보안 수준 향상 노력 비교]

 

위 비교표에 대해서 추가적으로 설명하겠습니다. 우선 구글이나 페이스북의 경우엔 해커가 취약점을 발견할 경우 이에 대해서 공식적으로 접수받는 창구를 마련하고 있습니다. 심지어 리포트를 할 경우 보상금까지 지급합니다. 명예와 함께 일석이조를 취할 수 있습니다.

여기서 주목해야 할 부분은 보상금이 아닙니다. 공식적인 접수 창고를 만들었다는 것 자체에 의미를 부여해야 합니다. 이것이 보안을 위한 최선의 방법은 아닐지라도, 최대한 많은 정보를 입수하여 사용자를 보호하려는 노력을 한다는 것을 알 수 있습니다.

외부 전문가 활용면에서도 차이가 납니다. 구글의 경우 자체 보안팀에 월드 클래스 해커들을 다수 보유하고 있음에도 불구하고 또 외부 보안 컨설턴트를 고용하여 자사 제품의 보안을 강화하고 있습니다. 자체 보안팀이 보지 못하는 부분을 외부 인력을 활용해서 해결하려는 노력이라고 할 수 있습니다.

반면에 국내 회사들은 자체 보안팀이 있다는 명목하에 외부 보안 전문가들의 도움을 받으려는 의지가 강하지 않습니다. 이러한 부분은 보안팀의 잘못이 아니라 임원들의 잘못된 결정 때문에 일어나는 경우가 많습니다. 의사 결정권자들은 보안을 위해 어떤 투자를 해야 하는지 이해가 부족한데, 우리나라는 엔지니어들의 의견이 강하지 않기 때문에 임원들을 설득하기가 어렵습니다.

 

3. 침해사고 발생 시 법정에서의 불리함

과거 본 블로그를 통해 “침해사고 재판 시 해킹에 사용된 기술의 난이도가 미치는 영향“에 대해 알아본 적이 있습니다. 간단히 요약하면 “쉬운 난이도의 취약점을 보유했다고 판단될 경우 배상 금액이 커질 가능성”에 이야기하고 있는 글입니다.

국내에서는 침해사고의 유형에 따라, 법정 소송이 진행될 수 있습니다. 본 프로젝트의 결과로 비추어봤을 때, 네이버의 보안 수준은 높지 않다고 할 수 있습니다.

즉, 이러한 결과들이 미래의 법정소송에서도 영향을 줄 수도 있습니다. 물론 XSS는 CSRF 등으로 활용되지 않는 이상 서버단의 취약점으로 발전될 수 있는 확률이 높진 않지만, 기존에 공개된 버그들을 평가하여 재판에 적용할 수 있다는 가능성을 배제할 순 없습니다.

 

본 프로젝트를 통해 알아낸 22개의 버그는 이미 5월 달에 네이버 개발팀에(보안팀에 알리려 했으나, 네이버는 보안팀이 취약점 접수 업무를 공식 담당하지 않아서 개발팀에 리포트하였습니다.) 통보되었으며, 악용의 소지를 막기 위해 버그에 관한 상세 정보는 공개되지 않습니다.

마지막으로, 비록 네이버의 보안 수준이 낮다고 평가되었음에도 불구하고 이를 전적으로 보안팀의 잘못으로 보기에는 어렵습니다.

대형 기업들은 한가지 이유 때문에 보안 수준이 낮아지지 않습니다. Secure Coding에 대한 이해가 부족한 개발자, 예산 결정권자들의 보안에 대한 이해 부족, 바쁜 업무에 시달려서 정작 본인들의 업무를 못하게 되는 보안팀 등의 복합적인 문제가 섞여 있다고 볼 수 있습니다.

감사합니다.

Advertisements

From → Security Misc

12 Comments
  1. 어떤 분은 “구글에서도 XSS가 나온다, 그럼 구글도 보안 수준이 낮다는 것이냐”라고 말씀하실 수도 있는데, 이 글의 핵심은 다음과 같습니다.

    “1시간만에 만든 스크립트로는 구글에서 22개의 버그를 발견할 수 없다.”

  2. maljb permalink

    잘 보고갑니다. beist님은 그냥 한명의 해커가 아니라 한명의 고급 해커 아닌가요? ㅎ

  3. reflected XSS에 대해서만 테스트를 진행하신건가요 ?

  4. 부탁하나이다 permalink

    오 굿! 네이버를 초토화시켜 줘!!! 강간 뉴스나 메인페이지 상단에 두도록 방치하는 쓰레기 포털 따위는 사라져야해. 님 부탁합니다. 대한민국을 지켜주세요! 타도 네이버!!! 네이버는 태생부터 인터넷의 자유정신과는 거리가 멉니다. 외부 유입은 개방하고 내부 컨텐츠 검색은 외부에서 불가하게 했다가 조금 개방한지 얼마안됩니다. 네이버가 사라져야 우리나라 인터넷 생태계가 건강해집니다. 돈 조금 아낄려고 모니터링 인력까지 조선족 쓰느라 댓글 다 지워지는 사태를 방조하는 곳이 네이버입니다. 부디………………….. 없애주소서.

    • 부탁하나이다 permalink

      직접 하기 부담되신다면 간단히 외국 해커그룹에 통보만 해줘도 땡큐

  5. 궁금 permalink

    안녕하세요 글 잘 봤습니다.

    읽다보니 궁금한 게 하나 있습니다!!

    XSS는 목표가 되는 유져 클라이언트에서 스크립트가 실행되게 해야 합니다. 그렇게 하기 위해서는 단순히 해당 페이지에서 스크립트 실행이 가능한지 여부가 아니라, 그 스크립트가 다른 유저가 볼 수 있는 일반적으로 상황에서 실행되는지 여부가 XSS 가능 판단기준이 되어야 한다고 알고 있습니다.

    예를 들어 전혀 접근가능성이 없는 로그인계정 정보수정같은 페이지는 스크립트 삽입이 가능하다 해도 XSS취약점이 될 수 없을 것인데, 블로그라든지, 뉴스댓글, 카페채팅과 같은 곳이라면 누구나 볼 수 있는 곳이므로 100% XSS 취약점일 것입니다. 그런데 이 글을 읽기 전까지는 네이버에서 이런 부분은 php등을 이용하여 server단에서 실행되므로 로컬에서 테스트하기 어렵다고 생각했습니다.

    어떤 방식으로 테스트했는지 조금 더 자세히 알고 싶습니다!!

    • 궁금 permalink

      아, 좀 검색해보니, 이런 유형의 xss는 host가 naver로 같은 경우이니 어떤 방법으로든 링크를 클릭케 하여 naver에서의 cookie를 탈취한다는 개념이군요 납치하는 경우만 생각하고 있었네요;

  6. 할로윈나잇 permalink

    이 것도 퍼징이라고 부를 수 있나요?

  7. 우와….신기하내요 파이썬으로도 보안 툴을 만들다니 … 전 고정 관념이 너무 강한거 같아요 ㅠㅜㅍ
    저는 웹보안 점검툴이라하면,…… 웹이니까 ASP ? 자바 자바스크립트…? 이렇게했는데… 으 이놈의 고정 관념 문제내요 ㅜㅠ

  8. 근데 모든 프로그래밍으로도 마음 먹으면 웹보안툴이라던지 보안툴을 제약없이 만들 수 있나요 ?

댓글을 남겨주세요.

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: