Cross-Site Scripting Prevention with Dynamic Data Tainting

advertisement
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들은 그들
의 사용자들을 보호하려고 하지 않는다.
• 본 논문에서는 파이어 폭스를 수정함으로
써 클라이언트 사이드에서 이를 해결 하는
것을 제안한다..
Download