CSRF란 무엇인가?
Cross-Site Request Forgery
사이트 간 요청 위조라는 뜻.
사용자가 의도하지 않은 요청을 공격자에 의해 강제적으로 시도될 수 있다.
대표적으로 사용자 정보 수정을 무단으로 하는 것, 패스워드 변경, 탈퇴, 게시글 작성/수정/삭제 등이 있다.
원래 사용자가 회원 정보를 수정하기 위해서, 의도적으로 정상적인 요청을 사용자가 보낼 것이다.
그러나 CSRF 공격 시, 공격자에 의해 사용자에게 스크립트가 발생되고 의도하지 않은 요청으로 회원 정보가 수정될 수 있다.
공격 원리 분석
예시 1)
공격자가 패스워드를 수정하는 악성 스크립트를 만들었다고 가정해보자. 공격자는 웹 서비스 특정 게시글에 이 스크립트를 작성한다. DB에 저장이 되고, 인증된 사용자가 그 게시글을 읽게 된다. 사용자에게 악성 스크립트가 발생되고 이는 client-side script로 발생되기 떄문에 웹 브라우저에서 scripting이 발생된다.
사용자가 웹 서비스에 패스워드를 바꿀 것을 요청하게 된다. 그럼 공격자는 매번 패스워드가 바뀌었는지 확인하고 있을 것이다. (사용자가 게시글을 읽을 때까지 기다려야 하므로)
예시 2)
공격자가 회원 탈퇴를 하는 악성 스크립트를 담았다고 가정해보자. 사용자에게 공격자가 링크를 보낸다. 공격자의 웹 사이트일 수도 있다. 링크를 읽으면 자동으로 악성 스크립트가 발생되도록 공격자가 만들 것이다. 사용자가 링크에 접속하면 악성 스크립트가 발생하여, 공격자가 의도한 최종 목적지인 서버에 회원 탈퇴 요청이 도달할 것이다.
XSS vs CSRF
둘 다 cross site인 것이 공통점이다.
xss는 악성 코드를 읽은 행위 자체가 공격자가 의도한 서버로 이동하는 것이다. 공격 타겟이 사용자가 된다.
csrf는 사용자가 의도하지 않은 행위 요청 작업들을 한다.
XSS의 공격 대상: 사용자
CSRF의 공격 대상: 서버
이때 CSRF가 서버에게 보내는 요청은 정상적인 요청이다. 악의적인 공격이 아니라는 점도 있다. 사용자가 의도하지 않은 요청일 뿐이다.
'웹 해킹 & 시큐어 코딩' 카테고리의 다른 글
웹 해킹 & 시큐어 코딩 (24) (0) | 2025.02.06 |
---|---|
웹 해킹 & 시큐어 코딩 (23) (0) | 2025.02.04 |
웹 해킹 & 시큐어 코딩 (21) (0) | 2025.02.02 |
웹 해킹 & 시큐어 코딩 (20) (0) | 2025.02.01 |
웹 해킹 & 시큐어 코딩 (19) (0) | 2025.01.30 |