Transcript Cross-Site Scripting Prevention with Dynamic Data Tainting
Cross-Site Scripting Prevention with Dynamic Data Tainting and Static Analysis
논문 요약
• 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 not.
sensitive information
is about to be transferred to a third party, the user can decide if this should be permitted or
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들은 그들 의 사용자들을 보호하려고 하지 않는다.
본 논문에서는 파이어 폭스를 수정함으로 써 클라이언트 사이드에서 이를 해결 하는 것을 제안한다..