반응형
https://www.kisa.or.kr/public/laws/laws3.jsp
구현 단계 시큐어코딩 가이드 - 코드오류 - 부적절한 자원 해제
가. 개요
- 프로그램의 자원, 예를 들면 열린 파일디스크립터(Open File Descriptor), 힙 메모리(Heap Memory), 소켓(Socket) 등은 유한한 자원이다. 이러한 자원을 할당받아 사용한 후, 더 이상 사용하지 않는 경우 에는 적절히 반환하여야 하는데, 프로그램 오류 또는 에러로 사용이 끝난 자원을 반환하지 못하는 경우이다.
나. 보안대책
- 자원을 획득하여 사용한 다음에는 반드시 자원을 해제하여 반환한다.
다. 코드예제
JAVA
더보기
try구문 내 처리 중 오류가 발생할 경우, close()메서드가 실행되지 않아 사용한 자원이 반환되지 않을 수 있다.
예외상황이 발생하여 함수가 종료될 때, 예외의 발생 여부와 상관없이 항상 실행되는 finally 블록에서 할당받은 모든 자원을 반드시 반환하도록 한다
C#
더보기
파일 스트림이 해제되지 않는 C# 코드 예제이다.
using 구문을 이용하여 쉽게 자원을 해제할 수 있다.
C
더보기
아래 C 코드는 파일을 연 상태에서 오류가 발생했을 때 자원 누수가 발생한다.
오류가 발생한 상황에서도 정상적으로 파일 핸들러를 종료하도록 수정한다.
참고자료
- 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 |
댓글