일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 동적계획법
- DirectX12
- 프로그래머스
- 그리디 알고리즘
- I/O장치
- 멀티쓰레드
- 병행성
- 스케줄링
- 영속성
- 다이나믹 프로그래밍
- 컨디션 변수
- 렌더링 파이프라인
- DirectX 12
- directx
- 알고리즘
- 병행성 관련 오류
- 락
- 자료구조
- OS
- 파일시스템 구현
- 디자인패턴
- 다이나믹프로그래밍
- 백준
- 쓰레드
- 운영체제
- 타입 객체
- codility
- 그리디알고리즘
- Direct12
- 멀티프로세서
- Today
- Total
기록공간
5-3-7장. 코드 오류 - B 본문
코드 오류는 소프트웨어 구현 단계에서 개발자들이 코딩 중 실수하기 쉬운 형변환, 자원 반환 등의 오류를 예방하기 위한 보안 점검 항목들이다.
널 포인터(Null Pointer) 역참조
널 포인터가 가리키는 메모리에 어떤 값을 저장할 때 발생하는 보안 약점이다.
-
많은 라이브러리 함수들이 오류가 발생할 경우 널 값을 반환하는데, 이 반환값을 포인터로 참조하는 경우 발생한다.
-
대부분의 운영체제는 널 포인터는 메모리의 첫 주소를 가리키며, 해당 주소를 참조할 경우 소프트웨어가 비정상적으로 종료될 수 있다.
-
공격자가 널 포인터 역참조로 발생하는 예외 상황을 악용할 수 있다.
-
널이 될 수 있는 포인터를 이용하거 전에 널 값을 갖고 있는지 검사함으로써 방지할 수 있다.
부적절한 자원 해제
자원을 반환하는 코드를 누락하거나 프로그램 오류로 할당된 자원을 반환하지 못했을 때 발생하는 보안 약점이다.
-
힙 메모리(Heap Memory), 소켓(Socket) 등의 유한한 시스템 자원이 계속 점유하고 있으면 자원 부족으로 인해 새로운 입력을 처리하지 못 할 수 있다.
-
프로그램 내에 자원 반환 코드가 누락되었는지 확인하고, 오류로 인해 함수가 중간에 종료되었을 때 예외처리에 관계없이 자원이 반환되도록 코딩함으로써 방지 할 수 있다.
해제된 자원 사용
이미 사용이 종료되어 반환된 메모리를 참조하는 경우 발생하는 보안 약점이다.
-
반환된 메모리를 참조하는 경우 예상하지 못한 값 또는 코드를 수행하게 되어 의도하지 않은 결과가 발생할 수 있다.
-
반환된 메모리에 접근할 수 없도록 주소를 저장하고 있는 포인터를 초기화함으로써 방지할 수 있다.
초기화 되지 않은 변수 사용
변수 선언 후 값이 부여되지 않은 변수를 사용할 때 발생하는 보안 약점이다.
-
변수가 선언되어 메모리가 할당되면 해당 메모리에 이전에 사용하던 내용이 계속 남아있어 변수가 외부에 노출되는 경우 중요정보가 악용될 수 있다.
-
변수 선언 시 할당된 메모리를 초기화함으로써 방지할 수 있다.
'자격증공부 > 정보처리기사_필기' 카테고리의 다른 글
5-3-9장. API 오용 - C (0) | 2020.09.22 |
---|---|
5-3-8장. 캡슐화 - C (0) | 2020.09.22 |
5-3-6장. 에러처리 - B (0) | 2020.09.22 |
5-3-5장. 시간 및 상태 - C (0) | 2020.09.22 |
5-3-4장. 보안 기능 - B (0) | 2020.09.22 |