IgnatiusHeo
설계단계 보안설계기준-웹 기반 중요 기능 수행 요청 유효성 검증 본문
작성일: 230623
※ 본 게시글은 학습 목적으로 행정안전부·KISA의 소프트웨어 보안약점 진단 가이드, 소프트웨어 개발보안 가이드를 참고하여 작성하였습니다.
정리 내용: 소프트웨어 보안약점 진단 가이드(71~75p)
유형 | 입력데이터 검증 및 표현 |
설계항목 | 웹 기반 중요 기능 수행 요청 유효성 검증 |
설명 | 비밀번호 변경, 결제 등 사용자 권한 확인이 필요한 중요기능을 수행할 때 웹 서비스 요청에 대한 유효성 검증방법 설계 및 유효하지 않은 값에 대한 처리방법을 설계해야 한다. |
보안대책 | ① 시스템으로 전송되는 모든 요청에 대해 정상적인 사용자의 유효한 요청인지, 아닌지 여부를 판별할 수 있도록 해야 한다. |
연관된 구현단계 | - 크로스사이트 요청 위조 https://cryptocurrencyclub.tistory.com/120 |
가. 취약점 개요
ㅇ 위 내용을 볼 때, 예상 가능한 보안 위협: 이건 모르겠다
- 공격자는 세션탈취, XSS 등으로 자신이 의도한 행위(수정, 삭제, 등록 등)를 사이트가 신뢰하는 인증된 사용자의 권한으로 실행되게 할 수 있다.
→ 왜 크로스사이트에서의 크로스사이트는 XS고 크로스 사이트 요청 위조에서는 CS?? CSS랑 혼용하면 헷갈려서 그런가?
→ 희생자의 응답값은 무시하고 공격자가 삽입한 기능이 실행되도록 위조하나봄. 위 예시처럼 희생자 P/W변경하거나 송금기능을 실행 시 공격자 계정으로 송금하는 등?
나. 설계시 고려사항
① 시스템에서 전송되는 모든 요청에 대해 정상적인 사용자의 유효한 요청인지 아닌지 여부를 판별할 수 있도록 해야 한다.
- CSRF 토큰 사용: 웹은 URL 기반으로 요청을 처리하는 구조이다. 해당 요청이 특정 사용자의 정상적인 요청인지를 구분하기 위한 정책이 없는 경우, 스크립트나 자동화된 도구에 의해 보내지는 요청이 검증절차 없이 처리될 수 있다. 그래서, 해당 요청이 정상적인 사용자의 정상적인 절차에 의한 요청인지를 구분하기 위해 세션별로 CSRF 토큰을 생성하여 세션에 저장하고, 사용자가 작업페이지를 요청할 때마다 hidden값으로 클라이언트에게 토큰을 전달한 뒤, 해당 클라이언트의 데이터 처리 요청 시 전달되는 CSRF 토큰값과 세션에 저장된 토큰값을 비교하여 유효성을 검사하도록 설계한다. CSRF 토큰값에 대한 검사 방법은 MVC프레임워크의 컴포넌트를 이용하여 데이터 처리 요청 수신 시 자동으로 검사될 수 있도록 설계한다. Spring이나 Struts와 같은 MVC프레임워크의 경우 사용자의 요청을 중간 에 가로채서 값의 유효성을 검사할 수 있는 Interceptor 컴포넌트를 이용하여 파라미터로 전달된 CSRF 토큰값이 세션에 저장된 토큰값과 동일한지를 검사하여 동일한 경우만 요청이 처리될 수 있도록 설계한다.
→ 글이 긴데, 주요 내용은 실제 웹서비스 사용자가 웹서비스와 상호작용을 하는게 맞는지 검증하기 위해 CSRF토큰을 삽입해놓고 상호작용할때마다 토큰값을 인터셉터 후 확인하여 삽입한 값과 동일한지 확인(아닌 경우에는 사용자가 정상적으로 보낸 요청이 아니니까 걸러야함.)
→ 신규 세션 오픈마다 세션키 발급하는거랑 비슷한 듯?
- 사용자와 상호 처리 기능 적용: CSRF 토큰 방식도 XSS 취약점이 있는 사이트를 공격하게 되면 무력화될 수 있으므로 CAPTCHA와 같은 사용자와 상호 처리 가능한 기법을 적용하여 위조된 요청이 차단될 수 있도록 설계한다.
- 재인증 요구: 중요기능의 경우 재인증으로 안전하게 실제 요청 여부를 확인하도록 설계한다.
→ 여기서 말하는 XSS는 Stored XSS인듯?
다. 진단 세부사항
① 시스템으로 전송되는 모든 요청에 대해 정상적인 사용자의 유효한 요청인지, 아닌지 판별할 수 있도록 확인하는 절차가 있는지 확인한다.
ㅇ 데이터 처리 요청(request)에 대한 정상적인 절차에 따른 요청인지를 검증하는 기능의 설계 여부 확인
→ CSRF 토큰 사용
→ CAPTCHA 이용
ㅇ 요청 유효성 점검 기능이 안전하게 적용되도록 설계되어 있는지 확인
→ 모든 데이터 처리 요청에 적용
→ 각 데이터를 처리하는 기능에서 적용
ㅇ 주요 기능에 대해 재인증/재인가 처리 방법과 모듈 설계 여부 확인
ㅇ 데이터 처리를 요청하는 주요기능이 자동화된 스크립트나 프로그램을 이용한 자동 요청을 식별하여 요청이 차단되는지를 점검할 수 있는 테스트 계획의 수립 여부 확인
끝.
'자격 > SW보안약점진단원' 카테고리의 다른 글
설계단계 보안설계기준-허용된 범위내 메모리 접근 (0) | 2023.06.27 |
---|---|
설계단계 보안설계기준-HTTP 프로토콜 유효성 검증 (0) | 2023.06.23 |
설계단계 보안설계기준-웹 서비스 요청 및 결과 검증 (0) | 2023.06.23 |
설계단계 보안설계기준-시스템 자원 접근 및 명령어 수행 입력값 검증 (0) | 2023.06.23 |
설계단계 보안설계기준-디렉토리 서비스 조회 및 결과 검증 (0) | 2023.06.22 |