보안/SW보안약점 진단원
[설계보안] 웹 기반 중요 기능 수행 요청 유효성 검증
re-bugger
2022. 6. 23. 16:43
분류: 입력데이터 검증 및 표현 / 크로스사이트 요청 위조
가. 항목명
웹 기반 중요 기능 수행 요청 유효성 검증
나. 취약점 설명
공격자는 세션탈취, XSS 등으로 자신이 의도한 행위를 인증된 사용자 권한으로 실행시키는 취약점
다. 보안대책
① 모든 요청에 대해 사용자의 유효한 요청인지 아닌지 여부를 판별
라. 설계시 고려사항
① 모든 요청에 대한 유효한 요청인지 아닌지 판별
- CSRF 토큰 사용
- 세션별로 CSRF 토근 생성하여 세션 저장 후 요청 시 Hidden 값으로 클라이언트에케 토큰을 전달한 뒤 클라이언트의 데이터 요청 시 CSRF 토큰 값과 세션에 저장된 토큰값을 비교하여 유효성 검증
- MVC 프레임워크 사용 시 Interceptor 컴포넌트로 사용자 요청 중간에 값의 유효성을 검증
- JAVA (Spring Security, Apache Struts, OWASP CSRFGuard)
- Python(Django)
- PHP(CSRF Protector)
- 사용자와 상호 처리 기능 사용
- CAPTCHA와 같은 사용자와 상호 처리 가능한 기법으로 검증
- 재인증 요구
- 중요기능의 경우 재인증 요청
마. 진단기준 및 세부사항
① 모든 요청에 대한 유효한 요청인지 판별
- 데이터 처리 요청(Requset)에 대한 검증 기능 확인
- CSRF 토큰 이용한 유효성 검증
- CAPTCHA 이용한 유효성 검증
- 요청 유효성 검증 기능 확인
- 모든 데이터에 대한 요청 적용
- 각 데이터를 처리하는 기능에 적용
- 주요기능에 대한 재인증/재인가 처리 여부 확인
바. 안전한 보안설계의 예
No | 요구사항명 | 해결방안 | 검수기준 | 비고 |
1 | DB사용자 계정에 최소권한 부여 | 애플리케이션에서 사용하는 DB 사용자 계정은 애플리케이션에서 사용하는 테이블, 뷰, 프로시저에 대해서만 사용권한을 부여한다 | 애플리케이션에서 사용하는 DB사용자 계정은 테이블, 뷰, 프로시저에 대한 권한만 적용된다. | 지속적인 DB사용자 계정 관리가 필요 |