본문바로가기

닫기

[IT KEYWORD] XSS란?

2022.05.30

이미지

XSS(Cross-Site Scripting) 이란 SQL injection과 함께 웹 상에서 가장 기초적인 취약점 공격 방법중 하나로, 권한이 없는 사용자가 악의적인 용도로 웹 사이트에 스크립트를 삽입하는 공격 기법을 말합니다. 다른 웹사이트와 정보를 교환하는 식으로 작동하므로 사이트 간 스크립팅이라고 부릅니다.

XSS는 웹 애플리케이션이 사용자로부터 입력 받은 값을 제대로 검사하지 않고 사용할 경우 나타나며, 공격에 성공하면 사이트에 접속한 사용자는 삽입된 코드를 실행하게 되어, 의도치 않은 행동을 수행시키거나 쿠키나 세션 토큰 등의 민감한 정보를 탈취합니다. 

1995년에 Javascript가 발표된 이후 2000년경 'MySpace'라는 플랫폼에서 XSS 취약점이 처음으로 보고되었으며, 20년여가 지난 지금도 XSS는 취약점이 발생하고 관련 공격이 발생하면서 꾸준히 웹 취약점 빈도수 상위 10위권에 들고있습니다. 공격기법이 오래된 만큼 보안기법들도 계속 연구되어 발표되고 있으나 그만큼 우회기법들도 생겨나고있고 자바스크립트가 계속 광범위하게 사용되면서 여전히 취약한 곳이 많은 것으로 보고되고 있습니다. 

XSS는 자바스크립트를 사용하여 공격하는 경우가 가장 많고, 사용자의 세션을 공격자의 서버로 전송해서 탈취하거나 악성코드가 있는 페이지로 리다이렉트 시키는 방식으로 공격이 주로 행해집니다. 그 외에도 자바스크립트를 활용해서 내부 네트워크 포트스캔과 같은 공격도 가능합니다.


이미지

※ XSS의 공격 순서
  1. 해커가 사전에 만든 웹페이지에 사용자가 브라우저로 엑세스를 시도
  2. XSS공격 link가 포함된 웹페이지가 브라우저에 표시
  3. 사용자가 link를 클릭
  4. 사용자가 느끼지 못하는 사이 취약한 사이트에 있는 해커의 스크립트에 엑세스 됨
  5. 사용자의 웹브라우저 상에서 해커의 스크립트가 실행

※ XSS의 종류
XSS는 크게 Reflected-XSS, Stored-XSS 두 종류로 나뉘며, 사용자의 브라우저가 악성 스크립트를 실행하게 하거나 그방식에 따라 나뉩니다. 

Reflected XSS
  - URL의 변수 부분처럼 스크립트 코드를 입력하는 동시에 결과가 바로 전해지는 공격기법
  - 반사된 XSS는 피싱 공격의 일부로 자주 사용되며 악용하기도, 차단하기도 가장 쉬움
  - 공격자가 HTTP 요청에 악성 콘텐츠를 주입하면 그 결과가 사용자에게 "반사되는" 형태 
  - 링크를 클릭하도록 피해자를 속이고, 유인해 세션을 하이재킹 할 수 있는 공격
  - 반사된 XSS는 피싱 공격에서 가장 많이 사용됨

Stored XSS
  - 가장 일반적인 XSS공격 유형
  - 정상적 평문x -> 스크립트 코드를 입력
  - 사용자가 게시물을 열람시, 공격자가 입력해놓은 악성 스크립트가 실행되어 사용자의 쿠키 정보가 유출되거나, 악성 스크립트가 기획한 공격에 당함
  - 저장된(지속적) XSS공격은 공격자가 웹 애플리케이션을 속여 데이터베이스에 악성코드를 저장하도록 하는 수법으로, 
    서버에 저장된 악성코드는 시스템 자체를 공격 할 수 있으며 웹 앱 사용자 상당수 또는 전체에 악성 코드를 전송할 수 있음
  - 일반적인 예로는 블로그 댓글에 악성코드를 게시하는 것
  - 지속적(저장형) XSS 가장 위험한 XSS공격 유형

