Topic

CSRF (Cross-Site Request Forgery)

JackerLab 2025. 3. 12. 07:52
728x90
반응형

개요

CSRF(Cross-Site Request Forgery, 사이트 간 요청 위조)는 사용자가 신뢰하는 웹사이트에서 공격자가 악의적인 요청을 실행하도록 유도하는 보안 취약점입니다. 사용자가 로그인한 상태에서 공격자의 요청이 자동으로 실행될 수 있기 때문에 매우 위험한 보안 위협으로 간주됩니다. 본 글에서는 CSRF의 개념, 공격 방식, 주요 사례, 방어 방법 및 최신 대응 기술을 살펴봅니다.


1. CSRF란?

CSRF는 공격자가 사용자 세션을 악용하여 원치 않는 요청을 실행하게 만드는 웹 보안 취약점입니다. 일반적으로 사용자가 신뢰하는 웹사이트에서 인증된 상태에서 발생하며, 공격자는 이를 악용하여 계정 정보 변경, 결제 요청, 게시물 작성 등의 조작을 할 수 있습니다.

1.1 CSRF의 주요 특징

  • 사용자 인증 세션 악용: 사용자가 로그인된 상태에서 발생
  • 자동화된 요청 실행: 사용자의 의도와 상관없이 공격자가 설정한 요청이 실행됨
  • 사이트 신뢰성 악용: 신뢰하는 웹사이트에서 발생하기 때문에 피해자가 쉽게 속을 수 있음

1.2 CSRF vs. XSS 비교

구분 CSRF (Cross-Site Request Forgery) XSS (Cross-Site Scripting)
공격 방식 사용자의 인증된 세션을 악용하여 요청을 위조 악성 스크립트를 삽입하여 브라우저에서 실행
주요 피해 계정 탈취, 설정 변경, 데이터 조작 세션 하이재킹, 키로깅, 데이터 유출
방어 방법 CSRF 토큰, SameSite 쿠키 설정, 사용자 확인 CSP(Content Security Policy), XSS 필터링

2. CSRF 공격 방식

2.1 CSRF 공격 흐름

  1. 사용자가 신뢰하는 웹사이트(A)에 로그인하여 세션을 유지한 상태
  2. 공격자가 악성 웹사이트(B) 또는 피싱 이메일을 통해 사용자를 유도
  3. 사용자가 웹사이트(B)를 방문하면 CSRF 공격 코드가 실행됨
  4. 사용자의 브라우저는 웹사이트(A)에 인증된 상태이므로 공격자의 요청이 정상 요청처럼 처리됨
  5. 피해자는 원하지 않는 계정 변경, 결제, 데이터 조작 등의 피해를 입게 됨

2.2 CSRF 공격 예제 (HTML 폼 기반)

위 코드가 실행되면 사용자가 웹사이트(A)에 로그인된 상태라면 자동으로 공격자의 계좌로 송금 요청이 실행될 수 있습니다.


3. 주요 CSRF 피해 사례

3.1 소셜 미디어 계정 탈취

  • 공격자가 CSRF를 이용해 피해자의 소셜 미디어 계정 비밀번호 변경
  • 피해자의 계정이 공격자의 컨트롤 하에 들어감

3.2 온라인 결제 조작

  • 사용자가 쇼핑몰에 로그인한 상태에서 CSRF 공격을 받으면 공격자의 계좌로 결제 요청이 발생할 수 있음

3.3 관리자 권한 탈취

  • 공격자가 관리자 페이지에 CSRF 요청을 보내 시스템 설정 변경 및 계정 탈취 가능

4. CSRF 방어 방법

방어 기법 설명
CSRF 토큰 (CSRF Token) 요청마다 난수 기반의 고유 토큰을 생성하여 검증
SameSite 쿠키 설정 크로스 사이트 요청에서 쿠키 전송을 제한하는 보안 설정 적용
Referer 및 Origin 검증 요청의 출처를 확인하여 신뢰할 수 없는 요청 차단
사용자 인증 확인 (CAPTCHA, 2FA) 중요한 요청 수행 시 사용자 확인 절차 추가
CORS (Cross-Origin Resource Sharing) 정책 설정 교차 출처 요청 제한하여 불필요한 외부 요청 방어

4.1 CSRF 토큰 적용 예제 (Django)

<form action="/transfer" method="POST">
  {% csrf_token %}  
  <input type="text" name="amount">
  <input type="submit" value="Send">
</form>

Django에서는 기본적으로 CSRF 토큰을 제공하여 방어 기능을 활성화할 수 있습니다.

4.2 SameSite 쿠키 설정 예제

response.set_cookie('sessionid', session_id, samesite='Strict', secure=True)

SameSite=Strict을 설정하면 동일 사이트 내 요청에서만 쿠키가 전송되어 CSRF 공격을 차단할 수 있습니다.


5. 최신 CSRF 대응 기술

  • AI 기반 요청 패턴 분석: 이상 행동 감지를 통한 CSRF 공격 방어
  • 브라우저 기본 보안 강화: 최신 브라우저에서는 CSRF 방어 기능을 기본적으로 제공
  • WebAuthn 및 생체 인증 활용: 중요한 요청에 대해 강력한 사용자 인증 도입

6. 결론

CSRF는 사용자가 신뢰하는 웹사이트의 취약점을 이용하여 악의적인 요청을 실행하는 보안 위협입니다. 이를 방어하기 위해 CSRF 토큰, SameSite 쿠키, 사용자 인증 강화 등의 다양한 보안 조치를 적용해야 합니다. 최신 보안 기술과 정책을 활용하여 웹 애플리케이션을 보호하고, 지속적인 모니터링과 보안 테스트를 수행하는 것이 중요합니다.

728x90
반응형

'Topic' 카테고리의 다른 글

Routing Protocols  (0) 2025.03.12
딥서치 (Deep Search)  (0) 2025.03.12
Credential Stuffing (크리덴셜 스터핑)  (0) 2025.03.12
데이터 표준화 및 거버넌스  (2) 2025.03.12
머신러닝 최적화 알고리즘  (0) 2025.03.12