표제지
목차
논문요약 12
제1장 서론 13
1.1. 연구배경 13
1.2. 연구 필요성 15
제2장 관련 연구 17
2.1. 안드로이드 네이티브 라이브러리 디버깅 17
2.1.1. GDB(GNU Project Debugger) 17
2.1.2. FRIDA 22
2.2. 안드로이드 네이티브 라이브러리 상의 Heap 취약점 25
2.2.1. JNI(Java Native Interface) 25
2.2.2. Android Heap Allocator(jemalloc) 28
2.2.3. tcache와 Double free 취약점 29
제3장 설계 및 구현 32
3.1. 개요 32
3.2. 디버깅 성능 향상 방안 34
3.2.1. 설계 34
3.2.2. 구현 35
3.3. Double free 취약점 식별 36
3.3.1. 설계 36
3.3.2. 구현 37
제4장 성능 평가 41
4.1. 디버깅 성능 검증 41
4.2. Double free 식별 검증 43
4.3. 확장성 45
제5장 결론 47
참고문헌 49
ABSTRACT 51
표 1-1. 안드로이드 CVE 취약점 14
그림 1-1. JNI 동작 구조 15
그림 2-1. 테스트 실행 프로그램 소스코드 18
그림 2-2. GDB 기능 19
그림 2-3. 힙(Heap) 메모리 분석 기능 20
그림 2-4. 힙(Heap) 추적 기능 20
그림 2-5. FRIDA 콜 스택 기능 23
그림 2-6. FRIDA 로드된 모듈 출력 기능 24
그림 2-7. Java Side 소스코드 26
그림 2-8. C/C++ Side 소스코드 26
그림 2-9. JNI 함수 호출 결과 27
그림 2-10. tcache stack 동작 30
그림 2-11. Double free 취약점 발생 시 tcache stack 31
그림 3-1. Double free 취약점 자동화 식별 솔루션 구조 32
그림 3-2. 모듈 필터링 기능 35
그림 3-3. malloc 함수 모니터링 37
그림 3-4. free 함수 모니터링 37
그림 3-5. 메모리 해제 리스트 관리 38
그림 3-6. 메모리 해제 리스트를 통한 Double free 취약점 식별 39
그림 4-1. GDB 성능측정 결과 41
그림 4-2. 자동화 솔루션 성능측정 결과 42
그림 4-3. Double free 취약점 테스트 코드 43
그림 4-4. Double free 취약점 자동화 식별 솔루션 결과 44
그림 4-5. 자동화 솔루션(리눅스) 45
그림 4-6. 자동화 솔루션(윈도우즈) 46