XSS의 정의 - 동적 생성 웹 페이지에 악의적인 스크립트를 넣어, 사용자가 해당 페이지를 열람했을 경우 삽인한 스크립트를 실행하도록 함으로써 사용자의 데이터를 탈취하는 웹 해킹 기법.
* OWASP(Open Web Application Security Project)에서 발표한 Web Application의 10대 취약점 중의 하나.
XSS의 공격 대상 1. 공격시 사용되는 HTML 태그 : <script> 등. 2. 공격 대상 script 및 언어 : Javascript, VBScript, ActiveX, HTML, Flash 3. 공격 대상 코드 : CGI 스크립트, 검색 엔진, 게시판, 오류 페이지 등 4. 공격 대상 코드의 주요 공격 위치 : 입력 부분. 예를 들어 URL parameter, Form elements, 쿠키, DB 쿼리 등.
XSS의 두 가지 유형 XSS에는 client-to-client와 client-to-itself 방식의 두 가지 유형이 존재한다. 1. client-to-client 방식

- 한 클라이언트에서 다른 클라이언트로 악의적인 코드가 전달되는 방식. 게시판에 <script> 태그를 이용하여 글을 쓰는 방식으로 악의적인 코드를 전달할 수 있음. 이와 같은 스크립트를 필터링하지 않을 경우에 발생.
2. client-to-itself 방식
- 악의적인 코드를 공격 대상이 되는 클라이언트에게 보내서 되돌려 받는 유형. 이러한 형태의 공격은 주로 이메일이나 웹 페이지를 통해 링크를 제시하고 사용자가 그러한 링크를 클릭하도록 유도하는 방식으로 이루어짐.
공격 방법 다음과 같은 방법을 통해 공격자가 사용자와 웹 사이트 사이의 상호작용을 통제. 1. 페이지의 모양 바꾸기 : 이미지나 사운드를 삽입. 2. SSL 암호화 커넥션 노출 : SSL 페이지에 대해서도 XSS를 이용해 공격 가능. 3. 쿠기 변경시키기 : 쿠키 자체를 변형하여 쿠키에 악성 코드를 넣는다. 변형된 쿠키는 지속적인 공격을 가능하게 함. 4. 제한된 웹 사이트 접근 : 악의적인 URL을 생성함으로 사용자의 인트라넷에 있는 데이터를 유출시킴.
5. DOM 기반 보안 정책 위반 기능 : 악의적인 스크립트 태그를 서버로 보내고 대상 클라이언트가 이에 대해서 접근한다면 DOM 보안 정책은 무용지물이 됨. 계정 하이재킹(hijacking), 사용자 세팅 변경, 쿠키 훔치기, 쿠키 변형시키기, 잘못된 정보 보여주기 등이 가능 6. 잘 사용하지 않는 문자셋을 사용 : 문자열의 불일치로 인해서 특수 문자가 서로 다르게 해석되어 문제가 발생할 여지가 있음. 7. 폼의 행동 방식 변경 : 폼의 행동 방식과 결과가 어떻게 서브밋(submit)될 지에 대한 방식을 변형.
쿠키 훔치기

- 쿠키를 훔쳐 상대편 웹 브라우저의 권한을 행사. - document.cookie 오브젝트를 자바스크립트로 읽어서 공격자가 지정한 위치의 cgi에 전달한다. DOM security 세팅을 건너뛰어 사용자의 쿠키에 접근이 가능한 점을 이용해서 사용자의 쿠키를 공격자가 지정한 서버로 전송. - 쿠키 로거 : 쿠키를 리모트에서 빼내기 위한 로거(logger).
XSS를 통한 공격 방지 대책 1. 사용자 입력으로 사용 가능한 문자들을 정해놓고, 그 문자들을 제외한 나머지 모든 문자들을 필터링 2. 게시판에서 HTML 포맷을 사용할 수 없도록 설정. 3. 필요한 경우 모든 HTML을 사용하지 못하게 설정 후 필요한 HTML 태그만 쓸 수 있도록 설정. 4. '<'와 같은 특수 문자 입력시 entity 형태로 변경( '<' => '<'
XSS의 위험성 - XSS를 이용한 공격은 아주 치명적. 공격 대상의 시스템의 관리자 권한까지 행사 가능. - 공격 대상이 모호해서 방화벽 등의 보안 솔루션으로는 방지하는 것 자체가 불가능. - 따라서 보안에 주의 깊은 개발 및 유지보수 관리 체계를 통해 XSS의 위험을 극복해야.
|