본문 바로가기
공부/KISA

보안기능 동작에 사용되는 입력값 검증 - KISA 소프트웨어 개발 보안 가이드

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

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

 

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

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

www.kisa.or.kr


분석∙설계단계 SW 보안강화 - 설계보안항목 정의 및 설계 시 고려 사항 - 보안 기능 동작에 사용되는 입력값 검증

설명

보안기능(인증,인가,권한부여 등) 프로그램 동작을 위해 사용되는 입력값과 함수(또는 메서드)의 외부 입력값 및 수행 결과에 대한 처리방법을 설계해야 한다.

설계항목 내용

  • 사용자의 역할, 권한을 결정하는 정보는 서버에서 관리해야 한다.
  • 쿠키값, 환경변수, 파라미터 값 등 외부 입력값이 보안 기능을 수행하는 함수의 인자로 사용되는 경우, 입력값에 대한 검증작업을 수행한 뒤 제한적으로 사용해야 한다. 
  • 중요 상태 정보나 인증, 권한 결정에 사용되는 정보는 쿠키로 전송되지 않아야 하며, 불가피하게 전송해야 하는 경우에는 해당 정보를 암호화해서 전송해야 한다.

가. 취약점 개요

사례 1: 보안 기능 결정에 사용되는 부적절한 입력값
  • 서버는 사용자가 전달하는 쿠키, 환경변수, 히든 필드를 충분히 검증하지 않을 경우 공격자는 이에 포함된 사용자 권한, 사용자 역할을 나타내는 변수를 조작한 뒤 서버로 요청하여 상승된 권한으로 작업을 수행한다.
사례 2: 정수형 오버플로우
  • 정수형 변수의 오버플로우는 정수 값이 증가하면서, 허용된 가장 큰 값보다 더 커져서 실제 저장되는 값이 의도하지 않게 아주 작은 수이거나 음수가 되어 발생한다. 특히 반복문 제어, 메모리 할당, 메모리 복사 등을 위한 조건으로 사용하는 외부 입력값이 오버플로우 되는 경우 보안상 문제를 유발할 수 있다.
사례 3: Null Pointer 역참조
  • 일반적으로 ‘그 객체가 널(Null)이 될 수 없다'라고 하는 가정을 위반했을 때 발생한다. 공격자가 의도 적으로 널 포인터 역참조를 발생시키는 경우, 그 결과 발생하는 예외 상황을 이용하여 추후의 공격을 계획하는 데 사용될 수 있다.

 

나. 설계 시 고려사항

1. 사용자의 역할, 권한을 결정하는 정보는 서버에서 관리해야 한다.

  • 상태 정보나 인증, 인가, 권한에 관련된 중요정보는 서버 측의 세션이나 DB에 저장해서 사용하도록 설계한다. 

2. 쿠키값, 환경변수, 파라미터 값 등 외부 입력값이 보안 기능을 수행하는 함수의 인자로 사용되는 경우, 입력값에 대한 검증작업을 수행한 뒤 제한적으로 사용해야 한다.

  • 보안기능을 수행하는 함수 설계 시, 외부의 입력값에 의존할 필요가 없는 구조를 가지도록 설계해야 하며, 만약 외부 입력값(쿠키값, 환경변수, 파라미터 등)을 받아서 수행해야 하는 경우, 입력값에 대한 검증작업을 수행한 뒤 제한적으로 사용해야 한다.
  • 외부에서 입력된 값에 대해서는 사용 전에 NULL 여부를 체크한 뒤 사용해야 하며, 외부 입력값이 출력 함수에서 포맷을 지정하는 값으로 사용되는 경우 취약점이 발생할 수 있으므로 주의해야 한다.
  • 특히 입력값에 대한 검증작업은 클라이언트 측에서 수행하는 검증 방식과 서버에서 수행하는 검증 방식이 동일해야 한다. 

3. 중요 상태 정보나 인증, 권한 결정에 사용되는 정보는 쿠키로 전송되지 않아야 하며, 불가피하게 전송해야 하는 경우에는 암호화해서 전송해야 한다.

  • 중요정보가 포함되는 쿠키는 암호화하여 전송하거나 HMAC과 같은 메시지 인증코드를 이용하여 서버 측에서 무결성을 검증한다.

참고자료

반응형

댓글