2016년 11월 8일 화요일

XSS 공격 대응방어 이론

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 공격을 예방할 수 있다.


0 개의 댓글:

댓글 쓰기