반응형
https://www.kisa.or.kr/public/laws/laws3.jsp
구현 단계 시큐어코딩 가이드 - 시간 및 상태 - 종료되지 않는 반복문 또는 재귀함수
가. 개요
- 재귀의 순환횟수를 제어하지 못하여 할당된 메모리나 프로그램 스택 등의 자원을 과다하게 사용하면 위험하다. 대부분의 경우, 귀납 조건(Base Case)이 없는 재귀 함수는 무한 루프에 빠져 들게 되고 자원고갈을 유발함으로써 시스템의 정상적인 서비스를 제공할 수 없게 한다.
나. 보안대책
- 모든 재귀 호출 시, 재귀 호출 횟수를 제한하거나, 초기값을 설정(상수)하여 재귀 호출을 제한해야 한다.
다. 코드예제
C
더보기
factorial 함수는 함수 내부에서 자신을 호출하는 재귀함수로, 재귀문을 빠져나오는 조건을 정의하고 있지 않아 무한 재귀에 빠져 시스템 장애를 유발할 수 있다.
재귀 함수를 구현할 때는 아래와 같이 재귀문을 빠져 나오는 조건인 귀납 조건(Base case)을 반드시 구현해야 한다
참고자료
- CWE-674 Uncontrolled Recursion, MITRE,
http://cwe.mitre.org/data/definitions/674.html - CWE-835, Loop with Unreachable Exit Condition ('Infinite Loop'),MITRE,
http://cwe.mitre.org/data/dfinitions/835.html
반응형
'공부 > KISA' 카테고리의 다른 글
오류 상황 대응 부재 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.22 |
---|---|
오류 메시지를 통한 정보노출 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.22 |
경쟁조건: 검사시점과 사용시점(TOCTOU) - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.22 |
반복된 인증시도 제한 기능 부재 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.21 |
무결성 검사 없는 코드 다운로드 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.21 |
댓글