Skip to content

Latest commit

 

History

History
83 lines (60 loc) · 5.71 KB

임수진.md

File metadata and controls

83 lines (60 loc) · 5.71 KB

XSS (Cross-Site Scripting)

공격자가 웹 사이트에 악성 스크립트를 주입할 수 있는 보안 공격

  • 사용자 입력값에 대한 검증이 미흡하거나 출력 시 필터링 되지 않을 경우 발생
  • 쿠키 값 또는 세션 등 사용자의 정보를 탈취하거나 피싱 사이트로의 접근 유도, 취약한 사이트를 가장하여 사용자의 컴퓨터에서 다른 악의적인 작업을 수행 등 사용자에게 직접적인 피해를 줄 수 있음

공격 유형

공격자가 삽입한 악성 스크립트가 사용자 측에서 어떻게 동작하는지에 따라 크게 세 가지로 분류할 수 있다.

Stored XSS (저장형 크로스사이트 스크립팅)

공격자의 악성 스크립트가 데이터베이스에 저장되고, 이 값을 출력하는 페이지에서 피해가 발생하는 취약점

  • 공격자는 악성 스크립트가 포함된 게시물을 작성해 업로드하고, 이때 사용자가 악성 스크립트가 포함된 게시물을 요청하면
    공격자가 삽입한 악성스크립트가 사용자 측에서 동작
  • 악성 스크립트가 서버에 저장되어 불특정 다수를 대상으로 공격에 이용될 수 있어 Reflected XSS보다 공격 대상의 범위가 훨씬 큼

Reflected XSS (반사형 크로스사이트 스크립팅)

사용자가 요청한 악성 스크립트가 사용자 측에서 반사(Reflected)되어 동작하는 취약점

  • 공격자의 악성 스크립트가 데이터베이스와 같은 저장소에 별도로 저장되지 않고 사용자의 화면에 즉시 출력되면서 피해가 발생
  • 공격자는 악성 스크립트가 포함된 URL을 이메일, 메신저 등을 통해 사용자가 클릭할 수 있도록 유도하고, 사용자가 악성스크립트가 삽입된 URL을 클릭했을 때 사용자의 브라우저에서 악성스크립트가 실행

DOM Based XSS (DOM 기반 크로스사이트 스크립팅)

공격자의 악성스크립트가 DOM 영역에서 실행됨으로써 서버와의 상호작용 없이 브라우저 자체에서 악성 스크립트가 실행되는 취약점

  • DOM 영역에 변화가 생기면 브라우저는 서버로 패킷을 보내지 않고 DOM 영역에서 페이지를 변환시킨다. 따라서 DOM의 일부로 실행되기 때문에 브라우저 자체에서 악성스크립트가 실행
  • Stored XSS과 Reflected XSS는 서버에서 악성스크립트가 실행되고 공격이 이뤄지는 반면, DOM Based XSS는 서버와 상호작용 없이 브라우저에서 악성스크립트가 실행되고 공격이 이뤄짐

방지책

  • 입력값 검증을 통해 악성 스크립트가 삽입되는 것을 방지

  • 악성 스크립트가 입력되어도 동작하지 않도록 출력값을 무효화

  • 웹 서버에서 HTTP TRACE 지원 끄기

    document.cookie가 비활성화되었거나 클라이언트에서 지원되지 않는 경우에도 공격자는 Javascript를 통해 쿠키 데이터를 훔칠 수 있다. 사용자가 링크를 클릭하면 서버에서 사용자의 쿠키 정보를 수집하는 비동기 HTTP 추적 호출이 트리거되고, 이를 수집하는 다른 악성 서버로 보낸다. 공격자가 세션 하이재킹 공격을 수행할 수 있도록 쿠키 정보를 제공한다. 이는 모든 웹 서버에서 HTTP TRACE에 대한 지원을 제거함으로써 쉽게 완화된다.

  • XSS 필터 관련 외부 라이브러리 활용

    • Lucy-XSS-Filter
    • OWASP ESAPI



CSRF (Cross-Site Request Forgery)

인증된 사용자가 웹 애플리케이션에 특정 요청을 보내도록 유도하는 공격

  • 공격자의 요청이 사용자의 요청인 것처럼 속이는 공격 방식이기에 크로스 사이트 요청 위조라는 명칭이 붙음
  • 사용자가 인증한 세션에서 웹 애플리케이션이 정상적인 요청과 비정상적인 요청을 구분하지 못하는 점을 악용하는 공격 방식
  • 사용자의 요청이 실제 사용자가 전송한 것인지 확인하지 않는 경우에 자주 발생
  • 사용자의 정보 탈취보다는 특정 작업을 무단으로 진행하기 위한 목적으로 이루어지는 경우가 많음

공격 방식

  • 제품 구입, 계정 설정, 기록 삭제, 비밀번호 변경, 문자 전송 등 데이터의 값을 변경하는 요청을 대상으로 함
  1. 공격자는 자금 송금이나 로그인 정보 변경 등 원하는 요청을 위조한 후,
  2. 이메일이나 웹사이트에 요청이 삽입된 하이퍼링크를 심어 놓는다.
  3. 사용자가 해당 하이퍼링크를 클릭하면 요청이 자동으로 전송된다.

방지책

  • 세션 고유 CSRF 토큰이 서버에서 브라우저로 제공
  • 민감한 작업에 사용되는 쿠키는 SameSite 속성이 Strict 또는 Lax로 설정된 짧은 수명을 가져야
  • CSRF 토큰과 SameSite 쿠키를 모두 제공



XSS와 CSRF의 차이

사용자의 브라우저를 대상으로 한다는 공통점이 있다.

XSS CSRF
목적 사용자 PC에서 스크립트를 실행해 사용자의 정보를 탈취 요청을 위조함으로써 사용자 몰래 송금과 제품 구입 등 특정 행위를 수행
이용 취약점 사용자가 특정 사이트를 신뢰한다는 사실을 이용 웹 애플리케이션이 인증된 사용자의 요청을 신뢰한다는 사실을 이용
스크립트 실행 위치 사용자 서버
사용자의 인증된 세션
필요 여부
O X



Reference