CyberRanger

메모리 구조와 시스템 취약점 본문

정보보안기사/시스템 보안

메모리 구조와 시스템 취약점

CyberRanger 2024. 8. 6. 17:18

알려진 취약점 종류

CVE 알려진 취약점
CWE 소스코드 취약점
CCE 시스템 취약점
CVSS 취약점 위험도

 

 


1. 메모리 구조

· 프로그램이 메모리에 로드되며 프로그램이 실행됨.

높은 주소




















낮은 주소
스택영역 - 지역변수 (함수 내 사용)
- 함수 복귀주소
- 함수 매개변수(Parameter)
힙 영역 - 메모리 동적 할당
- new, malloc 사용 시 힙 영역에 할당됨.
- 동적 할당 메모리는 free() 함수로 해제해야 함.
데이터 영역 - 전역 변수
- 정적(Static) 변수
- 데이터 영역에 변수가 선언되면 자동으로 초기화 됨.
텍스트 영역 - 프로그램 코드
- 읽기만 가능한 메모리 영역

 

 

· 스택 영역은 높은 주소에서 낮은 주소로 할당.

 

· 힙 영역은 낮은 주소에서 높은 주소로 할당.

 

· 두 주소가 서로 경계를 넘으면 overflow 발생(segment fault)

 

 

 


2. 시스템 취약점

 

2.1. 버퍼 오버플로우

 

2.1.1. 개념

· 프로세스가 사용 가능한 메모리 공간을 초과해서 발생하는 취약점.

· C, C++ 개발 시, 메모리 공간에 제한을 두지 는 API 사용 시 발생.

· 스택 영역에서 발생하는 버퍼 오버플로우를 스택 오버플로우, 힙 영역에서는 힙 오버플로우라고 함.

 

2.1.2. 대응 방법

· 문자열의 길이를 제한하는 함수 사용: strncat(), strncpy(), fgets(), vfscanf(), vsnprintf()

· ASLR(Address Space Layout Randomization) 설정: 실행파일이 메모리에 로드될 때의 기본주소를 동적으로 할당.

[Linux ASLR 설정]

sysctl -w kernel.randomize_va_space=2

 

- 0: ASLR 해제

- 1: 스택 영역만 동적 할당

- 2: 스택 + 힙 영역 동적 할당

 

· Stack Guard: 스택 프레임의 손상 확인

· Stack Shield: 함수의 복귀주소를 반환 시의 값과 비교

· NOP Sled(No Operation) 공격 여부 확인

 

 

 

2.2. Heap Spray

2.2.1. 개념

· 짧은 기계어 코드인 Shellcode를 힙 영역에 뿌려 실행시키는 공격 기법.

 

2.2.2. 대응 방법

· DEP(Data Execution Prevention, 데이터 실행 방지): 특정 메모리 영역을 비실행으로 설정하여 익스플로잇이 실행되지 못하게 한다.

 

 

 

2.3. 윈도우 DDE 취약점

2.3.1. 개념

· DDE(Dynamic Data Exchange)

· 윈도우 애플리케이션 간에 데이터를 전송하기 위한 프로토콜.

· 공유 메모리를 사용해서 데이터 공유.

· MS Word, Excel 같은 문서 프로그램에서 발생.

 

2.3.2. 대응 방법

· MS Word의 경우 문서를 열 때 자동 연결 업데이트 해제

· 엑셀 프로그램의 경우 DDE를 사용하는 다른 응용 프로그램 무시

 

 

2.4. 경쟁조건(Race Condition)

2.4.1. 개념

· 다중 프로세스 환경에서 두 개 이상의 프로세스가 동시에 공유자원에 접근하려 할 때 발생되는 비정상적인 상태.

· 경쟁조건을 이용한 공격을 하기 위해서 먼저 백도어를 만들어야 함.