크로스 사이트 요청 위조 공격이란?

2024. 12. 5. 01:20카테고리 없음

반응형

크로스 사이트 요청 위조 (CSRF, Cross-Site Request Forgery)


1. CSRF의 정의와 개요

크로스 사이트 요청 위조(CSRF)는 인증된 사용자가 자신의 의도와 상관없이 공격자가 의도한 요청을 웹 애플리케이션에 수행하도록 만드는 웹 보안 취약점입니다. CSRF는 피해자의 신뢰를 기반으로 동작하며, 사용자의 세션 정보나 인증 토큰을 악용하여 권한 내에서 비정상적인 작업을 수행하게 합니다.


2. CSRF의 작동 원리

CSRF는 주로 다음 단계를 통해 실행됩니다:

  1. 피해자가 인증된 상태:
    • 사용자가 웹 애플리케이션에 로그인하고 세션 쿠키를 유지하는 상태입니다.
    • 예: 사용자가 은행 웹사이트에 로그인하고 세션이 활성화된 상태.
  2. 악성 요청 생성:
    • 공격자는 피해자가 의도하지 않은 요청을 수행하도록 유도하기 위해 악성 스크립트나 링크를 생성합니다.
    • 예: 공격자가 피해자의 은행 계좌에서 돈을 전송하는 URL을 포함한 HTML이나 자바스크립트를 작성.
  3. 피해자 유도:
    • 공격자는 피해자가 악성 링크를 클릭하거나 악성 페이지를 열게 유도합니다.
    • 예: 피싱 이메일, 소셜 미디어 게시물, 악성 광고 등을 통해 URL을 노출.
  4. 피해자 브라우저에서 요청 실행:
    • 피해자의 브라우저는 현재 활성화된 세션 쿠키를 사용하여 공격자가 의도한 요청을 서버에 전송합니다.
  5. 서버가 요청 처리:
    • 서버는 요청이 사용자의 세션에서 발생했다고 판단하고, 요청을 처리합니다.

3. CSRF의 특징

  • 사용자 신뢰 기반 공격: CSRF는 사용자가 악성 요청을 직접 수행하게끔 유도하지만, 사용자는 자신이 공격을 받고 있다는 사실을 알기 어렵습니다.
  • 브라우저 특성 악용: 브라우저가 세션 쿠키를 자동으로 포함하여 요청을 보내는 특성을 악용합니다.
  • 비가시성: 사용자는 공격 요청을 보거나 알 수 없습니다. 예를 들어, HTML 이미지 태그나 숨겨진 폼을 통해 요청이 발생합니다.
  • 광범위한 피해: CSRF는 비밀번호 변경, 데이터 삭제, 금전 이체 등 사용자의 권한으로 수행할 수 있는 작업 전반을 악용할 수 있습니다.

4. CSRF의 주요 사례


5. CSRF 방어 방법

CSRF 방어는 브라우저의 요청 자동화를 방지하고, 요청의 정당성을 검증하는 데 초점이 맞춰져 있습니다.

(1) CSRF 토큰 사용

  • 서버는 각 요청에 대해 고유한 CSRF 토큰을 생성하고, 이를 폼 데이터나 URL에 포함.
  • 서버는 토큰이 요청과 함께 전송되었는지, 유효한지 확인.
  • 토큰은 브라우저에서 접근할 수 없도록 설정하여 악성 코드 삽입을 방지.

(2) SameSite 쿠키 설정

  • SameSite 쿠키 속성을 설정하면 외부 사이트에서 발생한 요청에 대해 세션 쿠키가 전송되지 않음.
    • SameSite=Lax: 대부분의 요청에서 쿠키가 전송되지 않음 (GET 요청 일부 제외).
    • SameSite=Strict: 외부 사이트에서 발생한 요청에 대해 쿠키가 전혀 전송되지 않음.

(3) 사용자 인증 재확인

  • 민감한 작업(예: 금전 이체, 비밀번호 변경)을 수행하기 전에 비밀번호를 다시 요청.
  • 추가적인 인증 단계(2FA)를 통해 요청의 정당성을 확보.

(4) 요청 유효성 검증

  • 서버는 요청의 Referer 또는 Origin 헤더를 확인하여, 요청이 신뢰할 수 있는 출처에서 왔는지 검증.

(5) HTTP 메서드 제한

  • CSRF는 주로 GETPOST 요청을 악용하므로, 중요한 작업은 PUT, DELETE 등의 메서드를 사용하여 보호.
  • GET 요청은 서버 상태를 변경하지 않도록 설계.

(6) CORS (Cross-Origin Resource Sharing) 설정

  • 서버는 CORS 정책을 설정하여 특정 도메인에서만 요청을 수락하도록 제한.

(7) 정기적인 보안 점검

  • 코드 리뷰와 보안 점검을 통해 CSRF 취약점을 탐지하고 수정.

6. CSRF와 XSS의 차이점


7. CSRF 사례

(1) Gmail CSRF 취약점

  • 2007년, Gmail에서 CSRF 취약점을 통해 사용자의 이메일 계정에서 비밀번호를 변경할 수 있는 공격이 발견되었습니다.

(2) eBay CSRF 공격

  • 공격자가 eBay의 CSRF 취약점을 통해 사용자 계정 정보를 탈취하거나, 악성 상품 목록을 업로드.

 

CSRF는 사용자의 권한을 악용하여 서버에 비정상적인 요청을 전달하는 강력한 보안 취약점입니다. 이를 방지하기 위해 CSRF 토큰, SameSite 쿠키 설정, 인증 강화 등의 보안 대책을 적절히 적용해야 합니다. 특히 민감한 작업을 수행할 때는 추가적인 보안 조치를 통해 사용자의 데이터와 웹 애플리케이션의 무결성을 보호해야 합니다.

반응형