보안/SW보안약점 진단원

[설계보안] 웹 기반 중요 기능 수행 요청 유효성 검증

re-bugger 2022. 6. 23. 16:43

분류: 입력데이터 검증 및 표현 / 크로스사이트 요청 위조

가. 항목명

웹 기반 중요 기능 수행 요청 유효성 검증

나. 취약점 설명

공격자는 세션탈취, XSS 등으로 자신이 의도한 행위를 인증된 사용자 권한으로 실행시키는 취약점

다. 보안대책

① 모든 요청에 대해 사용자의 유효한 요청인지 아닌지 여부를 판별

라. 설계시 고려사항

① 모든 요청에 대한 유효한 요청인지 아닌지 판별

  • CSRF 토큰 사용
    • 세션별로 CSRF 토근 생성하여 세션 저장 후 요청 시 Hidden 값으로 클라이언트에케 토큰을 전달한 뒤 클라이언트의 데이터 요청 시 CSRF 토큰 값과 세션에 저장된 토큰값을 비교하여 유효성 검증
    • MVC 프레임워크 사용 시 Interceptor 컴포넌트로 사용자 요청 중간에 값의 유효성을 검증
      1. JAVA (Spring Security, Apache Struts, OWASP CSRFGuard)
      2. Python(Django)
      3. PHP(CSRF Protector)
  • 사용자와 상호 처리 기능 사용
    • CAPTCHA와 같은 사용자와 상호 처리 가능한 기법으로 검증
  • 재인증 요구
    • 중요기능의 경우 재인증 요청

마. 진단기준 및 세부사항

① 모든 요청에 대한 유효한 요청인지 판별

  • 데이터 처리 요청(Requset)에 대한 검증 기능 확인
    • CSRF 토큰 이용한 유효성 검증
    • CAPTCHA 이용한 유효성 검증
  • 요청 유효성 검증 기능 확인
    • 모든 데이터에 대한 요청 적용
    • 각 데이터를 처리하는 기능에 적용
  • 주요기능에 대한 재인증/재인가 처리 여부 확인

바. 안전한 보안설계의 예

No 요구사항명 해결방안 검수기준 비고
1 DB사용자 계정에 최소권한 부여 애플리케이션에서 사용하는 DB 사용자 계정은 애플리케이션에서 사용하는 테이블, 뷰, 프로시저에 대해서만 사용권한을 부여한다 애플리케이션에서 사용하는 DB사용자 계정은 테이블, 뷰, 프로시저에 대한 권한만 적용된다. 지속적인 DB사용자 계정 관리가 필요