정보보안 - CSRF(Cross Site Request Forgery)
CSRF (Cross Site Request Forgery)
- 개요
- 사용자의 브라우저에서 해당 사용자의 권한으로 어떤 기능을 수행하도록 만드는것
- XSS의 취약점이 존재할 시 CSRF의 취약점이 존재할 수 있는 확률이 90% 이상임
- 공격자가 의도한대로 수정, 삭제, 등록하도록 하는 방법
- XSS 는 사용자의 PC에서 공격이 이루어지나 CSRF는 정상적인 사용자가 서버에 공격자가 의도한 요청을 하도록 만드는 것
- 과정
- 공격자가 웹서버 (CSRF 취약점 존재 - 정상/비정상 요청을 구분하지 못함) 에 조작된 요청 (비밀번호 수정 등) 을 담은 게시물을 등록
- 웹서버는 게시물을 등록
- 희생자는 조작된 게시물을 열람
- 웹서버는 희생자의 권한으로 조작된 요청 (비밀번호 수정 등) 을 처리
- 희생자의 비밀번호가 공격자가 입력한 비밀번호로 수정됨
- 웹서버가 희생자에게 응답메시지(페이지) 전송
- (사용자가 로그인한 상태에서 접속가능한 웹페이지나 동작가능한 스크립트를 공격대상으로 함 - modify.asp, modify.php … )
- (IMG, EMBED 태그, javascript 등이 공격대상이 됨)
- CSRF 의 공격 예
- 자동으로 게시판 글 추가/삭제
- 자동으로 댓글 달기
- 자동으로 친구 등록
- 강제로 회원 탈퇴
- 자동으로 게시판 조회수 조작
- 자동으로 회원정보 변경
- 강제 Browsing 을 유도하는 공격
<iframe width=0 height=0 src=http://광고페이지>
<img src=http://광고페이지>
- 인증된 사용자 공격
- 희생자의 계좌에서 공격자의 계좌로 입금
- ID/PW 필요없이 가능한 공격
- 대다수의 사이트는 한번 로그인을 하면 세션쿠키로 인증관리를 한다.
- XSS : 세션쿠키를 가로채서 공격자가 정상적인 사용자로 위장가능
- CSRF : 세션쿠키를 가로챌 필요 없이 CSRF 요청페이지를 수행하기만 하면 됨
- 대응책
- 정상적인 요청과 비정상적인 요청을 판별할 수 있게 함 (토큰 사용)
- 예측이 어려운 토큰을 사용
- 사용자가 요청한 내용이 위조되었는지 여부를 판별하기 위함
- 세션정보의 토큰 값과 요청내용 내 토큰 값이 같은지 비교
- XSS, CSRF 의 취약점 제거
- 입력화면 폼 작성시 GET 보다 POST 사용
- 정상적인 요청과 비정상적인 요청을 판별할 수 있게 함 (토큰 사용)
댓글남기기