Bug Hunting (1) - Exploitable 취약점 분류
# Bug Hunting (1) - Exploitable 취약점 분류
취약점에는 다양한 종류가 있다.
똑같은 crash 가 발생하더라도, 해당 버그는 Exploit 할수도, 불가능 할수도 있다.
여기서 Exploit 이라 함은 코드 실행 흐름을 변경하여 원하는 코드를 실행할 수 있는, 즉 Code Execution 이 가능한가이다.
간단한 설명과 함께 분류해 보았다.
1. Memory Corruption
- 대표적인 Exploit 유형으로, 주로 잘못된 함수 사용 등에 의해 발생
1.1. Stack Buffer Overflow
- 스택상의 메모리 영역을 침범하여 덮어쓰는 유형의 버그
- 공격기법 : Direct EIP Overwrite, SEH Overwrite, ECX one byte Overflow, RTL(Return To Library), Fake EBP, Fake ESP, ROP
- 방어기법 : Stack Guard, Stack Cookie, DEP/NX, ASLR
1.2. Heap Buffer Overflow
- 힙 메모리 영역을 침범하여 덮어쓰는 유형의 버그
- 공격기법 : VFT Overwrite(Virtual Function Table Overwrite), Function Pointer Overwrite
1.3. Format String Bug
- 포맷 스트링을 사용하지 않은 잘못된 함수 사용으로 인하여 %n 등으로 특정 주소값을 덮어씌우는 공격기법
- 공격기법 : dtors Ovewrite, Got Overwrite, RET Overwrite
1.4. Use-After-Free
- Free 로 해제된 객체, 포인터를 사용하는 경우 발생하는 버그로, 최근 많이 발견되는 유형 중 한가지이다.(특히 웹브라우저)
- 공격기법 : Heap Spray -> 정밀 Heap Spray, DEPS(엘리멘탈 속성 spray), JIT Spray 등
1.5. Double Free
- free() 로 이미 해제된 메모리를 한번 더 해제하려 할때 발생하는 버그
1.6. Integer Overflow
- 자료형마다의 경계값(최대,최소값) 차이점 등에 의해 발생하는 버그
'Bug Hunting' 카테고리의 다른 글
ActiveX 메소드 powershell 로 확인하기 (0) | 2017.05.25 |
---|---|
[집필 서적 안내] 윈도우 시스템 해킹 가이드 : 버그헌팅과 익스플로잇 (9) | 2016.01.13 |
Fuzzer 구현 시 First-chance Exception과 Second-chance Exception (0) | 2016.01.07 |