FLEXDROID: Enforcing In-App Privilege Separation in Android

背景

  • 出处:NDSS ’16, 21-24 February 2016, San Diego, CA, USA
  • 作者:Jaebaek Seo�, Daehyeok Kim�, Donghyun Cho�, Taesoo Kimy, Insik Shin�z

概述

论文主要观点

提出并实现了一种新型安卓权限控制机制,可根据Dalvik中的调用栈信息动态调整app的各个模块的权限。

成果

  • 研究了10万安卓软件和20个流行的第三方库报告了一些新发现,这些发现主要都是第三方库大多利用动态代码执行,反射等java技术,JNI等;
  • FLEXDROID通过app内部的权限分离扩展了原有的安卓权限系统,且应用FLEXDROID到app上较为简单;
  • FLEXDROID是第一个基于硬件的故障隔离的系统,就是利用ARM域去隔离了app中的第三方lib。

方法模型

基本工作图

设计

FLEXDROID的目的就是一种新的权限系统,其可以在程序运行时动态调整权限达到对第三方库权限的细粒度控制。其工作过程如下:

  1. app开发者在manifest文件中指定各模块需要的permission;
  2. app运行过程中,需要请求权限时,FLEXDROID查看此次执行的上下文环境(当前模块调用链,从Dalvik调用栈中获得);
  3. FLEXDROID根据调用链上之前指定模块的permission判断是否放权限。

具体上,FLEXDROID创建了一个单线程,叫做stack tracer,用来将Dalvik调用栈的信息传到权限检查系统。为了避免可能有第三方lib假冒stack tracer,FLEXDROID提供了一个安全通信频道,app初始化的同时stack tracer就向安全通信频道注册自己。
为了解决恶意lib通过JNI修改Dalvik数据内存,设计了app内部的内存保护机制,在这里使用了Hardware Fault Isolation。
动态代码执行可能让各个模块之间的边界变得十分模糊,同样设计了来避免这点,具体没细看。

实现

修改了安卓内核,linux内核等,共12300行代码。


实验

本文实验部分较为简单,主要测试了FLEXDROID的兼容性,有效性和对安卓系统的性能影响。

总结

优点

技术性强,貌似是个有用的东西。

不足

实验应用部分可再多些内容。

我的想法

这种方法可作为一种实践方式提出。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,041评论 25 709
  • 第一个:互动百科,虚假信息,收费入驻各种无厘头词条。 第二个:虚假体检。盗用信息。 第三个:滥用饲料添加剂。硫酸新...
    全名666阅读 2,435评论 0 1
  • 家里人谈起我小时候,都笑称我是万人嫌。 我父母都是民办教师,家里还有几亩农田。一年365天,200天在学校里教书育...
    刘阿久_阅读 3,251评论 0 1