1 minute read

CSRF 공격

Cross-site request forgery, CSRF, XSRF, 사이트 간 요청 위조

일단 사용자가 웹사이트에 로그인한 상태에서 사이트 간 요청 위조 공격 코드가 삽입된 페이지를 열면,

공격 대상이 되는 웹사이트는 위조된 공격 명령이 믿을 수 있는 사용자로부터 발송된 것으로 판단하게 되어 공격에 노출된다.

이게 무슨 소리 ?

실제 옥션에서 벌어진 사건으로 이해해본다.

<img src="http://auction.com/changeUserAcoount?id=admin&password=admin" width="0" height="0">
  1. 옥션 관리자 중 한명이 관리 권한을 가지고 회사내에서 작업을 하던 중 메일을 조회한다. (로그인이 이미 되어있다고 가정하면 관리자로서의 유효한 쿠키를 갖고있음)

  2. 해커는 위와 같이 태그가 들어간 코드가 담긴 이메일을 보낸다. 관리자는 이미지 크기가 0이므로 전혀 알지 못한다.

  3. 피해자가 이메일을 열어볼 때, 이미지 파일을 받아오기 위해 URL이 열린다.

  4. 해커가 원하는 대로 관리자의 계정이 id와 pw 모두 admin인 계정으로 변경된다.

출처: https://sj602.github.io/2018/07/14/what-is-CSRF/

방어 방법

  • XSS와 마찬가지로, 입력 필터링은 중요한 문제입니다.

  • 모든 민감한 동작에 필수로 요구되는 확인 절차가 항상 수행되도록 합니다.

  • 민감한 동작에 사용되는 쿠키는 짧은 수명만 갖도록 합니다.

XSS 공격

Cross-site 스크립팅 공격, 사이트 간 스크립팅 공격

웹사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점이다.

이 취약점으로 해커가 사용자의 정보(쿠키, 세션 등)를 탈취하거나, 자동으로 비정상적인 기능을 수행하게 할 수 있다.

방어방법

  • 쿠키는 XSS 공격과 CSRF 공격 등에 취약하기 때문에 쿠키 속성 HttpOnly 옵션을 활성화한다.

  • 세션 옵션 Secure을 활성화

  • 쿠키를 사용하는 요청은 서버 단에서 검증하는 로직을 꼭 마련해두는 것이 좋다.

출처: https://github.com/WeareSoft/tech-interview/blob/master/contents/security.md#csrf-%EA%B3%B5%EA%B2%A9

Categories:

Updated: