반응형
https://www.kisa.or.kr/public/laws/laws3.jsp
구현 단계 시큐어코딩 가이드 - 입력 데이터 검증 및 표현 - 정수형 오버플로우
가. 개요
- 정수형 오버플로우는 정수형 크기는 고정되어 있는데 저장할 수 있는 범위를 넘어서, 크 이보다 큰 값을 저장하려 할 때 실제 저장되는 값이 의도치 않게 아주 작은 수이거나 음수가 되어 프로그램이 예기치 않게 동작될 수 있다. 특히 반복문 제어, 메모리 할당, 메모리 복사 등을 위한 조건으로 사용자 가 제공하는 입력값을 사용하고 그 과정에서 정수형 오버플로우가 발생하는 경우 보안상 문제를 유발할 수 있다.
나. 보안대책
- 언어/플랫폼별 정수타입의 범위를 확인하여 사용한다. 정수형 변수를 연산에 사용하는 경우, 결과 값의 범위를 체크하는 모듈을 사용한다. 특히 외부 입력값을 동적 메모리 할당에 사용하는 경우, 변수 값이 적절한 범위 내에 존재하는 값인지 확인한다
다. 코드예제
JAVA
더보기
다음의 예제는 외부의 입력(slf_msg_param_num)을 이용하여 동적으로 계산한 값을 배열의 크기 (size)를 결정하는 데 사용하고 있다. 만일 외부 입력으로부터 계산된 값(param_ct)이 오버 플로우에 의해 음수 값이 되면, 배열의 크기가 음수가 되어 시스템에 문제가 발생할 수 있다.
동적 메모리 할당을 위해 외부 입력값을 배열의 크기로 사용하는 경우 그 값이 음수가 아닌지 검사하는 작업이 필요하다.
C#
더보기
외부 입력값으로 배열의 접근할 경우, 입력값이 너무 클 때 음수가 되어 시스템에 문제가 발생할 수 있다.
checked 구문을 이용하여 오버플로우 발생 확인 및 처리를 해야 한다.
C
참고자료
- CWE-190 Integer Overflow, MITRE,
http://cwe.mitre.org/data/definitions/190.html - Enforce limits on integer values originating from tainted sources, CERT,
http://www.securecoding.cert.org/confluence/display/c/INT04-C.+Enforce+limits+on+integer+values+originating+from+tainted+sources - Verify that all integer values are in range, CERT,
http://www.securecoding.cert.org/confluence/display/c/INT08-C.+Verify+that+all+integer+values+are+in+range - Integer overflow, OWASP,
https://www.owasp.org/index.php/OWASP_Periodic_Table_of_Vulnerabilities_- _Integer_Overflow/Underflow
반응형
'공부 > KISA' 카테고리의 다른 글
메모리 버퍼 오버플로우 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
---|---|
보안기능 결정에 사용되는 부적절한 입력값 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
HTTP 응답분할 - KISA 소프트웨어 개발 보안 가이드 (1) | 2020.07.20 |
크로스사이트 요청 위조 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
LDAP 삽입 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
댓글