티스토리 뷰
반응형
가. 원인
- 개발자가 직접 메모리 해제를 수행해야 하는 경우, 해제된 자원을 다시 해제하거나, 사용할 경우
나. 영향
- 해제한 자원을 다시 참조할 경우, 오류가 발생하거나 비정상 실행
다. 보안대책
- 동적으로 할당한 자원을 해제 후 포인터에 NULL을 저장하여 해제된 자원에 접근하지 않도록 구현
라. 안전한 코드
1. 자원해제 여부 확인
int function( char *argv ) { ... char *data; data = (char *)malloc( BUFFER_SIZE ); ... memcpy( data, argv, BUFFER_SIZE -1 ); data[BUFFER_SIZE-1] = '\0'; ... // 할당한 메모리가 null이 아닐 경우에만 메모리 반환 // 이후 다시 해제하더라도 오류가 발생하지 않도록 NULL로 초기화 if ( data != NULL ){ free( data ); data = NULL; } ... return 0; }
|
마. 진단방법
<자원해제 확인>
1. 메모리와 같은 자원을 사용하는 코드가 존재하는지 확인
2. 자원 사용 전 자원을 해제하고 있는지 확인
3. 자원해제 후 NULL로 초기화 하고 있는지 확인
바. 정/오탐 케이스
<정탐 케이스>
1. 메모리를 해제 후 다시 접근할 경우
2. 메모리를 해제 후 NULL로 초기화 하지 않을 경우
반응형
'Web Analytics > SW 보안약점 진단원' 카테고리의 다른 글
[구현보안] 캡슐화 01 - 잘못된 세션에 의한 데이터 정보 노출 (0) | 2019.10.07 |
---|---|
[구현보안] 코드오류 04 - 초기화되지 않은 변수 사용 (0) | 2019.10.07 |
[구현보안] 코드오류 02 - 부적절한 자원 해제 (0) | 2019.10.07 |
[구현보안] 코드오류 01 - Null Pointer 역참조 (0) | 2019.10.07 |
[구현보안] 에러처리 03 - 부적절한 예외 처리 (0) | 2019.10.07 |
댓글
반응형
최근에 올라온 글
- Total
- Today
- Yesterday