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

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Casbin开源社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值