메뉴 건너뛰기
.. 내서재 .. 알림
소속 기관/학교 인증
인증하면 논문, 학술자료 등을  무료로 열람할 수 있어요.
한국대학교, 누리자동차, 시립도서관 등 나의 기관을 확인해보세요
(국내 대학 90% 이상 구독 중)
로그인 회원가입 고객센터 ENG
주제분류

추천
검색

논문 기본 정보

자료유형
학위논문
저자정보

강상용 (전남대학교, 전남대학교 대학원)

지도교수
노봉남
발행연도
2019
저작권
전남대학교 논문은 저작권에 의해 보호받습니다.

이용수4

표지
AI에게 요청하기
추천
검색

이 논문의 연구 히스토리 (4)

초록· 키워드

오류제보하기
최근 소프트웨어 산업은 다양한 IT 기기의 발달과 함께 소프트웨어의 활용 영역이 확장되어 왔다. 또한 국내외 유무선 네트워크 인프라를 통해 온오프라인 소프트웨어가 활성화됨에 따라 다양한 분야에서 소프트웨어를 이용한 융복합화가 빠르게 진행되고 있다. 이처럼 사회의 여러 분야에서 소프트웨어를 활용함으로써 많은 이득을 얻게 되었지만, 동시에 소프트웨어 취약성으로 인한 많은 사회적 이슈들이 발생하고 있다. 소프트웨어 취약성은 악의적인 목적을 가진 개인 또는 집단이 악용할 경우, 보호되어야 할 시스템에 비인가적으로 접근하여 기밀 정보를 취득하거나 유출시킬 수 있고, 필요에 따라서는 대상 시스템의 관리자 권한을 획득하여 악의적인 목적을 달성하는 데 이용될 수 있다. 즉, 소프트웨어 취약성은 개인의 사생활 침해와 기업 및 국가의 기밀 정보 유출 가능성이 존재한다. 이처럼 소프트웨어 취약성은 잠재적으로 많은 사회적 이슈를 발생시킬 수 있다.
이러한 소프트웨어 취약점을 자동으로 탐지하기 위한 대표적인 동적 분석 기술은 퍼징(fuzzing)과 동적 기호 실행(dynamic symbolic execution)이다. 두 기법 모두 커버리지 기반으로 동작하며, 상대적으로 낮은 커버리지를 보이는 퍼징의 단점을 극복하기 위해 기호 실행이 고안되었다. 하지만 기호 실행은 경로를 탐색하는 과정에서 종종 경로 폭발 문제가 발생하며, 이러한 문제 때문에 테스팅 대상 소프트웨어의 깊은 곳까지의 탐색이 어렵다.
취약점 자동 탐지를 위한 정적 분석 기술은 주로 패턴 탐지를 통해 이루어진다. 정적 분석은 동적 분석에 비해 빠른 속도를 보이지만, 상대적으로 정확성이 낮다. 많은 오탐(false positive)이 필연적으로 발생하며, 테스트케이스를 생성해주지 않기 때문에 추가적인 검증이 필요하다.
이와 같이 각각의 기술들이 가진 단점을 극복하고, 장점을 극대화시키기 위해 최근에는 여러 기술들을 결합한 복합 분석(hybrid analysis) 기법들이 연구되고 있다.
이 논문에서는 효율적인 소프트웨어 취약점(특히, 힙 메모리에서 발생하는 OOB) 자동 탐지를 위해 정적 분석 기술(static program analysis)과 동적 기호 실행(dynamic symbolic execution)의 장점을 결합한 방법을 제안한다.

