-
이전글
2020/05/05 - [2020년도 상반기/정처기] - [2020 정보처리기사 실기] Section 09.소프트웨어 개발 보안 구축 #2
시간 및 상태
병렬 처리 시스템이나 멀티 프로세스에서 시간과 실행상태를 관리하며 시간 및 상태를 점검하지 않은 코딩이 유발하는 보안 약점은 다음과 같이 2가지가 있음
TOCTOU( Time of Check to Time of Use )경쟁 조건
검사시점과 사용시점을 고려하지 않고 코딩하는 경우
- 검사 시점에 사용가능했던 데이터가 사용시점에 사용 불가능한 경우에 발생
- 프로세스가 가진 자원 정보와 실제 자원상태가 일치 하지 않는 경우 동기화 오류, 교착상태등 발생
- 코드 내에 동기화 구문을 사용해 자원에 한 프로세스만 접근토록
- 동기화는 성능감소를 일으키므로 필수적인 부분에만 필요
종료되지 않는 반복문 또는 재귀함수
종료조건을 정의하지 않거나 논리 구조상 종류될 수 없는 경우
- 종료되지 않아서 끊임없이 자원을 사용해 자원고갈로 시스템이 정지 및 종료됨
- 수행횟수 제한 설정추가, 종료조건 점검, 호출의 종료 여부 확인
에러처리
에러처리 미비로 인한 코딩이 유발하는 보안약점은 아래와 같이 3가지가 있음
오류 메시지를 통한 정보 노출
오류 발생으로 중요 정보를 메시지로 외부에 노출
- 예외의 이름이나 스택트레이스를 출력하면 해커가 내부구조를 파악하기 쉬워짐
- 오류 발생 시 가능한 한 내부에서만 처리되도록 하거나, 최소한의 정보/사전에 준비된 메시지만 출력되도록해 방지
오류 상황 대응 부재
예외처리를 안했거나 미비한경우
- 예외처리 구문 작성하고 제어문을 활용하여 코딩하여 방지
부적절한 예외처리
함수의 반환값 또는 오류들을 광범위하게 묶어 한번에 처리하거나 누락된 예외가 존재
- 모든 함수의 반환값이 의도대로 출력되는지 확인하고 세분화된 예외처리를 수행하여 방지
코드 오류
널 포인터 역참조:null pointer가 가르키는 메모리에 어떠한 값을 저장할 때
- 많은 라이브러리 함수들이 오류가 발생할 경우 널값을 반환, 이 반환 값을 포인터로 참조하는 경우
- 대부분의 운영체제에서 널 포인터는 메모리의 첫 주소를 가르킴, 해당 주소를 참조할 경우 소프트웨어가 비정상 종료
- 널 값을 갖고있는지 사전에 검사해 방지
- "메모리 0x00000000을 참조하였습니다" 라는 메시지가 뜸
부적절한 자원 해제
- 자원 반환 코드를 누락하거나 프로그램 오류로 할당된 자원을 반환하지 못했을 때
- Heap Memory, Socket 등의 유한한 시스템 자원이 계속 점유하고 있으면 자원부족으로 새로운 입력 처리 불가능
- 자원 반환 코드 누락여부 확인, 오류시 예외처리에 관계없이 자원 반환되도록 코딩하여 방지
해제된 자원 사용
- 반환된 메모리를 참조하는 경우 예상하지 못한 값 또는 코드를 수행하게 되어 의도치 않는 결과 반환
- 접근할 수 없도록 주소 저장하고 있는 포인터를 초기화
초기화되지 않은 변수 사용
- 해당 메모리에 이전에 사용하던 내용이 남아 외부에 노출될 수 있음
- 초기화하면 댐
다음글
2020/05/05 - [2020년도 상반기/정처기] - [2020 정보처리기사 실기]Section 09.소프트웨어 개발 보안 구축 #4
'2020년 > 정처기' 카테고리의 다른 글
[2020 정보처리기사 실기] Section 10. 응용 SW 기초 기술 활용(1/4) (0) 2020.05.07 [2020 정보처리기사 실기]Section 09.소프트웨어 개발 보안 구축 #4 (0) 2020.05.05 [2020 정보처리기사 실기] Section 09.소프트웨어 개발 보안 구축 #2 (0) 2020.05.05 [2020 정보처기기사 실기] Section 09. 소프트웨어 개발 보안 구축 #1 (0) 2020.05.05 [2020 정보처리기사 실기]Section 08.SQL응용(사용자 정의 함수, 커서) (0) 2020.04.29