CSRF(Cross Site Request Forgery)는 정상적인 자격을 부여받은 사용자의 요청을 변조하여 웹서버로 보내는 공격으로 정상적인 요청과 공격 요청을 구별하기 어렵다. CSRF 방지를 위해 비밀 토큰, 커스텀 헤더, 프록시, 정책 모델, CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart), 사용자 재인증 등이 연구되고 이용되고 있다. 그러나 무력화시킬 수 있는 공격 기법이 존재하며, CAPTCHA나 사용자 재인증의 남용은 웹사이트의 사용 편의성을 저하시킨다. 본 논문에서는 웹사이트의 구조와 웹사이트 사용 패턴을 분석하여 CSRF 공격을 탐지하는 방법을 제안한다. CSRF 공격 대상 후보를 선출하고 웹사이트 구조에 따른 패턴과 사이트 사용 로그를 분석한다. 정상적인 사용패턴을 추출하여, CSRF 공격을 탐지한다. 제안한 방법을 적용하여 CSRF 방지를 위해 정상 요청 시에도 사용자 개입을 요구하여 CAPTCHA를 입력하는 불편을 해소하고 이상 요청패턴을 탐지 시에만 사용자가 개입하도록 하여 CSRF를 방어하며 사용 편의성을 유지할 수 있음을 확인하였다.
CSRF(Cross Site Request Forgery)는 정상적인 자격을 부여받은 사용자의 요청을 변조하여 웹서버로 보내는 공격으로 정상적인 요청과 공격 요청을 구별하기 어렵다. CSRF 방지를 위해 비밀 토큰, 커스텀 헤더, 프록시, 정책 모델, CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart), 사용자 재인증 등이 연구되고 이용되고 있다. 그러나 무력화시킬 수 있는 공격 기법이 존재하며, CAPTCHA나 사용자 재인증의 남용은 웹사이트의 사용 편의성을 저하시킨다. 본 논문에서는 웹사이트의 구조와 웹사이트 사용 패턴을 분석하여 CSRF 공격을 탐지하는 방법을 제안한다. CSRF 공격 대상 후보를 선출하고 웹사이트 구조에 따른 패턴과 사이트 사용 로그를 분석한다. 정상적인 사용패턴을 추출하여, CSRF 공격을 탐지한다. 제안한 방법을 적용하여 CSRF 방지를 위해 정상 요청 시에도 사용자 개입을 요구하여 CAPTCHA를 입력하는 불편을 해소하고 이상 요청패턴을 탐지 시에만 사용자가 개입하도록 하여 CSRF를 방어하며 사용 편의성을 유지할 수 있음을 확인하였다.
It is difficult to identify attack requests from normal ones when those attacks are based on CSRF which enables an attacker transmit fabricated requests of a trusted user to the website. For the protection against the CSRF, there have been a lot of research efforts including secret token, custom hea...
It is difficult to identify attack requests from normal ones when those attacks are based on CSRF which enables an attacker transmit fabricated requests of a trusted user to the website. For the protection against the CSRF, there have been a lot of research efforts including secret token, custom header, proxy, policy model, CAPTCHA, and user reauthentication. There remains, however, incapacitating means and CAPTCHA and user reauthentication incur user inconvenience. In this paper, we propose a method to detect CSRF attacks by analyzing the structure of websites and the usage patterns. Potential victim candidates are selected and website usage patterns according to the structure and usage logs are analyzed. CSRF attacks can be detected by identifying normal usage patterns. Also, the proposed method does not damage users' convenience not like CAPTCHA by requiring user intervention only in case of detecting abnormal requests.
It is difficult to identify attack requests from normal ones when those attacks are based on CSRF which enables an attacker transmit fabricated requests of a trusted user to the website. For the protection against the CSRF, there have been a lot of research efforts including secret token, custom header, proxy, policy model, CAPTCHA, and user reauthentication. There remains, however, incapacitating means and CAPTCHA and user reauthentication incur user inconvenience. In this paper, we propose a method to detect CSRF attacks by analyzing the structure of websites and the usage patterns. Potential victim candidates are selected and website usage patterns according to the structure and usage logs are analyzed. CSRF attacks can be detected by identifying normal usage patterns. Also, the proposed method does not damage users' convenience not like CAPTCHA by requiring user intervention only in case of detecting abnormal requests.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서는 웹사이트 구조 분석과 웹사용패턴을 분석[11][12]하여 정상적인 세션일지라도 변조 가능성이 있는 이상패턴을 탐지하여 CSRF 공격을 방지하는 방안을 제시한다.
본 논문에서는 웹사이트의 구조와 웹사이트 사용패턴을 분석하고, 실제 사이트 이용 요청과 비교하여 CSRF로 의심되는 이상 요청을 탐지하여 CSRF 공격을 방지하는 방법을 제시하였다. CSRF 공격대상이 되는 타겟 페이지를 선정하고 웹사이트 구조에 따른 패턴과 사이트 사용 로그를 분석하여 타겟 페이지로의 이동 경로를 도출하였다.
그러나 이러한 예방조치가 기술적으로 회피할 수 있으며, 일부는 웹사이트의 사용 편의성을 저하시키는 문제가 있다. 이에 본 논문에서는 기존 방어대책의 한계점을 기술하고 이를 해결하기 위한 방안을 제안한다.
제안 방법
본 논문에서는 웹사이트의 구조와 웹사이트 사용패턴을 분석하고, 실제 사이트 이용 요청과 비교하여 CSRF로 의심되는 이상 요청을 탐지하여 CSRF 공격을 방지하는 방법을 제시하였다. CSRF 공격대상이 되는 타겟 페이지를 선정하고 웹사이트 구조에 따른 패턴과 사이트 사용 로그를 분석하여 타겟 페이지로의 이동 경로를 도출하였다. 도출한 정상 사용패턴 결과와 사용자의 페이지 내비게이션을 비교하여 불일치 시 CSRF로 판단하여 사용자가 개입하도록 하였다.
프락시는 보통 웹브라우저와 웹서버 사이에 데이터를 중계하는 별도의 서버를 지칭하며 웹컨텐츠 캐시, 방화벽, 보안 기능 등을 수행한다. CSRF 방지를 위해 서버와 브라우저 사이에 중계 역할을 하는 서버나 에이전트 등을 이용하여 웹트래픽을 감시하고 제어한다. 프락시는 위치에 따라 클라이언트 측 프락시(Client-side Proxy)와 서버 측 프락시(Server-side Proxy)로 분류할 수 있다.
제안한 방법의 효과를 확인하기 위해 게시판 형태의 실험 사이트를 구축하고 게시글에 CSRF 공격 코드를 삽입하였다. 게시글의 등록, 삭제에 모두 CAPTCHA를 입력하도록 하고 제안한 방법은 요청을 분석하여 CSRF 탐지 시에만 CAPTCHA를 입력하도록 하여 그 결과를 비교하였다.
웹로그 정보를 이용한 분석 시 프록시 서버나 클라이언트의 로컬 캐시 때문에 실제 사용자가 브라우저에서 요청하였으나 웹서버에 로그가 남지 않는 경우가 발생한다. 공격 대상이 되는 페이지는 민감한 정보 조회나 조작을 수행하는 페이지로 중간 과정에서 캐시로 남아 있으면 보안 문제가 발생하는 특징이 있기 때문에 타겟 페이지나 종속 페이지는 no-cache 옵션을 사용하는 동적 페이지로 구현되었다는 전제로 로그 분석을 수행한다.
CSRF 공격대상이 되는 타겟 페이지를 선정하고 웹사이트 구조에 따른 패턴과 사이트 사용 로그를 분석하여 타겟 페이지로의 이동 경로를 도출하였다. 도출한 정상 사용패턴 결과와 사용자의 페이지 내비게이션을 비교하여 불일치 시 CSRF로 판단하여 사용자가 개입하도록 하였다. 실험을 통해 모든 타겟 페이지에 CAPTCHA 입력을 요구하여 발생하는 사용 편의성 저하를 최소화하면서 동일한 CSRF 방지 효과가 있음을 확인하였다.
본 논문에서는 사용자의 정상적인 웹사이트 이용 패턴을 벗어나는 이상 요청 패턴을 찾는데 목적이 있기 때문에 웹로그에서 분석에 불필요한 이미지, 멀티미디어, 라이브러리 소스 등의 요청 정보를 제거한다. 또한 해커의 주 공격 대상이 되는, 사용자 데이터나 동작에 의해 피해를 일으킬 수 있는 페이지를 선별한다.
본장에서는 3장에서 기술한 기법들의 기술적 취약점으로, 비밀 토큰을 포함한 요청 생성, 리퍼러 헤더의 조작, 정책 부여 시 정책 허용 범위에서의 요청 변조 등의 기술적 한계점을 보완하고, CAPTCHA나 사용자 재인증 방식의 문제점인 사용 편의성을 저하시키지 않으면서 CSRF 방지 효과를 유지할 수 있는 방안을 제시한다. 서버 측에 웹사이트의 구조와 사용패턴을 분석한 데이터를 기초로 클라이언트의 웹사이트 사용 패턴을 모니터링하고 비정상적인 사용 패턴에 대응한다.
브라우저에서 자격 증명에 이용되는 기본적인 세션 토큰 이외의 별도의 예측 불가능한 비밀토큰(Nonce)을 링크나 폼에 삽입하여 서버로 들어오는 요청의 비밀토큰을 검증한다.[3][4] 공격자가 기본 자격증명 이외의 비밀토큰을 모를 경우 요청을 변조하지 못하도록 방지한다.
이를 타겟 페이지라고 칭한다. 웹로그 분석을 통해 추출한 정보 중에서 타겟 페이지를 호출하는 트랜잭션만 추출하여 페이지 이동 경로를 분석한다. 타겟 페이지에 도달하기 위해 논리적으로 반드시 거쳐야할 페이지를 종속 페이지, 타겟 페이지 도달과 무관하거나 필수가 아닌 페이지를 보조 페이지라 명명한다.
웹사용패턴은 웹서버 로그 파일을 이용하여 사용자의 웹사이트 사용 정보를 분석한다. 접속 IP와 브라우저 정보 등을 이용하여 사용자 세션을 분류하고 단일 세션, 즉 트랜잭션 별로 웹사이트를 방문한 클라이언트의 연속적인 요청 로그를 분석하여 페이지 요청 순서를 추출한다. 추출한 정보를 통해 페이지간 연관성을 찾을 수 있다.
제안한 방법의 효과를 확인하기 위해 게시판 형태의 실험 사이트를 구축하고 게시글에 CSRF 공격 코드를 삽입하였다. 게시글의 등록, 삭제에 모두 CAPTCHA를 입력하도록 하고 제안한 방법은 요청을 분석하여 CSRF 탐지 시에만 CAPTCHA를 입력하도록 하여 그 결과를 비교하였다.
CSRF 탐지 데이터 구축은 구조 분석과 사용패턴 분석 결과 데이터를 취합한다. 탐지는 클라이언트로부터 서버로 들어오는 요청을 수집, 분석하여 사전분석에서 구축한 패턴과의 일치 여부를 비교하여 불일치 시 CSRF 요청 변조로 판단한다.
구조분석은 사이트맵과 컨텐츠, 웹서버 로그를 활용한다. 페이지간 호출관계를 찾아서 웹사이트의 구조를 구축한다. 사용패턴분석은 로그파일을 분석하여 페이지 호출의 순차 패턴을 찾는다.
성능/효과
(그림 4)와 같이 실험을 통해 CAPTCHA 도입은 정상적인 요청에도 입력을 요청하였으나 제안한 방법은 CSRF 공격에 대해서만 CAPTCHA 입력을 요구하여 동일한 안전성을 유지하며 사이트 이용의 편의성을 보장함을 확인하였다.
0 환경에서 클라이언트에서 다양한 서버를 상호 참조하는 요청에 대한 정책을 수립하여 요청에 대한 허용, 거부, 수정을 수행하는 모델을 제시했다. 그러나 이 연구방안은 서버와 클라이언트가 보안상 안전하다는 전제에서 서버에서 제공하는 모든 서비스에 대한 정책을 수립해야지 효과적으로 이용이 가능하다. 정책이 허용하는 범위 내에서 요청 변조가 발생 시 이를 방어하지 못하며, 클라이언트 측 정책 파일에 대한 변조의 위험이 있다.
도출한 정상 사용패턴 결과와 사용자의 페이지 내비게이션을 비교하여 불일치 시 CSRF로 판단하여 사용자가 개입하도록 하였다. 실험을 통해 모든 타겟 페이지에 CAPTCHA 입력을 요구하여 발생하는 사용 편의성 저하를 최소화하면서 동일한 CSRF 방지 효과가 있음을 확인하였다.
후속연구
향후 분석의 효율성과 사용패턴 비교의 정확성을 위한 알고리즘 연구가 요구된다.
질의응답
핵심어
질문
논문에서 추출한 답변
CSRF는 어떠한 공격인가?
CSRF(Cross Site Request Forgery)는 정상적인 자격을 부여받은 사용자의 요청을 변조하여 웹서버로 보내는 공격으로 정상적인 요청과 공격 요청을 구별하기 어렵다. CSRF 방지를 위해 비밀 토큰, 커스텀 헤더, 프록시, 정책 모델, CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart), 사용자 재인증 등이 연구되고 이용되고 있다.
현재 CSRF 방지를 위해 사용되는 기법의 문제점은?
CSRF 방지를 위해 비밀 토큰, 커스텀 헤더, 프록시, 정책 모델, CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart), 사용자 재인증 등이 연구되고 이용되고 있다. 그러나 무력화시킬 수 있는 공격 기법이 존재하며, CAPTCHA나 사용자 재인증의 남용은 웹사이트의 사용 편의성을 저하시킨다. 본 논문에서는 웹사이트의 구조와 웹사이트 사용 패턴을 분석하여 CSRF 공격을 탐지하는 방법을 제안한다.
CSRF 방지를 위해 어떤 것들이 연구되고 이용되고 있는가?
CSRF(Cross Site Request Forgery)는 정상적인 자격을 부여받은 사용자의 요청을 변조하여 웹서버로 보내는 공격으로 정상적인 요청과 공격 요청을 구별하기 어렵다. CSRF 방지를 위해 비밀 토큰, 커스텀 헤더, 프록시, 정책 모델, CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart), 사용자 재인증 등이 연구되고 이용되고 있다. 그러나 무력화시킬 수 있는 공격 기법이 존재하며, CAPTCHA나 사용자 재인증의 남용은 웹사이트의 사용 편의성을 저하시킨다.
참고문헌 (12)
David Gourley and Brian Totty, "HTTP: The Definitive Guide", O'Reilly Media, 2002.
N. Jovanovic, E. Kirda, and C. Kruegel, "Preventing Cross Site Request Forgery attacks", In IEEE International Conference on Security and Privacy in Communication Networks (SecureComm), 2006.
A. Barth, C. Jackson, and J. C. Mitchell, "Robust defenses for Cross-Site Request Forgery", In Proceedings of the 15th ACM Conference on Computer and Communications Security (CCS 2008), 2008.
Mike Shema, "Seven Deadliest Web Application Attacks", Syngress, 2010.
A. Klein. Forging, "HTTP request headers with Flash", http://www.securityfocus.com/archive/1/441014, 2006.
M. Johns and J. Winter, "RequestRodeo: Client side protection against session riding", In In Proceedings of the OWASP Europe 2006 Conference, 2006
W. Maes, T. Heyman, L. Desmet, and W. Joosen, "Browser Protection against Cross-Site Request Forgery", In Workshop on Secure Execution of Untrusted Code (SecuCode), 2009.
www.captcha.net
Bing Liu, "Web Data Mining: Exploring Hyperlinks, Contents, and Usage Data", Springer, 2006.
J. Srivastava, R. Cooley, M. Deshpande, P.-N. Tan, "Web usage mining: Discovery and applications of usage patterns from web data", ACM SIGKDD, 2000.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.