FlexDroid: 对Android第三方库进行权限限制的方法

来源:互联网 发布:mac vim 编辑 编辑:程序博客网 时间:2024/05/22 08:05

FlexDroid: 对Android第三方库进行权限限制的方法

FLEXDROID : Enforcing In-App Privilege Separation in Android, NDSS’16, 2016年2月[1]

http://daehyeok.com/papers/Flexdroid-NDSS16.pdf

第1章 背景

韩国KAIST与美国佐治亚理工大学的研究人员针对Android应用中第三方库滥用权限、影响用户隐私的问题,提出了一种安全隔离框架——FlexDroid。第三方库主要包括广告、分析、社交网络等类型。目前50%的免费App都具有第三方库。由于Andoird系统中第三方库与其所寄生的App是没有权限区别的,因此第三方库可以拥有App的所有权限,比较危险。而且第三方库通常使用很多Native代码(JNI)或者动态代码技术(如Java Reflection和动态类加载),这对第三方库的代码分析增加了难度。

FlexDroid可以让App开发者完全控制其调用的第三方库的权限,决定哪些权限授予或不授予,并且可以设置处理措施,如提供假的用户数据或者杀死进程。FlexDroid提出了进程间堆栈识别技术(inter-process stack inspection),能够识别当前运行的代码是第三方库还是App,从而控制不同的权限。该方法对JNI或者动态代码执行仍然有效。

第2章 贡献

  1. 本文通过对10000个实际Android应用的分析,有了新的发现:1)20个流行应用里,17个使用了未公开的权限。2)295个第三方库中,72%使用了动态代码执行技术(dynamic code execution)。3)295个第三方库中,17%使用了JNI技术。

  2. FlexDroid通过提供应用内特权隔离,扩展了Android的权限系统。FlexDroid并不限制开发者使用JNI或者Reflection技术,也不需要修改App源代码,只需要修改一下manifest文件。

  3. 在作者看来,FlexDroid是第一个采用了基于硬件错误隔离技术来隔离第三方库的工作。该技术基于ARM Domain,本文叙述了一些关于实现的相关经验。

FlexDroid的架构如下图所示:

第3章 对比

FlexDroid在Google Nexus 5手机上以及Android 4.4.4进行实验。

3.1 可用性

本文找了Google Play上App Annie列表首页的32个App,直接在FlexDroid手机上运行,5个应用崩溃。作者分析后发现问题在于JNI沙箱里的Pthread ID, mmap()和free()。应该是作者在工程实现上还有问题导致的。

3.2 性能

FlexDroid带来的性能开销为1.13-1.55%。

日常使用:

具体系统调用:

第4章 参考文献

[1] Seo J, Kim D, Cho D, et al. FLEXDROID: Enforcing In-App Privilege Separation in Android[J]. 2016.

0 0
原创粉丝点击