반응형
https://www.kisa.or.kr/public/laws/laws3.jsp
기술안내서 가이드 < 관련법령·기술안내서 < 자료실 : 한국인터넷진흥원
기술안내서 가이드 한국인터넷진흥원 기술안내서 가이드 입니다. 게시판 목록 보기 기술안내서 가이드 표 대분류 소분류 기술안내서 가이드 대상 수준 인터넷 진흥 및 이용 활성화 인터넷 진흥
www.kisa.or.kr
구현 단계 시큐어코딩 가이드 - 코드오류 - 부적절한 자원 해제
가. 개요
- 프로그램의 자원, 예를 들면 열린 파일디스크립터(Open File Descriptor), 힙 메모리(Heap Memory), 소켓(Socket) 등은 유한한 자원이다. 이러한 자원을 할당받아 사용한 후, 더 이상 사용하지 않는 경우 에는 적절히 반환하여야 하는데, 프로그램 오류 또는 에러로 사용이 끝난 자원을 반환하지 못하는 경우이다.
나. 보안대책
- 자원을 획득하여 사용한 다음에는 반드시 자원을 해제하여 반환한다.
다. 코드예제
JAVA
더보기
![](https://blog.kakaocdn.net/dn/K0UWd/btqFUSgtlij/1VCvmfU4wYKPzoEZUu8Na0/img.png)
![](https://blog.kakaocdn.net/dn/vDGy1/btqFTSuGHqh/jVmWxMGlI5E9qG4Bf2VCHK/img.png)
try구문 내 처리 중 오류가 발생할 경우, close()메서드가 실행되지 않아 사용한 자원이 반환되지 않을 수 있다.
![](https://blog.kakaocdn.net/dn/K0UWd/btqFUSgtlij/1VCvmfU4wYKPzoEZUu8Na0/img.png)
예외상황이 발생하여 함수가 종료될 때, 예외의 발생 여부와 상관없이 항상 실행되는 finally 블록에서 할당받은 모든 자원을 반드시 반환하도록 한다
![](https://blog.kakaocdn.net/dn/vDGy1/btqFTSuGHqh/jVmWxMGlI5E9qG4Bf2VCHK/img.png)
C#
더보기
![](https://blog.kakaocdn.net/dn/V6NY4/btqFTUeZGhA/SdGzpWS8jyNxC9sya20UG1/img.png)
![](https://blog.kakaocdn.net/dn/b8lav9/btqFVjEUBLl/UvC646oSOoEWz7zz6RjLFk/img.png)
![](https://blog.kakaocdn.net/dn/eaC6kI/btqFQ9qqhJ8/HWncwpYYBUrQBKkGFyk6D0/img.png)
파일 스트림이 해제되지 않는 C# 코드 예제이다.
![](https://blog.kakaocdn.net/dn/V6NY4/btqFTUeZGhA/SdGzpWS8jyNxC9sya20UG1/img.png)
using 구문을 이용하여 쉽게 자원을 해제할 수 있다.
![](https://blog.kakaocdn.net/dn/b8lav9/btqFVjEUBLl/UvC646oSOoEWz7zz6RjLFk/img.png)
![](https://blog.kakaocdn.net/dn/eaC6kI/btqFQ9qqhJ8/HWncwpYYBUrQBKkGFyk6D0/img.png)
C
더보기
![](https://blog.kakaocdn.net/dn/boEnTj/btqFQKqXiWJ/adS3D9TeCENxtkR3mfaw0k/img.png)
![](https://blog.kakaocdn.net/dn/XmvKQ/btqFRBfWxdg/ktHmeYKCkeTuWs9yLLGMMk/img.png)
![](https://blog.kakaocdn.net/dn/2QTec/btqFRA2qqim/gHUqUCS8aChT7vXr1qICD0/img.png)
아래 C 코드는 파일을 연 상태에서 오류가 발생했을 때 자원 누수가 발생한다.
![](https://blog.kakaocdn.net/dn/boEnTj/btqFQKqXiWJ/adS3D9TeCENxtkR3mfaw0k/img.png)
![](https://blog.kakaocdn.net/dn/XmvKQ/btqFRBfWxdg/ktHmeYKCkeTuWs9yLLGMMk/img.png)
오류가 발생한 상황에서도 정상적으로 파일 핸들러를 종료하도록 수정한다.
![](https://blog.kakaocdn.net/dn/2QTec/btqFRA2qqim/gHUqUCS8aChT7vXr1qICD0/img.png)
참고자료
- CWE-404 Improper Resource Shutdown or Release, MITRE,
http://cwe.mitre.org/data/definitions/404.html - Release resources when they are no longer needed, CERT,
http://www.securecoding.cert.org/confluence/display/java/FIO04-J.+Release+resources+when+they+are+no+longer+needed - Unreleased Resource, OWASP,
https://www.owasp.org/index.php/Unreleased_Resource
반응형
'공부 > KISA' 카테고리의 다른 글
초기화되지 않은 변수 사용 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.22 |
---|---|
해제된 자원 사용 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.22 |
Null Pointer 역참조 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.22 |
부적절한 예외 처리- KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.22 |
오류 상황 대응 부재 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.22 |
댓글