背景
- 出处: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的目的就是一种新的权限系统,其可以在程序运行时动态调整权限达到对第三方库权限的细粒度控制。其工作过程如下:
- app开发者在manifest文件中指定各模块需要的permission;
- app运行过程中,需要请求权限时,FLEXDROID查看此次执行的上下文环境(当前模块调用链,从Dalvik调用栈中获得);
- FLEXDROID根据调用链上之前指定模块的permission判断是否放权限。
具体上,FLEXDROID创建了一个单线程,叫做stack tracer,用来将Dalvik调用栈的信息传到权限检查系统。为了避免可能有第三方lib假冒stack tracer,FLEXDROID提供了一个安全通信频道,app初始化的同时stack tracer就向安全通信频道注册自己。
为了解决恶意lib通过JNI修改Dalvik数据内存,设计了app内部的内存保护机制,在这里使用了Hardware Fault Isolation。
动态代码执行可能让各个模块之间的边界变得十分模糊,同样设计了来避免这点,具体没细看。
实现
修改了安卓内核,linux内核等,共12300行代码。
实验
本文实验部分较为简单,主要测试了FLEXDROID的兼容性,有效性和对安卓系统的性能影响。
总结
优点
技术性强,貌似是个有用的东西。
不足
实验应用部分可再多些内容。
我的想法
这种方法可作为一种实践方式提出。