The number of malicious applications that attempt to exfiltrate users` privacy information has increased with the rapid growth in the usage of mobile applications. To protect privacy information from untrusted apps, runtime monitoring approaches have been suggested for monitoring apps` behavior and enforcing policies corresponding to the behavior. In general, according to the location of the monitoring code and intercepting code, these approaches can be classified into two categories: framework-hardening and app-repackaging. However, both types of approaches suffer from fundamental problems that impede their wide deployment. On the one hand, framework-hardening approaches require OS modification, which suffers from the fragmentation and usability problems, and on the other hand, app-repackaging approaches require app modification, which suffers from problems related to dynamically loaded code and breaching of the signature.
In this thesis, we present a widely deployable policy enforcement system called SeEnclosure, which can selectively adopt an untrusted app at runtime to prevent leakage of privacy data without any modification of the Android OS and apps being required. By exploiting an Android property, SeEnclosure can interpose the code of apps and enforce policies. We show that SeEnclosure is portable for various versions of the Android OS installed on two devices and does not impose repackaging problems, whereas existing approaches do not provide both of these advantages. We evaluated the portability of SeEnclosure on Nexus 7 2012 with Android OS versions from 4.1.2 to 4.4.2 and Galaxy Note 3 with Android OS 4.4.2, with a 3.5% runtime performance overhead, and the compatibility using the top 16 apps in the Android market. Through experiments using our synthetic apps, we also confirm that SeEnclosure does not cause any repackaging problems.
스마트폰의 등장과 더불어, 스마트폰중의 하나인 안드로이드에서, 악성코드들의 개인정보 훔치기 뿐만아니라 일반 앱들의 무단 개인정보 사용이 많은 이슈가 되고 있다. 이는 안드로이드의 coarse-grained한 퍼미션 시스템에서 기인되는 문제로, 이를 해결하고자 많은 학자들이 연구를 하였다. 이러한 연구들은 크게 2가지로 분류가 되는데, 안드로이드 OS 자체를 수정하는 방식과, 안드로이드 어플리케이션을 리패키징하여 코드를 수정하는 방식이 존재한다. 이들 방식에는 현재의 안드로이드 시스템에 적용하기 힘들다는 문제가 있는데, 전자의 경우에는 디바이스의 파편화에 따른 OS수정이 어렵다는 문제와, 후자의 경우에는 코드의 난독화에 따른 코드 수정의 어려움, 앱의 서명파괴 문제가 존재한다. 이러한 문제들을 해결 하기 위해서, 우리의 시스템인 SeEnclosure는 OS수정과 리패키징을 하지 않고, 단지 네이티브 레벨의 어플리케이션을 설치함으로써, 안드로이드 앱의 행위를 분석하고 로그를 남기며 설정에 따라 이를 차단도 가능하도록 fine-grained한 퍼미션 시스템을 제공한다.
SeEnclosure는 UI를 담당하는 SE-Manager, 모니터링을 하도록 안드로이드를 설정 해주는 SE-Daemon, 실제로 모니터링을 하는 라이브러리인 SE-Monitor로 구성되어 있으며, 이들 컴퍼넌트들의 유기적인 통신을 통해 SeEnclosure는 안드로이드의 앱을 모니터링 하게 되며, 모니터링을 통해 파일보호, 안드로이드 서비스 보호, 네트워크 보호, 파일 실행 보호 기능을 제공하고 있다. 또한, 여러가지 실험을 통하여, SeEnclosure는 기존의 연구들이 가지고 있는 문제들을 해결하였음을 보여주었으며, SeEnclosure를 적용한 앱의 실행시간 지연 문제가 있지만 이는 초기 실행시에만 걸리는 문제이고 전체적인 앱의 성능 문제는 거희 없음을 보여주었다.