论文部分内容阅读
第三方类库被广泛使用在Android应用开发中,第三方类库的使用可以简化、加速应用的开发过程,提供一些新的特性或功能,或者增加开发者的收入。第三方类库带来这些方便的同时,也带来了一些安全隐患。首先,第三方类库和宿主应用享有一样的权限,导致第三方类库过度特权化,第三方类库可能滥用宿主应用的权限,导致用户隐私泄漏。其次,第三方类库和宿主应用共享同一个内部文件空间,宿主应用的所有文件都暴露给第三方类库,第三方类库可能会恶意操作或者窃取宿主应用的文件数据,导致隐私泄漏;另外,Android文件访问控制太粗粒度,申请文件访问权限后可以访问所有类型的文件。为了解决这些问题,国内外的研究学者提出了大量的方案,但是这些方案需要修改Android框架或者对Android应用程序进行重打包,并不能广泛应用于实践。 针对Android第三方类库的使用带来的上述两个问题,本文提出了一个开发者工具,Android应用开发者可以使用该工具来限制第三方类库运行时的权限和文件访问,能有效地保护用户的隐私。具体来说,我们做了以下工作: 1.本文提出一种隔离第三方类库运行时权限的方案。基于系统调用拦截,我们将第三方类库的敏感调用重定向到我们的代理方法或函数上,对非法的访问进行拦截,在该方案下,开发者可以向第三方类库赋予不同的权限集合,第三方类库只能使用该权限集合中的权限。 2.本文提出一种第三方类库细粒度的文件访问控制方案。对于内部文件空间,给每个第三方类库分配一个隔离的内部文件空间,其只能访问该空间内的文件;对于外部文件空间,我们引入新的文件类型权限,被授予某个文件类型权限的类库,只能访问该类型的文件,对第三方类库实行细粒度的文件访问控制。 3.本文实现了方案的原型——一个开发者工具,开发者可以使用其来隔离第三方类库的权限和实施细粒度的文件访问控制,该工具适用于 Java类库和本地类库,并且不依赖于任何的Android框架或者应用/类库的字节码修改,也不需要root权限,可以得到大范围应用。此外,我们的工具还适用于一些代码的非正常调用,比如Java反射和动态代码加载等。 4.本文系统地从兼容性、有效性、性能开销等方面评估了该工具,测试结果表明该工具能有效地对任意第三方类库实施不同的安全策略,同时带来合理的性能开销。此外,我们探讨了一些可能的攻击,并介绍了如何抵御这些攻击。