보안/시큐어코딩

[시큐어코딩-13] 입력데이터 검증및 표현(13) 정수오버플로우

오픈이지 2012. 10. 28. 15:01


발생원인


입력 값의 크기에 대한 검증이 없는 경우 발생


영향


시스템 오류 발생, 임의 명령 실행, 시스템 점령등


코드예



 안전하기 않은 코드의 예 - JAVA

……

public static void main(String[] args){

   int size = new Integer(args[0]).intValue();

   size += new Integer(args[1]).intValue();

   MyClass[] data = new MyClass[size];


…… 


 size 크기에 대한 검증 절차가 없다.


 안전한 코드의 예 - JAVA

……

public static void main(String[] args{

   int size = new Integer(args[0]).intValue();

   size += new Integer(args[1]).intValue();


   // 배열의 크기 값이 음수값이 아닌지 검사한다.

   if (size < 0) return ;

   MyClass[ ] data = new MyClass[size];


……

 size에 대한 크기 검사를 수행한다.