동적 심볼릭 실행 기반 힙 메모리 취약점 자동 탐지 방법 = Automated Method for Detecting Heap Memory Vulnerability Based on Dynamic Symbolic Execution
저자
발행사항
광주 : 전남대학교 대학원, 2019
학위논문사항
학위논문(박사)-- 전남대학교 대학원 : 정보보안협동과정 2019. 2
발행연도
2019
작성언어
한국어
주제어
DDC
005.8
발행국(도시)
광주
형태사항
141 ; 26 cm
일반주기명
지도교수: 노봉남
UCI식별코드
I804:24010-000000060201
소장기관
최근 소프트웨어 산업은 다양한 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) 또한 동반한다. 이 논문에서 제안한 힙 메모리 취약점 자동 탐지 방법은 정적 분석 기술과 동적 분석 기술을 결합함으로서 이러한 문제를 완화시킬 수 있었다. 정적 분석 결과를 바탕으로 잠재적 취약점 발생 위치를 명확하게 선정하고, 탐색 공간을 최소화했다. 이처럼 흥미로운 영역만을 탐색하도록 유도함으로써 경로 폭발 문제를 간접적으로 완화시키는 것이 가능함을 보였다.
Recently, the software industry has been expanding the use of software along with the development of various IT devices. In addition, as offline and off-line software is activated through domestic and overseas wired and wireless network infrastructures, convergence using software is rapidly progressing in various fields. While many benefits have been gained from using software in many areas of society, there are also many social issues arising from software vulnerabilities. Software vulnerabilities can be used to acquire or leak sensitive information by unauthorized access to the system to be protected when an individual or group with malicious intent is exploited. If necessary, Can be used to achieve the purpose. In other words, software vulnerabilities exist that can infringe on privacy of individuals and leak business information and confidential information of the state. Such software vulnerabilities can potentially create many social issues.
Representative dynamic analysis techniques for automatically detecting such software vulnerabilities are fuzzing and dynamic symbolic execution. Both techniques operate on a coverage basis and symbol implementations are devised to overcome the disadvantages of relatively low coverage purging. However, symbolic execution often involves path explosion problems in the path search, and it is difficult to navigate deep into the software to be tested due to these problems.
Static analysis techniques for automatic detection of vulnerabilities are mainly performed through pattern detection. Static analysis is faster than dynamic analysis, but relatively inaccurate. Many false positives are inevitable and do not create test cases, so additional validation is required.
In order to overcome the disadvantages of each technology and maximize its merits, hybrid analysis techniques combining various technologies are being studied.
In this paper, we propose a method that combines the advantages of static program analysis and dynamic symbolic execution for automatic detection of efficient software vulnerabilities (especially OOB in heap memory).
First, we select potential crash points based on static analysis. At this stage, the binary is converted to the intermediate language form, and the candidate points are minimized through modeling such as path-sensitive deterministic value checking and static backtracking slicing. In particular, we have solved problems such as indirect calls that may occur during static backtracking, thereby maximizing accuracy.
Second, a mutation region is determined for generating a symbolic file. Based on the input / output functions identified in the static analysis step, DBI (dynamic binary instrumentation) technology is applied to quickly and accurately identify the mutation region.
Third, dynamic symbolic execution is performed using the generated symbolic file. In this case, a binary-based memory sanity check technique is applied. Applying this technology not only detects heap memory related crashes, but also automatically creates test cases that generate crashes by creating and inserting constraints.
Conventional dynamic symbolic execution, while showing high coverage and accuracy, requires a lot of time and cost, and also accompanies path explosion. The automatic heap memory vulnerability detection method proposed in this paper can mitigate this problem by combining static analysis technique and dynamic analysis technique. Based on the results of the static analysis, the location of potential vulnerabilities was clearly selected and the search space was minimized. It is shown that it is possible to indirectly alleviate the problem of path explosion by inducing only such an interesting area to be searched.
서지정보 내보내기(Export)
닫기소장기관 정보
닫기권호소장정보
닫기오류접수
닫기오류 접수 확인
닫기음성서비스 신청
닫기음성서비스 신청 확인
닫기이용약관
닫기학술연구정보서비스 이용약관 (2017년 1월 1일 ~ 현재 적용)
학술연구정보서비스(이하 RISS)는 정보주체의 자유와 권리 보호를 위해 「개인정보 보호법」 및 관계 법령이 정한 바를 준수하여, 적법하게 개인정보를 처리하고 안전하게 관리하고 있습니다. 이에 「개인정보 보호법」 제30조에 따라 정보주체에게 개인정보 처리에 관한 절차 및 기준을 안내하고, 이와 관련한 고충을 신속하고 원활하게 처리할 수 있도록 하기 위하여 다음과 같이 개인정보 처리방침을 수립·공개합니다.
주요 개인정보 처리 표시(라벨링)
목 차
3년
또는 회원탈퇴시까지5년
(「전자상거래 등에서의 소비자보호에 관한3년
(「전자상거래 등에서의 소비자보호에 관한2년
이상(개인정보보호위원회 : 개인정보의 안전성 확보조치 기준)개인정보파일의 명칭 | 운영근거 / 처리목적 | 개인정보파일에 기록되는 개인정보의 항목 | 보유기간 | |
---|---|---|---|---|
학술연구정보서비스 이용자 가입정보 파일 | 한국교육학술정보원법 | 필수 | ID, 비밀번호, 성명, 생년월일, 신분(직업구분), 이메일, 소속분야, 웹진메일 수신동의 여부 | 3년 또는 탈퇴시 |
선택 | 소속기관명, 소속도서관명, 학과/부서명, 학번/직원번호, 휴대전화, 주소 |
구분 | 담당자 | 연락처 |
---|---|---|
KERIS 개인정보 보호책임자 | 정보보호본부 김태우 | - 이메일 : lsy@keris.or.kr - 전화번호 : 053-714-0439 - 팩스번호 : 053-714-0195 |
KERIS 개인정보 보호담당자 | 개인정보보호부 이상엽 | |
RISS 개인정보 보호책임자 | 대학학술본부 장금연 | - 이메일 : giltizen@keris.or.kr - 전화번호 : 053-714-0149 - 팩스번호 : 053-714-0194 |
RISS 개인정보 보호담당자 | 학술진흥부 길원진 |
자동로그아웃 안내
닫기인증오류 안내
닫기귀하께서는 휴면계정 전환 후 1년동안 회원정보 수집 및 이용에 대한
재동의를 하지 않으신 관계로 개인정보가 삭제되었습니다.
(참조 : RISS 이용약관 및 개인정보처리방침)
신규회원으로 가입하여 이용 부탁 드리며, 추가 문의는 고객센터로 연락 바랍니다.
- 기존 아이디 재사용 불가
휴면계정 안내
RISS는 [표준개인정보 보호지침]에 따라 2년을 주기로 개인정보 수집·이용에 관하여 (재)동의를 받고 있으며, (재)동의를 하지 않을 경우, 휴면계정으로 전환됩니다.
(※ 휴면계정은 원문이용 및 복사/대출 서비스를 이용할 수 없습니다.)
휴면계정으로 전환된 후 1년간 회원정보 수집·이용에 대한 재동의를 하지 않을 경우, RISS에서 자동탈퇴 및 개인정보가 삭제처리 됩니다.
고객센터 1599-3122
ARS번호+1번(회원가입 및 정보수정)