※ XSS 대응 방안
사용자의 입력에 대해서는 무조건 의심을 하고 검증하는 작업이 필요합니다. 즉, 스크립트 등 해킹에 사용될 수 있는 코딩에 사용되는 입력 및 출력 값에 대해서 검증하고 무효화시켜야 하는데요. 입력 값에 대한 유효성 검사는 데이터가 입력되기 전에 가능하면, 입력 데이터에 대한 길이, 문자, 형식 및 사업적 규칙 유효성을 검사해야 합니다.

1) 입력 값 제한
사용자의 입력값을 제한하여 스크립트틀 삽입하지 못하도록 해야 합니다.
http://www.qubitsec.io?page=1 위와 같은 URL 에서 사용자의 입력값인 page 가 화면에 바로 노출되는데, 이때 page 의 값을 숫자만으로 허용한다면 그 외의 입력값에는 출력되지 않기 때문에 대응이 가능해집니다.

2) 입력 값 치환
XSS 공격은 기본적으로 script 태그를 사용하기 때문에 XSS 공격을 차단하기 위해 태그 문자(<, >) 등 위험한 문자 입력 시 문자 참조(HTML entity)로 필터링하고, 서버에서 브라우저로 전송 시 문자를 인코딩 합니다. 예를 들어, 문자 “<”는 동일한 의미의 HTML “<” 로 변경합니다.
HTML 엔터티는 대부분의 인터프리터(특히, 브라우저)에서 특수한 의미를 가지지 않으며, 단순한 문자로 처리됩니다. 이렇게 인코딩하면 사용자는 script 가 문자 그대로 보이지만 HTML 문서에서는 <script> 로 나타나서 브라우저에서 일반 문자로 인식하고 스크립트로 해석되어 실행되지는 않습니다.

3) 스크립트 영역에 출력 자제
이벤트 핸들러 영역에 스크립트가 삽입되는 경우 보호기법들을 우회할 수 있기 때문에 사용자의 입력을 출력하는 것을 최대한 자제해야 합니다.

4) 라이브러리 이용
 XSS를 막아주는 Anti XSS 라이브러리를 여러 회사에서 제공하는데 이 라이브러리를 사용하면 손쉽게 XSS를 방어할 수 있습니다. XSS 라이브러리를 사용하는 것은 서버 단에서 개발자가 추가하는 것이고, 사용자들이 각자 본인의 브라우저에서 악의적인 스크립트가 실행되지 않도록 방어하는 것이 중요합니다.
방문하는 모든 사이트가 안전하다는 보장이 없기 때문에 브라우저 확장 앱 중 Anti XSS 를 해주는 애플리케이션을 설치하고 방어하여야 합니다.
개인이나 소규모 단체가 만든 것 보다는, 전문적인 보안 업체나 거대 기업에서 만든 것이 공신력있고 편하기 때문에, OWASP Antisamy이나 NAVER Lucy XSS Filter, ESAPI 등을 이용하는 방법이 있습니다.


※ XSS 공격을 방지하는 7계명
1. 허용된 위치가 아닌 곳에 신뢰할 수 없는 데이터가 들어가는것을 허용하지 않는다.
2. 신뢰할 수 없는 데이터는 검증을 하여라.
3. HTML 속성에 신뢰할 수 없는 데이터가 들어갈 수 없도록 하여라.
4. 자바스크립트에 신뢰할 수 없는 값이 들어갈 수 없도록 하여라.
5. CSS의 모든 신뢰할 수 없는 값에 대해서 검증하여라.
6. URL 파라미터에 신뢰할 수 없는 값이 있는지 검증하여라.
7. HTML 코드를 전체적으로 한번 더 검증하여라.

> 출처
https://noirstar.tistory.com/266
https://lucete1230-cyberpolice.tistory.com/23
https://cosyp.tistory.com/243
목록으로
맨 위로

개인정보처리취급방침

개인정보 수집 및 이용에 대한 안내

