이번 강의에서는
Cross-Site Request Forgery
CSRF 또는 XSRF에 대해 배워보겠습니다
CSRF 보안 공격 또는 보안 위협입니다
주로 해커들이 사용합니다
따라서 기술이기도 합니다
해커들이 이 공격을 게시할 때에는
여러분의 신용 정보도
세션(Session) ID와 쿠키도 노리지 않습니다
대신 여러분을 헷갈리게 만들어
무의식 중에 행동을 취하도록 유도합니다
여러분도 모르는 사이
해커는 CSRF 공격을 통해
여러분의 계정에서
벡엔드 애플리케이션의 정보들을
빼내갑니다
그러니 해커가
CSRF를 시작하면
알아챌 수가 없습니다
아직 이 개념이 확실히 잡혀 있지 않아
방금 설명은 도움이 되지 않을 수도 있습니다
그러므로 상황들을 가정하여
설명해보겠습니다
단계별로 어떻게 해커들이
CSRF 공격을 실행하는지에 대해서 말입니다
가장 첫 번째 단계는
당신은 넷플릭스의 엔드 유저로서
금요일 밤 여러분은 넷플릭스로
영화나 웹 시리즈 등을 시청하기로 결정했습니다
팝콘도 사고
콜라도 준비하고
모든 준비가 되었습니다
그리고 넷플릭스에 로그인합니다
노트북이든 시스템을 통해서 말이죠
그리고 여러분이 자격증명을 입력하는 순간
넷플릭스 서버는 쿠키를 생성하고
이를 브라우저 내
netflix.com이라는 도메인으로 저장해둡니다
이것이 첫 번째 단계에서 일어나는 일입니다
잘못된 것은 전혀 없습니다
여러분은 정당한 유저로써
넷플릭스라는 웹 애플리케이션에 접속했고
그 뒤에서는
넷플릭스가 특정 쿠키들을 생성했을 뿐입니다
여러분의 자격증명을
몇 번이고 물어보지 않기 위함입니다
그리고 이 쿠키들은
여러분의 브라우저 내에 보관됩니다
netflix.com이라는 도메인 이름으로 말입니다
쿠키는 브라우저 내의 개념입니다
쿠키들은 장단점이 있습니다
제가 강조하고 싶은 장점은
netflix.com같은 이름의 도메인이
여러분의 브라우저에 쿠키를 생성하면
다른 facebook.com 이나 amazon.com 같은 도메인들이
이 쿠키를 브라우저에서 훔쳐갈 수 없습니다
브라우저는 할당된 오리지널 도메인에만
쿠키를 공유하도록 설계되어 있습니다
쿠키가 처음 만들어진 도메인 말입니다
이 상황에서 오리지널 도메인은 netflix.com입니다
이것이 쿠키 이야기였고
첫 단계에서 벌어지는 일이었습니다
이제 두 번째 단계에서
무슨 일이 생기냐하면
영화를 다 보고
한 1시간 정도 후
엔드 유저가 evil.com 이라는 웹사이트를 방문합니다
물론 이건 가상의 웹사이트와
가상의 상황입니다
이해하셨을 거라 생각합니다
아무튼 evil.com 안에는
엔드 유저는 다른 창이지만 같은 브라우저로
접속합니다
유저가 evil.com을 방문할 때마다
해커가 운영하는 이 웹사이트의
백엔드 서버에서 볼 수 있습니다
해커는 언제든 CSRF 공격을 하기 위해 기다리고 있습니다
유저가 evil.com을 열면
시선을 사로잡고 유저에게 꼭 필요한
정보들이 담긴 웹 페이지를 띄웁니다
여러분이 평소에 필요했던 정보와 더불어
재미있는 제안들도 보입니다
예를 들면 아이폰 90% 할인이라든지
그런 말들로 여러분을 현혹해
그 링크를 누르게 만듭니다
그런 것들은 대체로 누구나 혹할 만한 것이기 때문이죠
아이폰을 진짜 90% 할인가에 살 수 있다면
누구라도 그 링크를 눌러볼 것입니다
그래서 결국 사용자는 유혹에 넘어가 그 링크를 누르고 말았습니다
이제 세 번째 단계에서 무슨 일이 생기는지 봅시다
세 번째 단계에서
유저가 악성 링크에 현혹되어
evil.com 안에서 클릭을 하면
그 링크 뒤에는
해커가 잠복해 놓은 코드가 있습니다
이게 여러분들이 볼 수 있는
잠복 코드 중 하나입니다
백엔드로 post 요청을 보내기 위해
양식을 작성하도록 요구합니다
그가 노리는 것은
netflix.com 에서/changeEmail입니다
이 코드로
여러분이 넷플릭스에서 이메일을 바꾸도록 합니다
해커는 그의 이메일로 로그인 하기 때문에
엔드 유저는 절대 알아차라지 못합니다
코드는 링크 뒤에 숨겨져 있기 때문입니다
저 링크를 누르면
브라우저는 post 요청을 만들고
netflix.com의 changeEmail경로로 접근합니다
이 요청을 netflix.com의 백엔드로
보낼 때마다
내 브라우저는 netflix.com 도메인에서
쿠키 정보를 보내줍니다
요청이 netflix.com으로 가는 것이기 때문입니다
그리고 요청이 netflix.com 가는 것이므로
그것과 함께
자동으로 netflix.com과 관련된
모든 요청들을 보냅니다
그리고 netflix.com은
만약 CSRF 공격을 제대로 다루지 못한다면
그들은 사실상 이 요청이
실제 넷플릭스 웹사이트에서 오는 것인지
evil.com 웹사이트에서 오는 것인지 구분을 할 수 없습니다
나쁜 웹사이트와 오리지널 웹사이트를
구분할 수 없으므로
그들은 이 요청을 받아들이고
엔드 유저의 이메일을 바꾸고
넷플릭스 계정의 이메일이 바뀌면
이제 넷플릭스 계정를 통제하는 것은
해커의 손에 달려있는 것입니다
엔드 유저는 이런 일이 생길지 절대 모르고 있었으며
해커가 사용자를 속인 것입니다
잘 이해되셨기 바랍니다
CSRF 공격이 어떻게 이뤄지는지 알아보았습니다
다음 강의에서는
이 CSRF 공격을 어떻게 다루는지
같은 넷플릭스 예시를 통해 배워보겠습니다
감사합니다 다음 강의 때 뵙겠습니다
수고하셨습니다