1. 개요
미국의 3Com TippingPoint에서 주최하는 해킹 대회. 대회의 이름은 leet에서 '취약점을 이용해 권한을 얻어낸다'는 의미로 사용되던 OWN과 OWN에서 파생된 (오타로 인해?) '해킹하다/취약점을 뚫다'는 의미인 PWN을 이용하여 만든 것이다. PWN 2(TO) OWN. 즉, '(관리자)권한을 얻기 위해 해킹하다/취약점을 뚫다' 정도로 해석 할 수 있다.
해킹 대회라고는 해도 딱히 해로운 의도는 없고 그냥 보안 컨퍼런스 행사 중 하나. 본 목적은 자주 사용되는 IT 기기들의 약점과 문제점을 찾아내어 더욱 더 강한 보안수준을 요구하게 한다는 것으로, 업계에서 자기네들이 만든 시스템의 보안이 PWN2OWN에서 서늘하게 털리는 것을 지켜보며 경각심을 일깨우거나 보안에 더욱 심혈을 기울이게끔 만드는 것이다. 미국에서도 내로라 하는 전국구 해커들이 등장해서 어떤 시스템이라도 빠르면 몇분안에 탈탈 털어버린다.
해킹 대상에 따라서 OS 부문, 웹 브라우저 부문, 스마트폰 부문 등 다양한 카테고리로 나뉜다. 빠르게 변화하는 IT업계 특성상 매년 새로운 카테고리가 추가되고 변경되고 하기 때문에 자세한 건 2021년 기준으로 여기를 참고하자. 1년에 한 번 열리는 것이 아니라 카테고리에 따라 나뉘어서 여러 번 개최된다. 대체로 데스크탑 소프트웨어가 중심인 메인 대회는 캐나다 밴쿠버에서 열려왔으며, 시간이 지남에 따라 다른 지역에서 모바일, 임베디드 대상으로 하는 대회가 별도로 분리되어 개최되고 있다. 대회인 만큼 상금과 상품도 주어지는데, 상품으로는 상금과 함께 해킹에 성공한 기기를 증정한다고 한다.
상금의 액수는 한화로 작게는 천만 단위부터 크게는 억 단위까지 다양한데, 대부분 기업에서 후원해주는 편이다. 자사 제품이 해킹당하는 자리에 이렇게 투자하는 이유는, 제품의 홍보를 겸하는 것도 있지만 무엇보다 실제로 그대로 출시했다가 보안이슈가 터졌을 때 따라올 처리비용과 이미지 타격 등을 감안하면, 그냥 해커들에게 몇 억 주고 보안문제를 사전에 발견하고 강화하는 게 압도적으로 싸게 먹히기 때문이다.[1]
2. 역사
2.1. 2010~2011년 대회
2010, 11년 PWN2OWN은 2번 다 캐나다 밴쿠버에서 3월에 열렸다.구글에서는 PWN2OWN의 첫째날 구글 크롬을 첫번째로 해킹한 해커에게 2만달러와 부상으로 크롬북을 제시했다. 결국 2011년 PWN2OWN 대회에서 웹 브라우저중 크롬만이 해킹되지 않으며 3년연속으로 해킹되지 않은 기록을 세웠다...만 2012년 대회에선 결국 뚫렸다(...)
2.2. 2013년 대회
2013년에는 Internet Explorer 10, Chrome, Java, Adobe Reader, Adobe Flash 까지 아주 다양하게 성공적으로 해킹되었다. 이 대회에서는 2012년 Pwn2Own에서 Chrome을 최초로 해킹한 것으로 유명한 프랑스의 보안 업체 VUPEN에서 IE10, Flash, Java를 해킹하였으며, MWR Labs에서 Chrome을 해킹하였다.MWR Labs에서는 블로그에 Chrome 해킹 과정에 대한 자세한 Writeup을 올려놨으므로 참고하자.
Chrome 임의코드 실행 취약점
Windows 커널 권한 상승 취약점
2.3. 2014년 대회
2014년 대회에서는 Internet Explorer 11, Chrome, Firefox, Safari를 포함해서 Adobe Reader와 Adobe Flash 까지 전부 해킹되는 불상사(?)가 일어났다. 이 불상사의 주요 주인공은 프랑스의 보안 업체 VUPEN이다. VUPEN은 Safari를 제외하고 위에 언급한 모든 어플리케이션을 해킹하는 데에 성공하였다. 이 회사는 2011년 Safari 해킹을 시작으로, 2012년 최초로 크롬을 해킹하고 IE도 해킹하였으며 2013년에는 IE10, Flash, Java를 해킹하는 등 Pwn2Own의 단골 손님이다.또한 처음으로 한국인 해커 이정훈(lokihardt)이 출전하여 Internet Explorer 11을 공략하였으나 아쉽게도 해킹에 실패하였다.
2014년에는 Mobile Pwn2Own도 따로 개최되었다. 이름 그대로 이는 Mobile 기기상에서 브라우저를 공격하는 것이 특징이다.
iPhone 5s, Galaxy S5, Nexus 5 등 다양한 모바일 기기상에서의 브라우저가 성공적으로 해킹되었다.
이정훈(lokihardt)은 이 대회에서는 iPhone 5s상의 Safari를 성공적으로 해킹함으로써 한국인으로는 Pwn2Own에서 처음으로 수상을 하게 되었다.
Mobile Pwn2Own에서 lokihardt가 iOS상의 Safari를 해킹하는 데에 사용한 취약점은 아래와 같다.
Safari 임의코드 실행 취약점
iOS 샌드박스 우회 취약점
2.4. 2015년 대회
2015년 3월에 열린 Pwn2Own에서, 한국의 유명한 해커 이정훈(lokihardt)[2] 이 Chrome, IE11, Safari 최신 버전을 전부 해킹하는 데에 성공하여 총 상금 $225,000를 얻었다. 이는 이 대회 역사상으로도 한 개인이 3가지 메이저 브라우저를 전부 해킹하는 데에 성공한 것은 최초이다.[3] 이정훈 해커는 위 항목에 나와있듯이 2014년 Mobile Pwn2Own에서도 iPhone 5S상의 Safari 브라우저 해킹으로 상금을 받은 적이 있으며[4], 그보다 더 이전에도 Chrome 브라우저의 취약점(Sandbox 까지 우회하는 완전한 익스플로잇)을 구글에 보고하고 3만 달러를 받은 경력이 있다. 물론 Pwn2Own과 같은 대회에서 수상한 적만 없을 뿐이지 옛날부터 Internet Explorer 나 Adobe Flash, Adobe Reader, Java 취약점 등 다수의 메이저 소프트웨어 취약점을 발견했었고 국내 소프트웨어들[5]은 말할 것도 없다. 현재 버그 헌팅으로는 독보적인 국내 최고이다.[6]
특이사항이라면 과거에 이정훈 해커가 발견하여 구글에 보고한 Chrome 취약점의 경우 크롬 자체의 취약점을 이용해 Sandbox를 우회한 반면[7] 이번 대회에서는 Windows 커널 모드상의 취약점을 이용해 우회하였다. 구글에 직접 보고하는 경우는 브라우저 자체의 취약점이 아닌 운영체제의 커널 취약점으로 샌드박스를 우회한 것은 당연히 인정하지 않는다. 그러나 Pwn2Own 대회에서는 운영체제 커널 모드상의 취약점으로 샌드박스를 우회해도 인정한다.[8] 일반적으로는 더 많은 플랫폼에서 해킹이 가능하도록 하는 것이 더 어려운 편이다.
브라우저를 해킹한다는 의미에 대해 부연 설명하자면, 어떤 브라우저를 해킹했다는 것은 해커가 미리 만들어놓은 html과 같은 브라우저가 파싱하는 파일[9]을 웹 서버에 올려놓고 해당 브라우저를 사용하는 유저가 그 웹 페이지에 접속하여 페이지를 보려고 하는 순간 해커가 원하는 코드가 실행된다는 얘기이다. 이는 가령 시스템의 중요 파일을 지우는 코드가 될 수도 있고 원격 쉘을 열어서 해커가 시스템을 조작할 수 있도록 하는 코드일 수도 있고 또는 계산기를 실행하는(...) 코드일 수도 있다. 원래 브라우저에서 의도하지 않은 임의의 코드가 실행된다는 것이며 이러한 취약점 형태를 Arbitrary Code Execution(임의 코드 실행) 이라고 한다.[10]
예전에는 이러한 코드 실행 취약점을 이용해서 프로세스상에서 원하는 코드를 실행만 하면 되었지만, 현재는 거의 대부분의 브라우저가 적용하고 있는 Sandbox 기술로 인해 예전처럼 단순히 렌더러 프로세스 내에서 임의 코드 실행이 된다고 해서 시스템에 피해를 주는 악의적인 공격을 할 수는 없게 되었다. 이는 쉽게 말하자면 Sandbox 라는 가상의 환경 내에서 브라우저 렌더링 처리를 하는 것으로, 기본적으로는 제일 먼저 브라우저를 실행하면 Broker 라 불리는 중앙 제어 프로세스가 생성되고, 이 Broker에서 자식 프로세스를 필요한 만큼 생성을 하게 된다. 이 Broker 프로세스의 자식 프로세스 중 렌더링 관련 프로세스들은 모두 샌드박싱된(Sandboxed) 프로세스가 된다.
브라우저는 이러한 렌더링에 쓰일 자식 프로세스들은 Broker와 달리 기본적으로 권한 자체를 낮게 설정하여 생성한다. Windows의 경우 이러한 낮은 권한의 프로세스들은 파일 I/O 나 소켓 생성 등 다양한 부분에서 제한을 받는다. 이러한 낮은 권한의 자식 프로세스가 실제로 HTML 파싱, 자바스크립트 실행, 렌더링 등의 모든 일을 처리하는 Renderer Process이다. 따라서 가령 자바스크립트 취약점으로 임의 코드 실행에 성공해도 그것은 결국 낮은 권한의 Sandboxed 프로세스 내에서만 가능하기 때문에 공격자가 원하는 악의적인 행위를 하기에는 부족하다.[11]
물론 Renderer Process도 특정 파일의 내용을 읽고 쓰거나 소켓 통신 등을 하지 못하면 컨텐츠 자체를 얻을 수도 없고 할 수 있는 게 없기 때문에, 자신이 직접 하지는 않고 Broker Process에 처리해달라고 요청만 하고 그 결과만 전달 받아서 처리하는 식으로 구현된다. 이 과정은 Broker도 어쨌든 다른 프로세스이므로 Broker ↔ Renderer 간의 IPC를 이용한다. 가령 네트웍 통신 같은 경우도 실제로는 모두 Broker에서 연결하여 통신하게 되고 렌더링 프로세스들은 Broker를 거쳐서 결과만 얻을 수 있다.[12]
Chrome의 경우 이러한 샌드박스를 진작부터 강하게 적용하고 있으며, IE의 경우 IE 버전 + Windows 버전에 따라서 지원 여부가 다르다. Vista 이상에서의 IE7 부터 최초로 Protected Mode 라는 이름으로 Integrity Level 등을 이용한 샌드박스 기능이 포함되었다.(지금은 IE10 이상부터 EPM 이라는 이름으로 다른 여러 보호 기능과 통합되었다.) Safari의 경우 Mac OS X와 iOS에서 보통 실행되는데 이 두 운영체제는 모두 커널에서 자체적으로 어플리케이션 샌드박스를 지원하기 때문에 이를 이용하고 있다. 따라서 현재 Pwn2Own과 같은 대회에서는 기본적으로 Sandbox 까지 우회하여 임의 코드 실행이 가능해야 최종적으로 해킹에 성공한 것으로 인정한다. 이는 비교적 단순했던 기존의 브라우저 해킹을 더욱 어렵게 만들었다. 따라서 이를 모두 우회하여 3개의 브라우저를 모두 해킹했다는 것은 누가 봐도 대단한 일이라 할 수 있다.
참고로 이번에 사용한 취약점들은 대부분 ZDI에 페이지가 추가되어있다.
IE11 임의코드 실행 취약점
IE11 샌드박스 우회 취약점
Chrome 임의코드 실행 취약점
Windows 커널 정보 누출 취약점
Windows 커널 권한 상승 취약점[13]
Safari 임의코드 실행 취약점
OS X 샌드박스 우회 취약점
위에 나눠진 대로 IE11 해킹에 2개의 취약점, Chrome 해킹에 3개(또는 그 이상)의 취약점, Safari 해킹에 2개의 취약점이 사용되었다. IE11과 Chrome의 경우 위에서 설명했듯이 IE11은 IE 자체의 취약점을 이용해 샌드박스를 우회하였고 Chrome은 Windows 커널 취약점을 통해 샌드박스를 우회하였다. 따라서 Chrome은 가장 높은 SYSTEM 권한을 얻어낼 수 있었으며 이로 인해 추가 보너스 상금을 얻었다.
2.5. 2016년 대회
나온지 1년이 조금 넘은 최신 브라우저인 엣지에 대한 공격을 새 타깃으로 지정하였다. 자연히 Internet Explorer 11은 타겟에서 제외되었다. 또한 이 해부터 Windows 기반 브라우저인 경우 기본적으로 VMware Workstation 내의 Windows 10이 설치된 GuestOS 내에서 실행한다. 이때 그냥 GuestOS 내에서만 익스플로잇을 성공하면 원래 그랬듯이 일반적인 브라우저에 대한 시상을 하고, 만약 여기다가 VMware Escape 취약점으로 Host에 접근까지 성공한다면 추가 포인트 및 금액을 지불한다. 전체 리스트는 아래와 같다.Target | Points |
VMware Workstation Escape | 13 |
Google Chrome | 10 |
Microsoft Edge | 10 |
Adobe Flash | 8 |
Apple Safari | 6 |
SYSTEM Escalation | 5 |
Root Escalation | 4 |
Target Sandbox Escape | 3 |
총 5팀이 참여하였다. 최종 결과 리스트는 아래와 같다.
이정훈은 Safari/Edge/Chrome의 3가지 브라우저에 대해 시도하였다. VMware Workstation Escape는 하지 않은 것으로 보인다. 첫번째로 Safari 브라우저에 대해 임의 코드 실행 및 root 권한 획득을 성공하여 10Point와 60000달러를 얻었다. 두번째로 엣지 브라우저에 대해 임의 코드 실행 및 SYSTEM 권한 획득을 성공하여 15Point와 85000달러를 얻었다. 세번째로 구글 크롬 브라우저에 대해 시도하였으나 실패하였다. 개인으로 참여한 것은 그가 유일하다.
총 38Point를 얻은 Tencent Security Team Sniper가 1위를 차지하였다.
3. 여담
위에서는 몇 분 안에 해킹한다고 언급하였으나, 시간은 단순히 대회 시작 후 익스플로잇이 정상적으로 트리거되기까지의 시간을 의미하는 것이지 아무것도 없다가 그 자리에서 갑자기 몇 분 안에 취약점을 발견해서 해킹을 하는 것은 아니다(...) 당연히 대회를 하기 전에 이미 길면 몇 달 이전부터 준비를 해서 오는 것이다.[15][16]브라우저의 샌드박스 구현에는 운영 체제의 지원과 함께 다양한 방법들이 사용되는데, Chrome을 예로 들면 Windows에서의 샌드박스 구현에 대해 여기에서 대략적으로 설명을 하고 있다.
Microsoft Edge 브라우저가 Chromium 기반으로 변경되면서, 2020년 대회에서는 Chromium 기반과 기존 EdgeHTML 기반의 두 가지를 모두 타겟으로 하였다. 그리고 2021년에는 EdgeHTML 기반의 브라우저를 타겟에서 삭제하고 Chromium 기반 Edge에 대해서만 시상한다. 여기에 덤으로 같은 Chromium 기반인 만큼, 같은 취약점으로 Chrome과 Edge에서 동시에 성공하면 추가 상금을 주는 룰이 새로 추가되었다.
[1] 반대로 이 대회에서 해킹되지 않으면 오히려 기업 입장에선 상당한 자존심을 챙길 수 있다. 가장 대표적인 것이 3년간 해킹당하지 않은 구글 Chrome이며, 같은 대회에서 라이벌 Safari는 단 3초만에 털렸다. 다만 이것은 이제는 옛날이야기로, 결국 크롬도 해커들에게 뚫려버렸고 현재는 웹 브라우저 중 가장 개인정보 이슈가 많은 게 크롬이다.[2] 위 사진에서 흰 맥북 앞에 있는 가운데 사람이다. 그 옆에 모자 쓰고 서 있는 사람은 이종호 해커로, 둘 다 인하대 출신이다.참고기사[3] 사파리를 빼고 파이어폭스를 포함하는 것으로 치면 2014년 항목에 있듯이 VUPEN에서 IE11, Chrome, Firefox에 Adobe Reader/Flash 까지 해킹에 성공한 적이 있다. 물론 이는 개인이 아니다.[4] 마찬가지로 위 항목에 나와있듯이 2014년 Pwn2Own에서는 Internet Explorer 11을 공략하였으나 아쉽게 실패한 적이 있다.[5] 곰플레이어, 한글, V3 Lite, 기타 등등[6] 사실 이정훈 해커는 Capture The Flag(CTF) 형태의 대회에 있어서도 국내 최고의 실력을 가지고 있다. 2015년 Defcon CTF에서는 한국 연합 팀의 원톱 에이스로 활약하며 한국팀 최초로 Defcon CTF 1위를 차지했다.[7] 이는 즉 운영체제가 Windows 든 Linux 든 관계없이 크롬의 샌드박스를 우회할 수 있다는 뜻이다.[8] 물론 IE/Chrome의 경우 기본적으로 최신 Windows 위에서 돌아간다고 가정한다.[9] 이미지 파일(jpg, png, gif, ...) 이나 동영상 파일 등의 리소스 파일 파싱 과정에서도 취약점이 발생할 수 있다. Chrome의 경우 PDFium , FFmpeg 등의 플러그인 내에서 발생하는 취약점에 대해서도 포상한다.[10] 브라우저의 경우 공격할 대상 컴퓨터에 접속할 필요 없이 원격에서 URL 접속을 유도하는 것만으로 공격이 가능하므로 원격 코드 실행(Remote Code Execution) 취약점이라고도 할 수 있다.[11] 위에서도 언급했듯이 파일 I/O(CreateFile), 소켓 생성(WSASocket) 등의 API를 호출하면 대부분 실패한다. 물론 이 제한은 Sandbox의 레벨에 따라서 차이가 있다. 가령 예로 일부 버전 기준으로 IE는 CreateProcess가 되는 반면 Chrome은 CreateProcess도 실패한다.[12] 브라우저를 켠 상태로 여러 사이트를 켜 놓은 후 cmd에서 netstat 명령으로 각 연결의 pid를 확인해 보면 모든 연결이 Broker Process에서만 이루어지고 있는 것을 볼 수 있다.[13] 다른 취약점에 비해 정보가 늦게 등록되었다. secdrv.sys에서 발생하는 취약점이고, 위의 cng.sys에서 발생하는 정보 누출 취약점과 같이 연계하면 KASLR을 우회하여 권한 상승이 가능하다.[14] 아래의 3가지는 위의 소프트웨어들에 대한 익스플로잇과 결합되었을 때 추가 포인트를 의미한다. 구글 크롬에서 임의 코드 실행을 성공시켰을 때 권한이 SYSTEM 권한이냐, 그냥 Medium Integrity 그대로냐에 따라서 5포인트 또는 3포인트가 추가로 주어진다고 보면 된다. 물론 SYSTEM 권한은 추가적인 커널 익스플로잇이 필요하다.[15] 정확히는 시간이 오래 걸리는 경우는 힙 메모리에 스프레이 기법을 활용해서 주소나 오브젝트를 많이 뿌린 다음 적당히 힙에 있을 법한 주소로 점프하거나 읽기/쓰기를 시도하게 하는 방식을 사용해서 그렇다. 혹은 레이스 컨디션 취약점인 경우(대표적으로 인터넷 뱅킹에서 돈을 인출할 때 동시에 인출하면 돈이 복사가 되는 경우를 생각할 수 있다.)나 주소나 카나리 값을 무차별 대입하는 방식으로 공격하는 경우에도 시간이 오래걸릴 수 있다. 이런 공격은 시간이 걸리고 확률적으로 성공하는데, 이로 인해 현실에서 사용될 때에 제약이 좀더 있으며 PWN2OWN 대회의 경우에서도 제한시간과 시도 횟수 제한이 있는데, 미리 취약점을 찾았는데도 실패하는 경우는 이런 이유이다.[16] 또한, 유명한 대회이다보니 대회 직전에 업데이트를 배포해버리는 경우도 있다.