Now you can Subscribe using RSS

Submit your Email

2016년 11월 17일 목요일

XSS 공격 대응방어 이론

Unknown
XSS 공격을 대응하기위해 웹 방화벽(WAF)을 쓰지만 대부분 웹방화벽은 시그니쳐 기반의  XSS공격
만을 탐지하고 있다. 하지만 특정 문자열을 탐지하는 기술은 쉽게 우회가 가능하여 방어가 효과적이지
못함

그래서 웹개발자들이 일일이 수동적으로 위험한 문자를 필터링 및 인코딩하는 것은 현실적으로 불가능
하므로 취약점은 남는다.

1. 입.출력 값 검증 및 무효화

<,> 태크와 같은 위험한 요소들을 필터링하는 방법을 말하는데  이런 ASCII문자를 동일한 의미의 HTML
문자로 변경한다.






그래서 HTML 문자로 처리되면 인터프리터에서 특수한 의미를 갖지 않게 함으로써
사용자는 <>가 <>로 보이지만 HTML 문서에는 &lt;&gt;로 인식

하지만 이방법은 쉽게 encoding 방법을 통해 우회가 가능한데
예를들어 <script>문자를 hex encoding해서 보내게 되면 필터링하지못하게 되고
나중에 페이지에 위 문자가 노출될때 hex 인코딩이 풀려 <script>문자가 나타나게 된다.


2. 보안 라이브러리

위의 필터링을 보완하고자 보안 라이브러리를 쓰는데  OWASP ESAPI 라이브러리로 예를 들겟다.

OWASP는 포괄적인 애플리케이션 보안을 위해 웹 응용 취약점을 대응할 수 있는 오픈소스 ESAPI 라이브러리를 개발하여 제공한다. XSS 취약점을 예방하기 위해 API는 validator와 encoder가 있다. validator는 입력 값을 필터링하는 기능을 하고 있으며, encoder는 출력 값을 인코딩 및 디코딩 기능을 가지고 있다. 이 라이브러리는 자바, PHP, .NET, ASP, 자바스크립트 및 파이썬 등 다양한 애플리케이션 개발 언어를 지원하고 있다.


3. 브라우저 확장 프로그램

NoScript는 파이어폭스 등 모질라 기반의 browser에서 실행되는 오픈 소스 확장 프로그램으로, 화이트 리스트 기반으로 신뢰된 사이트의 자바스크립트, 플래쉬, 실버라이트 및 액티브X 등 동적 스크립트만 브라우저에서 실행하도록 하여 XSS 공격을 예방할 수 있다.

XSS 정의

Unknown
XSS는 크로스 사이트 스크립팅이라고 하는데
말그대로 스크립트를 가로질러 넣어버린다고 이해하자
그렇다고 자바스크립트에서만 발생한다고 생각하는데 그렇지도 않다.
VB스크립트, Active X 즉, 클라이언트에서 실행되는 동적 데이터를 생성하는 모든 언어에서 발생 가능함

VB 스크립트--MS가 개발한 active script 언어이다. 
Active X-- MS가 개발한 재사용가능한 객체지향적인 소프트웨어 구성요소 개발에 사용되는 기술
active X로 IE의 플러그인을 만들때 사용한다 대표적인 예로 active x control 있다.

XSS 공격은 공격자가 web application을 써서 악의적인 코드를 보내 end user에게 피해를 입힌다.
end user는 XSS공격의 유무여부에 확인이 불가하므로 공격자가 의도한 script를 실행시키게 된다

malicious한 코드는 그 브라우저또는 사용하는 사이트에 안에서 cookie나 session token 또는 sensitive한 정보에 접근 할수 있다. 또한 스크립트는 심지어 HTML page에 content를 삽입가능하다.

즉,  XSS의 가장 큰 특징은 Server가 아닌 client를 공격하는 것!

그래서 피해자의 쿠키를 훔쳐내서 그 사용자 인것처럼 행세할수 있고 다른 악의적인 사이트로 사용자를
이동시키거나 웹페이지를 조작해 사용자가 개인 정보를 입력하게 할수 있다.

그럼 왜 client 를 공격하냐?

server-side resources들은 server에 저장되있다. 그래서 서버를 운영하는 업체,기업 등등은 자신들의
자원을 지키려고 보안을 철저히한다. 허나 client-side에서 보면 보안 degree가 아주 낮다. 그래서 해커
(공격자)들은 공격하기 쉬운 client-side를 공격하는것이다.














client는 표준 웹 브라우저 되는데 예를 들어 IE, chrome 또는 Embedded browser가 될수도 있다.
(Embedded browser 의 예: email client, media players , e-book reader)

client 공격 후?

server는 공격자가 attack하기 원하는 counterpart이다. client에게 얻어 먹을게 없다 딱히.....
그래서 client의 cookie , session을 이용해 server application에 쉽게 접근하기도 하고
서버가 client의 버젼,주인,환경이 너무나 다양해서 patch 하기 힘들다.

Coprights @ 2016, Blogger Templates Designed By Templateism | Distributed By Blogger Templates20