0. 개요
재귀의 순환횟수를 제어하지 못하여 할당된 메모리나 프로그램 스택 등의 자원을 과다하게 사용하면 위험하다.
대부분의 경우, 귀납 조건이 없는 재귀함수는 무한루프에 빠져 자원고갈을 유발하여
시스템의 정상적인 서비스를 제공할 수 없게 한다.
1. 보안 대책
- 모든 재귀 호출 시, 재귀 호출 횟수를 제한하거나, 초기값을 설정(상수)하여 재귀호출을 제한한다.
2. 진단 방법
- 재귀함수의 사용여부를 확인
- 재귀함수 내의 제어문을 통해 종료가 가능한지 확인
3. 코드 예시
소프트웨어 개발보안 가이드 (2019.11) / 행정안전부 & 한국인터넷진흥원
# 1 - 제거되지 않고 남은 디버그 코드 - 안전하지 않은 코드 예시(JAVA)
# 1 + 제거되지 않고 남은 디버그 코드 - 안전한 코드 예시(JAVA)
# 2 - 제거되지 않고 남은 디버그 코드 - 안전하지 않은 코드 예시(JAVA)
# 2 + 제거되지 않고 남은 디버그 코드 - 안전한 코드 예시(JAVA)
# 3 - 제거되지 않고 남은 디버그 코드 - 안전하지 않은 코드 예시(JAVA)
# 4 - 제거되지 않고 남은 디버그 코드 - 안전하지 않은 코드 예시(JAVA)
4. 해당 취약점 CASE
- 함수명, 파라미터 갯수, 파라미터 자료형이 일치하는 자신을 호출하는 경우
#. 참고 블로그
https://prokyhsigma.tistory.com/70?category=848515
'about Security > SECURE CODING' 카테고리의 다른 글
[캡슐화] 잘못된 세션에 의한 데이터 정보 노출 (5등급) (0) | 2021.08.10 |
---|---|
[에러처리] 오류 메세지를 통한 정보 노출 (5등급) (0) | 2021.08.10 |
[코드오류] NULL Pointer 역참조 (5등급) (0) | 2021.08.10 |
[에러 처리] 오류 상황 대응 부재 (4등급) (0) | 2021.08.07 |
[보안 기능] 취약한 암호화 알고리즘 사용 (4등급) (0) | 2021.08.07 |
댓글