CSRF와 XSS

  • CORS와 더불어 웹 취약점으로 알려진 CSRF와 CSS.
  • 보안 지식중 하나로 csrfxss의 특징과 차이점을 정리해보자.

XSS란?

  • Cross Site Scripting(크로스 사이트 스크립팅)의 약자
  • 악성 스크립트를 주입하는 행위
    • 상대방의 브라우저에서 스크립트가 실행되도록 하여 세션을 가로채거나, 웹사이트를 변조, 콘텐츠삽입, 피싱 공격을 하는것
  • 보안 취약점 목록인 OWASP top 10에 있는 만큼 자주 발생하는 공격
  • 크로스 사이트 인 이유?
    • 상대방 - 웹사이트 - 공격자 형태로 사이트를 넘어서 공격한다는 의미
    • 상대방은 친숙한 웹사이트라 약해진 경계심을 이용해 공격을 당한다.

목적

  • 사용자의 정보와 쿠키를 탈취

공격 방법

  • reflected XSS(반사형)

    • 작성한게 그대로 다시 출력되는것을 이용
    • 입력한 검색어와 같은 입력한 값을 오류 메시지로 보여주는 곳에 삽입
      • script를 입력하면 화면에 출력하고 작동하는것을 이용
  • stored XSS(저장형)

    • 웹 서버 자체에 스크립트를 저장
      • 웹사이트의 HTTP응답을 감염시켜 반사형과 다르게 지속적으로 피해를 준다.
    • 해당 스크립트는 데이터 베이스에 저장된다.
  • dom XSS

    • DOM을 이용해 브라우저 자체에서 실행
    • 피해자의 브라우저에 초점을 맞춘것이 특징
      • 반사형이나 저장형에 비해 위험징후 발견하기 어렵다.
    • 어딘가로 이동을 시키거나, 세션을 가로채는게 가능

대책

  • 사용자는 의심하기
    • 수상한 URL은 클릭하지 않기
    • 최신 브라우저를 사용하기
  • 악성 스크립트 삽입을 방지하고 무효화 해야 한다.

    • 입력값 필터링

      • <,>,’“등의 특수문자를 무효화 하도록 한다.
    • 지정된 HTML태그만 사용하도록 whitelist필터링 적용
    • XSS관련 외부 라이브러리도 존재한다
      • OWASP ESAPI, Lucy-XSS-Filter 등

CSRF란?

  • Cross-Site Request Forgery
    • CSRF또는 XSRF로 불린다.
    • 크로스사이트 요청 위조라고 번역할 수 있다.
  • 이 공격은 혼동된 대리인(confused deputy) 사이버 공격의 한 유형

    • 사용자가 뜻하지 않게 계정 자금 이체, 비밀번호 변경 등 원치 않는 작업을 수행
    • 인증된 사용자가 웹 어플리케이션에 특정 요청을 보내도록 유도하는 공격 행위
  • 관리계정이 공격당할시 서버 전체가 위험해진다.
  • 이 공격은 무차별 공격이며 데이터 도난보다는 특정 요청을 무단으로 진행하기 위한공격이다.
    • 그래도 데이터 도난도 있지않나? 하지만 일단 권한을 탈취하면 부가적으로 개인정보등 노출은 일어나게 되있다.
  • 크로스 사이트 요청 위조인 이유는?

    • 공격자의 요청이 사용자 요청처럼 속이는 공격방식이어서 이런 이름이 붙여였다.

공격의 예

  • 사용자의 권한으로 어떤 기능을 수행하도록 유도하는 방식이다.
  • 도배 공격
    • 특정 사이트의 게시글을 작성하라는 요청을 위조합니다.
    • 이를 웹사이트에 삽입합니다.
    • 만약 로그인한 사용자가 위조된 요청이 삽입된것을 클릭하면, 게시글이 모르는사이에 작성됩니다.
    • 웹사이트 서버는 해당 요청을 받고 게시글을 올립니다.
      • 만약 관리자 계정으로 공지사항에 작성하는 요청을 넣었다면 공지사항에 이상한 글이 작성될것입니다. 사용자는 모르게
  • 가장 유명한 예시 자금 탈취공격
    • 공격자의 계좌로 천만원 송금하라는 요청을 위조
    • 이 요청을 하이퍼링크로 메일이나 웹사이트에 삽입
    • 사용자가 이 하이퍼링크를 클릭하면 자기도 모르게 사용자는 공격자에게 천만원 송금 요청함
    • 서버는 해당 요청을 정상이라 판단하고 공격자에게 천만원 송금 진행
  • 이 공격들은 전부 브라우저를 속여서 HTTP요청을 표적 사이트로 보내도록 합니다.

예방법

  • 사용하지 않은 웹 어필리케이션 로그아웃
  • 로그인 정보 안전하게 보관
  • 브라우저 비밀번호 저장하지 않기
  • 여러 웹사이트 동시 사용하지 않기
  • 교차 출처 리소스 공유(CORS)
    • 이럴때 CORS 개념이 사용된다.
    • SOP(동일 출처 정책)으로 동일한 출처로부터의 요청만 허용하도록 하는것
    • 이런 구현으로 웹페이지가 다른 출처와 상호작용하는 기능을 제한 할 수 있다.

XSS와 CSRF의 차이 및 정리

  • 둘은 사용자의 브라우저를 대상으로 한다는 공통점이 존재
  • 차이점
    • CSRF
      • 사용자의 인증된 세션을 악용하는 공격
      • 서버가 인증된 사용자를 신뢰하는 부분을 이용
      • 서버에서 스크립트가 실행
      • 요청을 위조하여 사용자 몰래 특정 행위를 수행하는 것을 목적
    • XSS
      • 인증된 세션이 없어도 공격이 진행
      • 특정 사이트를 신뢰하는 부분을 이용
      • 사용자가 스크립트를 실행
      • pc에서 스크립트를 실행해 사용자의 정보 탈취

참고