티스토리 뷰
CSRF(Cross-Site Request Forgery)
웹 애플리케이션에서 발생하는 보안 취약점 중 하나.
이 취약점은 공격자가 특정 웹 페이지에 피해자를 유도하여,
피해자의 권한을 이용하여 악의적인 요청을 보내게 만들어 발생한다.
CSRF 공격의 기본적인 원리는 다음과 같다
> 피해자 로그인
피해자는 웹 애플리케이션에 로그인한 상태여야 한다.
> 공격자의 페이지 방문
피해자는 공격자가 제작한 웹 페이지를 방문한다. 이 페이지는 악성 코드를 포함하고 있다.
> 악성 요청 실행
공격자의 페이지를 방문한 피해자는 악성 코드로부터 자동으로 특정 액션을 수행하게 된다.
이 때, 피해자의 권한으로 웹 애플리케이션에 악성 요청이 전송된다.
> 피해자의 권한으로 요청 실행
웹 애플리케이션은 해당 요청을 피해자의 권한으로 인식하고 수행하게 되어,
공격자는 피해자의 권한을 이용하여 악의적인 동작을 수행할 수 있다.
CSRF 공격을 방지하기 위한 주요 방법
# CSRF 토큰 사용
각 요청에 랜덤하게 생성된 CSRF 토큰을 포함시켜, 해당 토큰이 없는 요청은 거부하도록 만든다.
이를 통해 악성 요청이 토큰을 알지 못하면 실행되지 않도록 할 수 있다.
# SameSite 쿠키 속성 설정
SameSite 쿠키 속성을 설정하여, 요청이 동일 출처에서만 허용되도록 제한한다.
# Referrer 검증
웹 애플리케이션은 Referrer 헤더를 확인하여 요청이 예상한 출처에서 왔는지 검증할 수 있다.
하지만 이 방법은 완벽하지 않을 수 있으며, 일부 상황에서는 제한될 수 있다.
# 사용자 인증 시간 제한
로그인 세션이 일정 시간 동안만 유효하도록 설정하여
공격자가 장기간에 걸쳐 악성 요청을 보낼 가능성을 줄일 수 있다.
Drive-by Download
사용자가 의도하지 않은 콘텐츠나 악성 소프트웨어를 다운로드하게 하는 공격의 한 형태다.
이 공격은 사용자가 웹사이트를 방문할 때, 공격자가 웹 페이지에 악성 코드를 숨겨두어
브라우저에서 자동으로 악성 파일을 다운로드하도록 유도한다.
사용자는 특별한 조작 없이도 이러한 공격에 노출될 수 있다.
<주요 방법>
1) 콘텐츠 자동 실행
웹 페이지에 방문한 사용자의 브라우저에서는 자동으로 특정 파일이나 스크립트를 다운로드하고 실행한다.
이를 통해 공격자는 악성 코드를 실행하거나 악성 소프트웨어를 설치할 수 있다.
2) 약점을 이용한 공격
사용자의 브라우저나 플러그인, 운영 체제 등에 있는 보안 취약점을 이용하여 악성 코드를 주입하고 실행한다.
이 때 사용자는 취약점이 존재하는 소프트웨어 버전을 사용하고 있어야 한다.
3) 리다이렉션
사용자를 악성 웹사이트로 리다이렉트하고, 해당 웹사이트에서 악성 코드를 실행하도록 유도한다.
대비 방법
- 브라우저 및 소프트웨어 업데이트: 최신 버전의 브라우저와 관련 플러그인, 운영 체제를 사용하도록 업데이트.
- 보안 솔루션 사용: 안티바이러스 및 악성 코드 탐지 솔루션을 사용하여 악성 코드를 감지하고 차단하는 것.
- 스크립트 차단: 브라우저 확장 프로그램을 통해 JavaScript, Flash, Java 등을 차단하거나 특정 웹사이트에서만 실행되도록 제한.
- 팝업 차단: 브라우저의 팝업 차단 기능을 활성화하여 알려지지 않은 팝업 창에서의 다운로드를 방지.
- 악성 웹사이트 회피
- 보안 교육
'[개발 지식] > [개발] - 백엔드 면접' 카테고리의 다른 글
망 사용료 이슈 (1) | 2024.04.08 |
---|---|
부하 분산 (0) | 2024.04.07 |
서비스 기본 구조와 필수 고려사항 (0) | 2024.04.06 |
XSS와 CSRF 공격 예방 (0) | 2024.04.05 |
온프레미스 환경에서 클라우드로 전환 (0) | 2024.04.04 |