이것이 점프 투 공작소

CSRF 공격에 대해 알아보자 본문

해킹,보안

CSRF 공격에 대해 알아보자

겅겅겅 2023. 8. 24. 21:03

CSRF란?

CSRF(Cross-Site Request Forgery)는 웹 애플리케이션 보안 공격 중 하나로, 인증된 사용자의 권한을 사용하여 공격자가 서버에 악의적인 요청을 실행시키는 공격입니다.

출처 : https://www.imperva.com/learn/application-security/csrf-cross-site-request-forgery/

CSRF공격 순서

CSRF공격이 성공하려면 몇가지 조건이 필요합니다.

  1. 사용자가 보안이 취약한 서버에 로그인합니다.
  2. 로그인 후 서버의 session정보가 브라우저 쿠키에 저장됩니다.
  3. 악성 스크립트 페이지를 누르도록 유도합니다.
  4. 사용자가 공격자가 유도한 악성 스크립트 페이지에 접근할 때 쿠키의 인증된 session을 통해 브라우저에 의해 서버로 요청됩니다.
  5. 서버는 쿠키에 담긴 session 통해 인증을 확인하기에 인증된 사용자로 온 것으로 판단하고 요청에 응답합니다.

공격예시

게시판을 이용한 대표적인 csrf공격 예시는 다음과 같습니다.

 

1. 공격자가 특정 사이트에 게시판에 해당 사이트에 대한 GET/POST 요청을 보내는 스크립트가 들어간 게시글을 작성합니다.

2. 해당 게시글에 접속한 해당 사이트에 로그인한 사용자A가 접속하게되면

3. A의 인증정보(session)을 통해 공격자가 작성한 악성 스크립트의 요청경로로 즉시 요청이 진행됩니다. 

방어법

1. 토큰 발행

  • 서버에서 암호화된 토큰을 발급하여, 매 요청마다 토큰을 보내게 하여 사용자에 대한 유효성을 검사합니다.

2. Referer-Header 확인

  • Referer-Header란 요청이 발생한 페이지의 URL이 담긴 헤더입니다.
  • 서버측에서 Referer-Header값을 확인하여 다른 도메인에서 보낸 요청일 경우 차단하도록 합니다.
  • 다른 도메인에서만 이루어지는 csrf공격에 대해서만 유효하기에, 추가적인 보호 메커니즘을 함께 사용해야합니다.

3. 추가 인증 수단 사용 

  • 캡챠같은 추가 인증수단을 사용하여, 테스트를 통과하지 못하면, 요청을 거부하도록 합니다.

4. 클라이언트 측 쿠키사용 제한

  • csrf공격은 브라우저의 쿠키에 의해 일어나기에, 클라이언트에서 다른 방식으로 해당 기능을 구현합니다.
  • 대표적으로 JWT를 사용하는 방법이 있습니다.