시큐어코딩
- home
- 보안소식
- 시큐어코딩
10. [입력 데이터 검증 및 표현] 크로스사이트 요청 위조 (CSRF)
2018.05.10 10:38
안녕하세요, 지에스인포입니다.
이번에는 행자부 개발보안 가이드라인 47개 항목 중 입력 데이터 검증 및 표현의 10번째 항목인 '크로스사이트 요청 위조'에 대해 알아보겠습니다.
크로스사이트 요청 위조는 행정자치부에서 발표한 '소프트웨어 개발보안 가이드'에 속해있는 주요 항목입니다. 분석, 설계 단계의 보안 요구항목에서는 '입력 데이터 검증 및 표현'의 '웹 기반 중요기능 수행 요청 유효성 검증'이라는 항목으로, 구현 단계 보안약점에서는 '입력 데이터 검증 및 표현'의 '크로스사이트 요청 위조'라는 이름으로 명시가 되어있습니다.
#크로스사이트 요청 위조란?
크로스사이트 요청 위조란 CSRF(Cross-Site Request Forgery)라고도 불리는 취약점으로, 특정 웹사이트에 대해서 사용자가 인지하지 못한 상황에서 사용자의 의도와는 무관하게 공격자가 의도한 행위(수정, 삭제,등록 등)를 요청하게 하는 공격을 말합니다. 웹 응용프로그램이 사용자로부터 받은 요청에 대해서 사용자가 의도한 대로 작성되고 전송된 것인지 확인하지 않는 경우 발생가능하고 특히, 해당 사용자가 관리자인 경우 사용자 권한관리, 게시물삭제, 사용자 등록 등 관리자 권한으로만 수행 가능한 기능을 공격자의 의도대로 실행시킬 수 있습니다.
또한, 어떠한 형태의 요청이던지 기본적으로 크로스사이트 요청 위조(CSRF) 취약점을 가질 수 있습니다.
예를 들어 살펴보겠습니다.
www.testshopping.com 이라는 가상의 쇼핑몰에는 관리자가 특정 회원에게 포인트를 적립시켜주는
givepoint.jsp라는 페이지가 존재합니다. Get방식으로 요청하며, 페이지를 동작하는데 필요한 파라미터는 userid(포인트를 적립시킬 회원ID), point(적립시킬 포인트의 값)입니다. 이 페이지는 관리자 계정으로만 접근이 가능하도록 구현되어있어 일반 계정으로는 동작할 수 없습니다.
그런데, 공격자가 이 페이지의 파라미터와 동작방식을 파악하고 자신의 계정으로 포인트를 적립시키고자 합니다. 하지만, 공격자 자신은 관리자가 아니기 때문에 불가능하므로 관리자가 해당 페이지를 접근하도록 유도합니다.
로그인이 되어있는 관리자가 위 글을 클릭하게 되면, givepoint.jsp페이지로 자동으로 접속하게되고, 공격자의 ID에 1,000,000 포인트를 적립될 것입니다.
위와 같은 공격은 악의적인 스크립트를 포함하여 공격을 하였고, 사용자가 인지하지 못한채로 공격자가 의도한 행위를 수행하였으므로 크로스사이트 스크립트 공격 방법을 이용한 크로스사이트 요청위조 공격이라고 할 수 있습니다.
#크로스사이트 요청 위조를 막기 위한 보안 대책은?
크로스 사이트 요청위조를 방어하기 위한 대책은 소프트웨어 개발 생명 주기에 따라 크게 두 가지로 나눌 수 있습니다.
소프트웨어 개발보안 가이드에서 제시하는 "크로스사이트 요청위조"에 대한 보안대책은 위와 같으며, 각각의 상황에 맞게 적절히 시큐어코딩을 적용하기를 권장하고 있습니다.
오늘은 "크로스사이트 요청위조"에 대해 살펴봤습니다.
다음은 시큐어코딩 11번째 항목, "HTTP 응답분할"에 대해 알아보도록 하겠습니다.
댓글 0
본사주소 : 서울특별시 금천구 가산디지털1로 181, 가산더블유센터 1508호 COPYRIGHT ⓒ ALL RIGHT RESERVED.