[취약점] 크로스사이트 스크립팅(XSS)

2024. 3. 23. 10:00정보 보안/취약점

 

정의

 

  악의적인 사용자가 공격하려는 웹 사이트에 스크립트를 삽입하여 클라이언트 웹 브라우저에서 스크립트가 작동하도록 만드는 취약점이며 크게 Stored XSS, Reflected XSS 공격 방식으로 나뉜다.

 

 

공격 시나리오

 

  사용자 입력 값을 받는 게시판(Stored XSS), URL(Reflected XSS) 등에 악의적인 스크립트를 삽입하여 게시글이나 이메일을 읽는 사용자의 쿠키 혹은 세션을 탈취하여 도용하거나 CSRF, 악성코드 유포 사이트로 리디렉트 하게 만들 수 있다.

 

 

대응 방안

 

  • 웹 사이트 게시판, URL 등에서 사용자 입력 값에 대해 검증 로직 추가
  • 웹 페이지에서 HTML을 사용하는 경우 HTML 코드 중 필요한 코드에 대해서만 입력되게 설정(HTML 대체코드)

 

 

판단 기준

 

주요정보통신기반시설

  • 양호 : 사용자 입력 값에 대한 검증 및 필터링이 이루어지는 경우
  • 취약 : 사용자 입력 값에 대한 검증 및 필터링이 이루어지지 않으며, HTML 코드가 입력·실행되는 경우

 

 

점검 예시

 

주요정보통신기반시설

  • 사용자 입력 값을 전달받는 애플리케이션(회원정보 변경, 게시판, 댓글, 자료실 등)에 스크립트 입력 후 실행되는지 확인(Stored XSS)
  • 사용자 입력 값을 전달받는 애플리케이션(검색, URL)에 스크립트 입력 후 실행되는지 확인(Reflected XSS)

 

전자금융기반시설

  • XSS 문자열을 DB에 저장된 값이 출력되는 웹 페이지에 업로드 시 해당 XSS 문자열 실행 여부 점검

 

 

구체적 보안 설정 방법

 

1. 웹 사이트에 사용자 입력 값이 저장되는 페이지는 공격자가 웹 브라우저를 통해 실행되는 스크립트 언어(HTML, Javascript, VBScript 등)를 사용하여 공격하므로 해당되는 태그 사용을 사전에 제한하고, 사용자 입력 값에 대한 필터링 기능을 구현한다.

 

2. 게시물의 내용뿐만 아니라, 제목, 댓글, 검색어 입력 창, 그 외 사용자 측에서 넘어오는 값을 신뢰하는 모든 form과 파라미터 값에 대해서 필터링 기능을 구현한다.

 

3. 입력 값에 대한 필터링 로직 구현 시 공백 문자를 제거하는 trim, replace 등의 함수를 사용하여 반드시 서버 측에서 구현한다.(클라이언트 측에서 구현 시 공격자가 해당 코드를 우회하여 공격을 진행할 수 있다.)

 

4. URLDecoder 클래스에 존재하는 decode 메소드를 통해 URL 인코딩이 적용된 사용자 입력 값을 디코딩함으로써 우회 공격을 차단한다.

 

5. 웹 방화벽에 모든 사용자 입력 폼(회원정보 변경 게시판, 댓글, 자료실, 검색, URL 등)을 대상으로 특수문자, 특수 구문을 필터링하도록 룰셋을 적용시킨다.

 

* 필터링 대상 문자열 및 기호

문자열 : script, object, applet, embed, form, iframe 등
특수문자 : <, >, ", ', &, %, %00(널 바이트) 등

'정보 보안 > 취약점' 카테고리의 다른 글

[취약점] 불충분한 인증  (0) 2024.03.23
[취약점] 약한 문자열 강도  (0) 2024.03.23
[취약점] 악성 콘텐츠  (0) 2024.03.23
[취약점] 정보 누출  (0) 2024.03.23
[취약점] 디렉터리 인덱싱  (0) 2024.03.22