Cross-Site Scripting Prevention with Dynamic Data Tainting and Static Analysis 신대용 dosuser@naver.com 논문 요약 • taint 방식 – 보호되어야할 중요한 정보들을 체크해 놓고 그 정보들이 다른 제3의 위치로 보내지지 않 도록 한다. – 또한 이것을 속이는 행위들에 대하여 안전해 야한다. – firefox를 수정하여 구현한다. 논문 요약 • Dynamic, Static 두 가지 방식으로 tainting 을 한다. • 중요한 자료가 다른 위치로 전송되는 것을 막기 위해 전송에 관련된 객체들을 관리 • 파이어 폭스를 개량하여 구현 • 자동, 수동적인 방법으로 테스트한다. agenda • • • • • • • • Introduce Related work Dynamic Data Tainting Static Data Tainting Data Transmission Implementaion Evaluation Conclusions Abstract • In the browser, this scripting code is executed and used to transfer sensitive data to a third party • 목적 :if sensitive information is about to be transferred to a third party, the user can decide if this should be permitted or not. 1.Introduction • Nowadays, many web sites make extensive use of client side scripts (mostly written in JavaScript) to enhance user experience. • Unfortunately, this trend has also increased the popularity and frequency of cross-site scripting (XSS) attacks. 1.Introduction • same-origin policy – mju.ac.kr에서 수행된 스크립트는 ants.mju.ac.kr 에 영향을 미칠수 없다. • www.mju.ac.kr에서 만든 쿠키를 www.naver.com에서 읽을수 없다. • XSS공격은 이러한 same-domain 정책을 우회함으로써 행해진다. 1.Introduce • Stored XSS – 공격 코드가 DB나 기타 영구적인 장치에 삽 입된다. • Reflected XSS – 정상적인 루틴에 특정 코드를 추가 함으로써 공격 – URL공격 – 이메일에 공격 첨부 1.Introduction • The optimal approach to prevent XSS attacks would be to eliminate the vulnerabilities in the affected web applications. • 그렇지만 시간, 금전, 너무나 다양한 공격 패턴의 존재로 인하여 막기가 어렵다. 1.Introduction • The goal is to ensure that a JavaScript program can send sensitive information only to the site from which it was loaded. 2.Related Work • Server-side protection – perl’s taint mode – taint-tracking scheme – anomaly-based intrusion detection • Client-side protection – proxy방식 – Mozilla web browser - monitor • 본 논문은 Client-side 방식이지만 더욱 깊고 정확한 분석을 한다. 3.Dynamic Data Tainting • 중요한 데이터가 제3의 곳으로 전송되는 것 을 막기 위해서 웹 브라우저에서 데이터의 사용을 기록한다. • 처음에 제일 중요한 데이터들을 marking하고 이 데이터를 사용하는 데이터들도 marking 해 나간다. • 세탁 작업들에 대한 고려를 하여 우회하는 것 을 막는다. 3.Dynamic Data Tainting • cookie 값의 세탁작업 3.1 Sensitive data sources • 기본적으로 보호되어야 할 값들 3.2 Taint Propagation • assignments; • arithmetic and logic operations (+, -, &, etc.); • control structures and loops (if, while, switch, for in); • function calls and eval. 3.2 Taint Propagation • taint작업 3.2.1 Assignments • In some cases, the variable that is assigned a tainted value is not the only object that must be tainted. • For example,if an element of an array is tainted, then the whole array object needs to be tainted as well. 3.2.2 Arithmetic and Logic Operations • The result is tainted if one of the used operands is tainted. 3.2.3 Control Structures and Loops • If the condition of a control structure tests a tainted value, a tainted scope is generated that covers the whole control structure. • 바로 taint하지 않고 값이 수정되면 한다. 3.2.4 Function Calls and eval • When called with tainted actual parameters, the corresponding formal parameters of the function are tainted. 3.2.5 Document Object Model (DOM) Tree • Java engine에서 벗어나는 것을 방지 하기 위해서 모든 dom node중에서 안에 taint 된 요소가 있을 경우 해당 노드도 taint되 어야 합니다. 4. Static Data Tainting • Dynamic한 방법에는 한계가 있다. • 따라서 모든 값을 검사하는 Static data tainting을 한다. 4.1 Linear Static Taint Analyis • 모든 변수를 일일이 검사하는 것은 브라우 저에있어서 큰 성능 하락을 가져 온다. • linear static analysis는 tainted된 스코프에 대해서는 통과한다. • 함수 콜이나 eval에 대해서는 conservative 모드가 동작하여 tainted스코프로 간주한 다. 4.2 Stack Analysis • 엔진의 스택을 모델하는 추상의 스택을 하 나 더 생성 • 가상의 스택은 일반 변수에 대해서는 생성 여부만 저장 • 객체와 배열에 대해서는 assign문의 대상 객체를 저장하기 위해서 엔진의 스택보다 더욱 많은 자료를 저장한다. 5. Data Transmission • Changing the location of the current web page by setting document.location • Changing the source of an image in the web page. • Automatically submitting a form in the web page. • Using special objects, such as the XMLHttpRequest object. 6. 구현 • 파이어 폭스를 수정하여 구현한다. • 자바스크립튼 엔지과 DOM을 수정 • 중요한 자료가 전송되어 질 때 사용자는 그것을 허용할지 거부할지 선택한다. 7. 평가 • 단순한 XSS 공격을 시도한다. • 실제의 exploit에 대해 유효한지 검토 하기 위해서 실제 프로그램을 설치 하고 해당 프로그램에 대한 공격 툴을 이용한다. – phpBB, myBB, WebCal을 설치, • 수동 방법으로 수정된 브라우저로 일상적 인 웹 서핑을 한다. 7.평가 • 비록 경고가 뜨는 것이 XSS 공격이 아니더 라도 사이트 통계나 사용자의 기록을 빼가 기 위한 작업들이기 때문에 경계해야한다. • 수동적인 방법은 우리의 제품이 효율적이 고 효과적이라는것을 보여주었지만 좀더 더욱 가치있는 자료를 위하여 파이어 폭스 에 Crawler를 붙였다. 7.평가 7.평가 • 전체 1,033,000개의 페이지 검색 • 한 도메인당 100개의 페이지 검색 • 88,589(8.58%)개의 페이지에서 XSS 발견 • 대부분 소수의 사이트들에서 나온 것 으로 발견 • 상위 30도메인이 유발하는 오탐만 제거해도 1.35%제거 • 덜 중요한 최종 수정일 들을 제외하면 더욱 오탐 을 줄 일수 있다. 7.평가 • 5289개의 쿠키값 전송의 경우도 대부분 잘 알려지지 않은 광고나 tracking 사이트 였고 cnn.com과cnn.net등의 통신인 경우 였다. 8.결론 • XSS는 오늘날 가장 빈번한 취약점임에도 불구하고 많은 서비스 provider들은 그들 의 사용자들을 보호하려고 하지 않는다. • 본 논문에서는 파이어 폭스를 수정함으로 써 클라이언트 사이드에서 이를 해결 하는 것을 제안한다..