설명
- 사이트 간 요청 위조(Cross-site request forgery)
- 주로 악성 스크립트가 있는 서버(A)에서 공격 대상 서버(B)에 인증된 사용자의 정보로 요청을 위조하여 공격
- 예시) 비밀번호 변경, 이메일 주소 변경, 자금 이체, 계정 삭제 등
- 사용자의 브라우저에 대한 사이트의 신뢰를 악용한다
- 클라이언트 브라우저가 자동으로 포함하는 인증 정보를 사용하므로, 서버는 정상 요청인지 악의적 요청인지 확인 불가능
- 세션+쿠키 기반의 사용자 인증 보안 취약점을 이용한 공격
조건
- 피해자가 공격 대상 서버에 인증된 상태여야 함
- 세션 쿠키나 토큰 정보가 브라우저에 저장되어 있어야 함
- 피해자 요청 시 공격 대상 서버 인증 정보를 포함해야 함
- 주로 쿠키 기반 인증에서 발생하는데, 브라우저가 같은 도메인으로 요청할 때 쿠키를 자동으로 포함하기 때문
- 공격 대상 서버에서 요청을 검증하지 않아야 함
- CSRF 토큰 같은 검증을 요구한다면 공격 실패
- 피해자가 공격자의 악성 리소스에 접근해야 함
- 악성 스크립트가 삽입된 웹 서버
- 악성 스크립트가 삽입된 공격자의 웹 서버
- 악성 스크립트가 삽입된 취약한 웹 서버(Stored XSS)
- 악성 링크
- 악성 스크립트가 URL 파라미터에 삽입된 링크(Reflected XSS)
- 악성 스크립트가 삽입된 웹 서버의 링크
- 이메일, 게시판, SNS 등을 통해 링크 공유
방법
- 피해자: 공격 대상 서버에 사용자 인증(로그인)
- 피해자: 브라우저에 사용자 인증 정보가 저장됨
- 피해자: 악성 스크립트가 삽입된 웹 서버 방문
- 피해자: 스크립트로 인해 공격 대상 서버로 악의적 요청 전송됨
- 의도하지 않은 행동(비밀번호 변경 등)이 공격 대상 서버에서 수행된다