(주)이지미디어(이하 회사)는 이용자의 개인정보보호를 매우 중요시하며, 『정보통신망 이용촉진 및 정보보호에 관한 법률』, 『개인정보보호법』 등 개인정보보호 관련 규정을 준수하고 있습니다.회사는 본 개인정보취급방침을 통하여 이용자에게서 제공 받은 개인정보가 어떠한 용도 및 방식으로 이용되고 있으며, 개인정보보호를 위해 어떤 조치를 취하고 있는지 알려드립니다.
회사의 개인정보취급방침은 다음과 같은 내용을 담고 있습니다.

1. 개인정보의 수집 및 이용 목적
2. 수집하는 개인정보의 항목 및 수집방법
3. 개인정보의 제3자 제공
4. 개인정보의 보유 및 이용기간
5. 개인정보 파기절차와 방법
6. 이용자의 권리, 의무 및 행사방법
7. 개인정보의 기술적/관리적 보호 대책
8. 개인정보 자동수집 장치의 설치/운영 및 거부에 관한 사항
9. 개인정보보호 책임자 및 담당자
10. 기타 부가방침

1. 개인정보의 수집 및 이용 목적

회사는 다음과 같은 목적을 위해 개인정보를 수집하고 이용합니다.
- 서비스 제공, 콘텐츠 제공, 웹 컨설팅 기초 자료 확보, 마케팅 활용, 상담 신청 처리 등을 위한 원활한 의사소통 경로 확보

2. 수집하는 개인정보의 항목 및 수집방법

회사는 다음과 같은 항목들을 수집하여 처리합니다.
- 필수항목 : 회사명, 담당자명, 핸드폰, 연락처, 이메일

3. 개인정보의 제3자 제공

회사는 이용자의 동의 없이 개인정보를 제3자에게 제공하지 않습니다. 다만, 관련 법령에 의한 경우는 예외로 합니다.

4. 개인정보의 보유 및 이용기간

회사는 원칙적으로 이용자의 개인정보 수집 및 이용목적이 달성되면 지체 없이 파기합니다.
관계법령의 규정에 의하여 보존할 필요가 있는 경우에는 일정기간 동안 보존합니다.
- 문의하기 : 1년(정보통신망법)

5. 개인정보 파기절차와 방법

회사가 보유하고 있는 개인정보에 대한 파기절차와 방법은 다음과 같습니다.

ㆍ파기절차 이용자가 견적 문의 등을 위해 입력하신 정보는 목적이 달성된 후 내부 방침 및 기타 관련 법령에 의한 정보보호 사유에 따라(보유 및 이용기간 참조) 일정 기간 저장된 후 파기합니다.

ㆍ파기방법 전자적 파일형태로 저장된 개인정보는 기록을 재생할 수 없는 기술적 방법을 사용하여 삭제합니다. 종이에 출력된 개인정보는 분쇄기로 분쇄하거나 소각을 통하여 파기합니다.

6. 이용자의 권리, 의무 및 행사방법

1) 정보주체는 회사에 대해 언제든지 다음 각 호의 개인정보 보호 관련 권리를 행사할 수 있습니다.
- 개인정보 열람 요구
- 오류 등이 있을 경우 정정 요구
- 삭제 요구
- 처리정지 요구

2) 제1항에 따른 권리 행사는 회사에 대해 서면, 전화, 전자우편, 모사전송(FAX) 등을 통하여 하실 수 있으며 회사는 이에 대해 지체 없이 조치하겠습니다.

3) 정보주체가 개인정보의 오류 등에 대한 정정 또는 삭제를 요구한 경우에는 회사는 정정 또는 삭제를 완료할 때까지 당해 개인정보를 이용하거나 제공하지 않습니다.

4) 제1항에 따른 권리 행사는 정보주체의 법정대리인이나 위임을 받은 자 등 대리인을 통하여 하실 수 있습니다. 이 경우 개인정보 보호법 시행규칙 별지 제11호 서식에 따른 위임장을 제출하셔야 합니다.

5) 정보주체는 개인정보보호법 등 관계법령을 위반하여 회사가 처리하고 있는 정보주체 본인이나 타인의 개인정보 및 사생활을 침해하여서는 아니 됩니다.

