유저 프로그램의 메모리 맵 데이터 접근 동작의 결정적 재현
- Title
- 유저 프로그램의 메모리 맵 데이터 접근 동작의 결정적 재현
- Other Titles
- Deterministic Replay of Memory-mapped Data Access for User Programs
- Author
- 류준호
- Alternative Author(s)
- RYU JUNHO
- Advisor(s)
- 유민수
- Issue Date
- 2019-02
- Publisher
- 한양대학교
- Degree
- Master
- Abstract
- 소프트웨어의 크기와 규모가 커짐에 따라 버그의 발생도 잦아지고 있다. 특히, 특정 상황과 조건을 만족해야 발생하는 버그는 해당 상황과 발생 조건을 정확히 알지 않는 한 동일한 버그를 다시 발생시키는 것은 어렵다 [1]. 비결정적 버그를 재현하기 위해 비결정적 요소를 커널에서 탐지할 수 있다는 것이 증명되었다 [6-7].
비결정적 요소 중 메모리에 사상된 외부 데이터들은 유저 프로그램의 동작에 영향을 미치는 중요한 요소 중 하나이다. 일반적으로, 시스템 콜 함수를 통해 커널이 외부 데이터를 받아 유저 프로그램에 전달하므로 커널에서 기록 및 재현을 할 수 있다. 반면에, 메모리 맵 함수는 커널에 메모리 접근 권한을 요청하고 비결정적 요소인 외부 데이터에 직접 접근한다. 따라서, 커널에서 유저 프로그램이 외부 데이터에 접근하는 것을 탐지할 수 없다.
본 논문에서는 ARM에서 제공하는 메모리 보호 기법과 breakpoint 이벤트를 이용하여 메모리 맵 데이터를 커널 레이어에서 기록 및 재현 방법을 제시한다. ARM에서 제공하는 메모리 보호 기법과 breakpoint 이벤트를 이용하여 메모리 맵 데이터의 기록 및 재현을 구현하였다. 메모리 보호 기법은 유저 프로그램이 메모리에 접근 권한을 조정함으로써 커널에서 프로그램의 메모리 접근을 탐지할 수 있도록 한다. 유저 프로그램의 다음 메모리 접근을 커널에서 탐지할 수 있도록 breakpoint 기능을 이용하여 메모리 접근 권한을 재설정한다.
주요 기록 오버헤드는 두 가지로 나눌 수 있다. 유저 프로그램이 메모리 영역에 접근할 때마다 발생하는 DABT, PABT와 디스크와 같은 영구 저장장치로 보낼 때 발생하는 오버헤드이다. Samsung Arndale Exynos 5250 보드와 리눅스 운영체제 환경에서 메모리 맵 기록 및 재현을 구현하였다. 기록 및 재현이 적용된 메모리 맵 함수는 기존 메모리 맵 함수와 비교하면 데이터의 양에 따라 0.015~0.05초의 오버헤드가 발생한다.
메모리 맵 데이터의 커널 레이어 기록 및 재현 기법은 향후 소프트웨어 개발자들이 디버깅할 때, 기록 및 재현 기법을 통하여 버그를 재생산하여 디버깅을 도울 수 있다. GNU GDB와 같은 디버거를 같이 사용함으로써 개발자들의 디버깅 시간과 비용을 줄일 수 있다.
- URI
- https://repository.hanyang.ac.kr/handle/20.500.11754/99755http://hanyang.dcollection.net/common/orgView/200000435205
- Appears in Collections:
- GRADUATE SCHOOL[S](대학원) > INFORMATION SECURITY(정보보안학과) > Theses (Master)
- Files in This Item:
There are no files associated with this item.
- Export
- RIS (EndNote)
- XLS (Excel)
- XML