본문 바로가기
공부/KISA

웹 기반 중요기능 수행 요청 유효성 검증 - KISA 소프트웨어 개발 보안 가이드

by Skogkatt의 개인 블로그 2020. 7. 9.
반응형

https://www.kisa.or.kr/public/laws/laws3.jsp

 

기술안내서 가이드 < 관련법령·기술안내서 < 자료실 : 한국인터넷진흥원

기술안내서 가이드 한국인터넷진흥원 기술안내서 가이드 입니다. 게시판 목록 보기 기술안내서 가이드 표 대분류 소분류 기술안내서 가이드 대상 수준 인터넷 진흥 및 이용 활성화 인터넷 진흥

www.kisa.or.kr


분석∙설계단계 SW 보안강화 - 설계보안항목 정의 및 설계 시 고려 사항 - 웹 기반 중요 기능 수행 요청 유효성 검증

설명

  • 사용자 권한확인(인증 등)이 필요한 중요 기능(결제 등)에 대한 웹 서비스 요청에 대한 유효성 검증방법과 유효하지 않은 요청에 대한 처리방법을 설계해야 한다.

설계항목내용

  • 시스템으로 전송되는 모든 요청에 대해 정상적인 사용자의 유효한 요청인지, 아닌지 여부를 판별할 수 있도록 해야 한다.

가. 취약점 개요

  • 공격자는 세션 탈취, XSS 등을 통해 자신이 의도한 행위(수정, 삭제, 등록 등)를 사이트가 신뢰하는 인증된 사용자의 권한을 통해 실행되게 할 수 있다.

 

나. 설계 시 고려사항

1. 시스템으로 전송되는 모든 요청에 대해 정상적인 사용자의 유효한 요청인지, 아닌지 여부를 판별할 수 있도록 해야 한다.

(ㄱ) CSRF토큰 사용
  • 웹은 URL 기반으로 요청을 처리하는 구조이다. 해당 요청이 특정 사용자의 정상적인 요청인지를 구분하기 위한 정책이 적용되지 않는 경우, 스크립트나 자동화된 도구에 의해 보내지는 요청이 검증절차 없이 처리될 수 있다.
  • 그래서 해당 요청이 정상적인 사용자의 정상적인 절차에 의한 요청인지를 구분하기 위해 세션별로 CSRF토큰을 생성하여 세션에 저장하고, 사용자가 작업 페이지를 요청할 때마다 hidden값으로 클라이언트에게 토큰을 전달한 뒤, 해당 클라이언트의 데이터 처리 요청 시 전달되는 CSRF토큰 값을 체크하여 요청의 유효성을 검사하도록 설계한다.
  • CSRF 토큰 값에 대한 체크 방법은 MVC프레임워크의 컴포넌트를 이용하여 데이터 처리 요청 수신 시 자동으로 체크될 수 있도록 설계하는 것이다. Spring이나 Struts와 같은 MVC프레임워크의 경우 사용자의 요청을 중간에 가로채서 값의 유효성을 검사할 수 있는 Interceptor 컴포넌트를 이용하여 파라미터로 전달된 CSRF 토큰 값이 세션에 저장된 토큰 값과 동일한지를 검사하여 동일한 경우만 요청이 처리될 수 있도록 설계한다.
  • 사용자의 요청을 검증하여 CSRF를 방어할 수 있도록 다음과 같은 프레임워크나 라이브러리의 사용을 고려할 수 있다.
(ㄴ) 사용자와 상호 처리 기능 적용
  • CSRF토큰 방식도 XSS 취약점이 있는 사이트를 통해 공격하게 되면 무력화될 수 있으므로 CAPTCHA와 같은 사용자와 상호 처리 가능한 기법을 적용하여 위조된 요청이 차단될 수 있도록 설계한다.
(ㄷ) 재인증 요구
  • 중요 기능의 경우 재인증을 통해 안전하게 실제 요청 여부를 확인하도록 설계한다.

참고자료

반응형

댓글