728x90
반응형
SMALL
SW개발보안가이드중 구현단계에서의 점검항목은 크게 7가지 이다. (입보시에코캡아)
1. 입력데이터 검증 및 표현
2. 보안기능
3. 시간 및 상태
4. 에러처리
5. 코드오류
5-1. Null Pointer 역참조
5-2. 부적절한 자원 해제
5-3. 해제된 자원 사용
5-4. 초기화되지 않은 변수 사용
6. 캡슐화
7. API 오용
이 장에서는 "5.코드오류" 에 대한 점검항목을 설명한다.
(두음 : 널부해초)
5-1. Null Pointer 역참조
구분 | 설명 |
원인/영향 | Null로 설정된 참조변수의 주소값을 참조하는 경우 공격자는 의도적으로 널포인트 역참조를 유발하여 그 결과로 발생하는 예외상황을 이용하여 추후의 공격을 계획하는데 사용할 수 있다 |
대응 | ① 참조변수를 레퍼런스하기전에 NULL인지 검사한다 취약) public static int cardinality (Object obj, final Collection col) { if (obj.equals("aaa")) { <-- object 파라미터값을 null검사 안하고 바로 사용 } 안전) public static int cardinality (Object obj, final Collection col) { if (null != obj && obj.equals("aaa")) { <-- object 파라미터값을 null검사 } |
5-2. 부적절한 자원 해제
구분 | 설명 |
원인/영향 | 자원(메모리,DB연결,파일..) 들을 사용후 반드시 해제하여야 하는데 부적절한 로직 및 코드누락으로 자원해제가 안될경우 자원고갈로 인해 오류가 발생한다 |
대응 | ① 자원할당후 반드시 자원해제가 되도록 코드를 작성한다 ② 자바의 경우 자원해제코드는 finally 블록에 기술해서 누락되지 않도록 한다 |
5-3. 해제된 자원 사용
구분 | 설명 |
원인/영향 | C,C++ 에서는 개발자가 자원을 직접 해제해야하는 경우 해제된 자원을 다시 해제하거나 해제된 자원을 다시 사용하는 경우 오류발생 취약) free(temp); stmcpy(temp, argv[1], BUFFER_SIZE-1); <-- temp해제후 다시 사용 |
대응 | ① 자원해제 후 그 메모리를 참조하고 있던 포인터를 참조 추적이나 형변환 , 수식에서의 피연산자 등을 사용하여 해제된 메모리에 접근하지 못하도록 한다. ② 자원해제 후 포인터에 NULL을 저장하거나, 다른 적절한 값을 저장하면 예상치 못한 코드의 실행을 막을수 있다 |
5-4. 초기화되지 않은 변수 사용
구분 | 설명 |
원인/영향 | C언어에서 스택 메모리에 저장되는 지역변수는 생성시 자동으로 초기화 되지 않는데 , 이 변수를 그냥 참조할 경우 이전에 이 메모리에 저장되어 있던 데이터를 의도치 않게 참조하게 되어 악성코드가 실행될 수 있다 |
대응 | ① 모든 변수는 사용전에 반드시 올바른 초기값을 할당한다 취약) int x , y ; 안전) int x = 0 , y = 0 ; |
728x90
반응형
LIST
'정보보안' 카테고리의 다른 글
SW보안약점진단원 : 구현단계 - API 오용 (0) | 2019.11.30 |
---|---|
SW보안약점진단원 : 구현단계 - 캡슐화 (0) | 2019.11.29 |
SW보안약점진단원 : 구현단계 - 에러처리 (0) | 2019.11.27 |
SW보안약점진단원 : 구현단계 - 시간 및 상태 (0) | 2019.11.26 |
SW보안약점진단원 : 구현단계 - 보안기능 (2/2) (0) | 2019.11.25 |