본문 바로가기

봄보라

CSRF 공격이란?

Cross Site Request Forgery (CSRF) 공격이란 이전에 작성했던 OWASP 에도 등록되었던 공격 방법 중 하나다

 

보통 웹 사이트를 개발할 때 CSRF 취약점에 대해서는 고려하지 않고 개발하지 않기때문에 오래된 취약점인데도 불구하고 많은 사이트에서 취약점이 발견된다

 

대표적인 CSRF 공격 사례로 유명 쇼핑몰의 1000만여명 개인정보 유출 사건이 있다 (2008년)

 

CSRF 공격 방법 예

 

실제 CSRF 공격의 방법 예는 위의 같은 경우가 있다

 

특정 사이트에 로그인 된 상태에서 해커가 보낸 스팸 메일의 링크를 클릭하게되면 해커가 지정한 비밀번호로 변경하는 A 사이트의 URL 이 호출된다

 

만약 A 사이트에 로그인된 상태가 아니라면 문제 없지만 이미 브라우저에서 로그인된 상태라면 자신도 모르는새 해커가 지정한 비밀번호로 변경된다

 

그 다음 변경된 패스워드로 해커가 접속하여 필요한 정보를 가져가게된다

 

 

그렇다면 웹사이트를 개발하는 입장에서 어떻게 CSRF 공격을 방어할 수 있을까?

 

CSRF 토큰을 이용하는 방법

 

CSRF 토큰은 임의의 토큰을 클라이언트에게 알려주고 서버에서 관리중인 토큰과 동일한 토큰을 포함하여 요청해야만 정상처리하는 방법이다

 

이 방법은 웹사이트 개발 시 많이 이용하는 Spring Security 를 이용하면 쉽게 적용할 수 있다

 

 

기존 URL 확인

수신된 요청의 헤더에서 기존 사이트의 URL 을 가져오는 방법이다

 

운영중인 웹사이트의 URL 이 https://www.home.com 이라면 기존 사이트의 URL 의 시작도 동일할 것이다

 

엉뚱한 URL 로 요청이 온다면 정상적인 방법이 아닐 것이다

 

 

기존 비밀번호 입력

비밀번호 변경 시 기존 비밀번호도 함께 요청받는다

 

위의 CSRF 공격 예시 방법처럼 링크를 통해 비밀번호를 변경하려고해도 기존 비밀번호와 함께 요청해야하는 웹사이트라면 공격할 방법이 없다

 

 

여기까지 CSRF 공격 예시와 사례, 방어 방법에 대해 알아봤다

 

 

참고문헌) 화이트 해커를 위한 웹 해킹의 기술

 

참고솔루션) 봄즈 봄보라