본문 바로가기

IT정보/SW보안약점 진단원

1.9 보안기능 입력값 검증

1.9 보안기능 입력값 검증

1. 보안약점 항목

  • 보안기능 결정에 사용되는 부적절한 입력값
  • 정수형 오버플로우
  • Null Pointer 역참조

2. 설명

  • 보안기능(인증, 권한부여 등) 입력 값과 함수(또는 메소드)의 외부입력값 및 수행 결과에 대한 유효성 검증방법 설계 및 유효하지 않은 값에 대한 처리방법을 설계해야 한다.

3. 보안대책

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

 
사례1 : 보안기능 결정에 사용되는 부적절한 입력값
서버는 사용자가 전달하는 쿠키, 환경변수, 파라미터 등을 충분히 검증하지 않고 사용할 경우 공격자는
이에 포함된 사용자 권한, 역할 등을 나타내는 변수를 조작한 뒤 서버로 요청하여 상승된 권한으로
작업을 수행한다.

사례2 : 정수형 오버플로우
정수형 변수의 오버플로우는 정수 값이 증가하면서, 허용된 가장 큰 값보다 더 커져서 실제 저장되는
값이 의도하지 않게 아주 작은 수이거나 음수가 되어 발생한다. 특히 반복문 제어, 메모리 할당,
메모리 복사 등을 위한 조건으로 사용하는 외부입력값이 오버플로우 되는 경우 보안상 문제를 유발
할 수 있다.

 
사례3 : Null Pointer 역참조
일반적으로, 그 객체가 ‘널(Null)이 될 수 없다’라고 하는 가정을 위반했을 때 발생한다. 공격자가
의도적으로 널 포인터 역참조를 발생시키는 경우, 그 결과 발생하는 예외 상황을 이용하여 추후의
공격을 계획하는 데 사용될 수 있다.