7. 개인정보의 기술적/관리적 보호 대책

회사는 개인정보보호법 제29조에 따라 이용자의 개인정보가 분실, 도난, 누출, 변조 또는 훼손되지 않도록 다음과 같은 기술적 대책을 마련하고 있습니다.

1) 회사는 해킹이나 컴퓨터 바이러스 등에 의해 이용자의 개인정보가 유출되거나 훼손되는 것을 막기 위해 최선을 다하고 있습니다. 개인정보의 훼손에 대비해서 자료를 수시로 백업하고 있고, 최신 백신프로그램을 이용하여 이용자들의 개인정보나 자료가 누출되거나 손상되지 않도록 방지하고 있으며, 암호화 통신 등을 통하여 네트워크상에서 개인정보를 안전하게 전송할 수 있도록 하고 있습니다.그리고 침입차단시스템을 이용하여 외부로부터의 무단 접근을 통제하고 있으며, 기타 시스템적으로 보안성을 확보하기 위한 가능한 모든 기술적 장치를 갖추려 노력하고 있습니다.

2) 담당자를 지정해 개인정보를 취급하는 직원을 최소화하며, 이를 위한 별도 비밀번호를 부여해 정기적으로 갱신하고 있습니다. 또한 담당자에 대한 수시 교육을 통하여 개인정보보호 준수를 강조하고 있습니다.

8. 개인정보 자동수집 장치의 설치/운영 및 거부에 관한 사항

회사는 이용자에게 맞춤 서비스 등을 제공하기 위해 이용자의 정보를 수시로 저장하고 불러오는 쿠키(Cookie)를 사용합니다.쿠키란 웹사이트를 운영하는 데 이용되는 서버가 이용자의 컴퓨터 브라우저에 보내는 소량의 정보며, 이용자의 컴퓨터 하드디스크에 저장됩니다. 쿠키는 이용자의 컴퓨터를 식별하지만 이용자 개개인을 식별하지 않습니다.
이용자는 쿠키 설치에 대한 선택권을 가지고 있습니다. 이용자가 사용하는 웹 브라우저의 옵션을 설정함으로써 모든 쿠키를 허용하거나, 쿠키를 저장할 때마다 확인을 거치거나, 모든 쿠키의 저장을 거부할 수 있습니다.

설정 방법의 예

1) Internet Explorer의 경우 : 웹 브라우저 상단의 도구 > 인터넷 옵션 > 개인정보 > 설정

2) Chrome의 경우 : 웹 브라우저 우측의 설정 > 화면 하단의 고급 설정 표시 > 개인정보의 콘텐츠 설정 버튼 > 쿠키

9. 개인정보보호 책임자 및 담당자

이용자는 언제든지 회사에게 개인정보 열람, 수정, 정보삭제, 처리정지를 요청할 수 있습니다. 정보삭제 또는 처리정지를 원하시는 경우 개인정보보호 담당자에게 서면, 전화, 이메일로 연락하시면 신속하게 조치하겠습니다.

개인정보 관리책임자

성명 이지성

직위 이사

E. lezis@easymedia.net

T. 02-869-3434

개인정보 관리담당자

성명 안진수

직위 과장

E. ajs0720@easymedia.net

T. 02-869-3434(134)

기타 개인정보 침해에 관한 상담이 필요한 경우에는 아래 기관에 문의하실 수 있습니다.
- 한국인터넷진흥원 개인정보침해신고센터 (privacy.kisa.or.kr / 국번 없이 118)
- 대검찰청 사이버수사과 (http://www.spo.go.kr / 국번 없이 1301)
- 경찰청 사이버안전국 (http://www.ctrc.go.kr / 국번 없이 182)

10. 기타 부가방침

회사는 본 개인정보취급방침의 내용 추가, 삭제 및 수정을 하는 경우 개정 최소 7일 전 홈페이지에 변경 사유 및 내용을 고지하겠습니다.

- 시행일자 : 2022년 6월 10일
닫기닫기