먼저, 정적 분석을 기반으로 잠재적 크래시 발생 지점을 선정한다. 이 단계에서 바이너리를 중간 언어 형태로 변환하고, 경로에 민감한 결정적인 값 검사 및 정적 역추적 프로그램 슬라이싱 등의 모델링을 통해 후보 지점을 최소화한다. 특히, 정적 역추적 과정에서 발생할 수 있는 간접 호출 등의 문제를 해결하여 정확성을 극대화했다.
두 번째로, 심볼릭 파일 생성을 위해 뮤테이션(mutation) 영역을 결정한다. 정적 분석 단계에서 식별한 입출력 함수를 바탕으로 DBI(dynamic binary instrumentation) 기술을 적용하여 빠르고 정확하게 뮤테이션 영역을 식별한다.
세 번째로, 생성된 심볼릭 파일을 이용한 동적 심볼릭 실행(dynamic symbolic execution)을 수행한다. 이 때, 바이너리 기반의 메모리 새너티 검사(memory sanity check) 기술을 적용한다. 해당 기술을 적용함으로써 힙 메모리 관련 크래시를 탐지했을 뿐만 아니라, 제약 조건을 생성 및 삽입하여 크래시가 발생하는 테스트케이스를 자동으로 생성했다.
기존의 동적 심볼릭 실행(dynamic symbolic execution)은 높은 커버리지와 정확도를 보이는 반면, 많은 시간과 비용을 필요로 하며, 경로 폭발 문제(path explosion) 또한 동반한다. 이 논문에서 제안한 힙 메모리 취약점 자동 탐지 방법은 정적 분석 기술과 동적 분석 기술을 결합함으로서 이러한 문제를 완화시킬 수 있었다. 정적 분석 결과를 바탕으로 잠재적 취약점 발생 위치를 명확하게 선정하고, 탐색 공간을 최소화했다. 이처럼 흥미로운 영역만을 탐색하도록 유도함으로써 경로 폭발 문제를 간접적으로 완화시키는 것이 가능함을 보였다.

목차

차 례 i
표 차 례 iv
그 림 차 례 v
국 문 초 록 ix
1. 서론 1
가. 연구의 필요성 1
나. 기존 연구의 한계점 2
1) 취약점 자동 탐지를 위한 기존 연구 2
2) 기존 연구의 한계점 3
다. 연구 목적 6
1) 예비 분석 7
2) 심볼릭 파일 생성 7
3) 새너티 검사를 활용한 유도된 기호 실행 7
라. 논문의 기여 8
1) 정적 모델링을 통한 잠재적 취약점 발생 지점 색출 8
2) 역추적 정적 프로그램 슬라이싱을 통한 입출력 함수 리스팅 8
3) 효율적인 뮤테이션 영역 추출 9
4) 새너티 검사를 활용한 바이너리 기반 크래시 탐지 9
마. 논문의 구성 10
2. 관련 연구 11
가. 동적 심볼릭 실행(dynamic symbolic execution) 11
1) 개요 11
2) S2E 12
3) Angr 15
나. 새너티 검사(sanity check) 30
1) 개요 30
2) Asan(Google Address Sanitizer) 30
3) 문제점 및 한계점 36
다. 복합 프로그램 분석 기법(hybrid program analysis) 37
1) 개요 37
2) Driller 37
3) BORG 39
3. 동적 심볼릭 실행을 이용한 힙 메모리 취약점 자동 탐지 방법 42
가. 예비 분석 42
1) 개요 42
2) 취약한 데이터 전달 함수 식별 44
3) Modeling 1: 결정적인 값 제거 45
4) Modeling 2: 역방향 정적 프로그램 슬라이싱 48
5) Modeling 3: 제약된 파라미터 제거 74
나. 동적 분석 기반 심볼릭 도메인 선정 77
1) 개요 77
2) 입력 파일 속성 검출을 통한 심볼릭 도메인 선정 78
3) 시스템 콜 후킹을 통한 심볼릭 도메인 선정 86
다. 새너티 테스팅 기반 동적 심볼릭 수행 90
1) 힙 메모리 취약점 탐지를 위한 동적 새너티 검사 적용 방법 90
2) 구현 94
3) 동적 심볼릭 수행(dynamic symbolic execution) 98
4. 실험 및 결과 102
가. 개요 102
나. 실험 내용 104
1) CVE-2014-0160(OpenSSL 1.0.1f Heart Bleed) 104
2) CGC Binary(CWE-122) 110
3) CVE-2016-2385 117
5. 결론 및 향후 연구 120
가. 결론 120
나. 향후 연구 121
참 고 문 헌 122
영 문 초 록 125

최근 본 자료

전체보기

댓글(0)

0