一种Android第三方类库权限隔离方法及装置制造方法及图纸

技术编号:14690848 阅读:52 留言:0更新日期:2017-02-23 13:26
本发明专利技术涉及一种Android第三方类库权限隔离方法及装置。该方法包括:配置应用的权限信息,使用到的第三方类库信息及赋予第三方类库的权限;在应用启动的时候,对敏感方法或函数进行替换,将其调用重定向到代理方法或函数上;得到敏感方法或函数的调用者,然后判断此次调用是否合法,若合法,就回调原方法或函数,否则阻止此次调用。该装置包括拦截模块、控制模块、检查模块和权限文件。上述Android第三方类库权限隔离方法及装置能够有效地隔离Android第三方类库和宿主应用运行时的权限,使得第三方类库无法使用宿主应用的权限。

【技术实现步骤摘要】

本专利技术属于系统安全
,涉及一种第三方类库权限隔离方法及装置,特别涉及一种Android第三方类库权限隔离方法及装置
技术介绍
Android第三方类库大范围被使用于Android应用开发过程中,以简化、加速程序的开发过程,提供一些更好的性能或者额外的功能等。然而,不同于系统类库,第三方类库的安全性无法得到保证。开发者在使用第三方类库时,往往侧重于其提供了什么功能,而忽略了其安全性。由于Android权限是在应用层面上授予的,当一个包括第三方类库的Android应用安装后,宿主应用和其使用到的第三方类库将共享所有权限,包括那些不属于第三方应用的权限,造成了第三方类库的过度特权化。第三方类库可能滥用宿主应用的权限,导致用户隐私泄漏等安全问题。目前,很多工作提出了第三方类库的权限隔离方案,使得第三方类库和宿主应用不共享权限,防止第三方类库恶意使用不属于自己的权限。其中一部分工作是基于进程隔离实现的。这些工作将包含有第三方类库的应用分离成两个进程,一个进程运行应用,另一个进程运行第三方类库,两个进程都拥有自己的权限,而且相互之间不共享权限。另一部分工作是基于扩展Android系统实现的。这些工作在Android权限检查的时候加入自己的逻辑,当有敏感系统调用的时候,判断该调用是宿主应用还是第三方类库,如果是第三方类库,就判断该第三方类库是否有权限执行此次调用,若没有权限,就阻止此次调用。然而这些工作要么修改了应用安装包,要么修改了Android框架,并不能得以大范围使用。因此,有必要设计出一种Android第三方类库权限隔离方法及装置,在不需要修改系统及程序(类库)代码的情况下,限制第三方类库运行时使用的权限,使其不能使用不属于自己的权限。
技术实现思路
鉴于以上问题,本专利技术的目的是提供一种第三方类库权限隔离方法及装置,以限制第三方类库运行时的权限,开发者可以赋予每个类库一个不同的权限集合,类库只能使用该权限集的权限,其他权限则不能使用。该方法及装置适用于所有的第三方Java类库和本地类库。为达到以上目的,本专利技术公开了一种Android第三方类库权限隔离方法,包括:1)配置权限信息,包括应用申请的危险权限,应用使用到的第三方类库信息,以及赋予第三方类库的权限;2)拦截第三方类库的敏感系统调用,将其重定向到代理方法或函数上;3)获得当前代理方法或函数的调用者,并判断此次调用是否合法;4)若合法,则回调原方法或函数,否则,阻止此次调用。可选的,步骤1)所述的危险权限指的是可能泄露用户隐私的权限,包括读取日历事件、编辑日历事件、录制视频或拍照、读取联系人、编辑联系人、得到位置信息、录制音频、获取电话状态、访问通话记录、编辑通话记录、发送短信、编辑短信、读取短信、读取文件、编辑文件等权限。进一步地,步骤1)所述第三方类库信息包括:第三方类库的Java部分的包名,本地类库的文件名。进一步地,步骤2)所述的敏感系统调用是指敏感方法或函数的调用;所述的敏感方法或者函数是指与危险权限相关的Android框架层方法或本地函数。进一步地,步骤2)对于每个敏感方法或函数,都构造一个相应的代理方法或函数。进一步地,步骤2)采用系统调用拦截方式,将第三方类库的敏感方法或函数的调用重定向到代理方法或函数上。进一步地,步骤2)只拦截目标应用申请的危险权限对应的敏感方法或函数的调用。进一步地,步骤3)获取敏感方法或函数的调用者的方式为:利用Android的方法或函数调用堆栈,得到敏感方法或函数的调用者。进一步地,步骤4)阻止方法或函数调用的方式为:若该方法或函数没有返回值,则代理方法或函数直接返回,若存在返回值,则代理方法或函数返回一个假数据。本专利技术还公开了一种Android第三方类库权限隔离装置,包括:拦截模块,用于拦截第三方类库的敏感系统调用,并将调用重定向到代理方法或函数;控制模块,用于处理重定向的方法或函数调用,其会询问检查模块此次调用是否合法,若合法,其会回调原方法或函数,若不合法,则其会阻止此次调用;检查模块,用于检查某个第三方类库是否有权限调用某个方法或函数,其根据权限文件来判断;权限文件,用于列举应用申请的权限、使用到的第三方类库信息和赋给每个第三方类库的权限集合。进一步地,所述控制模块包含敏感方法或函数的代理方法或函数,用来接收重定向的方法或函数调用。进一步地,所述拦截模块在应用程序刚启动的时候就将目标敏感方法或函数替换成对应的代理方法或函数,所述拦截模块将敏感方法或函数的调用重定向到控制模块的代理方法或函数上。进一步地,所述拦截模块根据所述权限文件列举的危险权限,拦截相应的方法或函数调用。进一步地,权限文件列举了应用申请的危险权限、第三方类库的Java部分的包名、本地类库的文件名和赋予的权限信息。进一步地,所述控制模块根据Android方法或函数的调用堆栈获得当前方法或者函数的调用者。进一步地,所述控制模块询问检查模块某类库的某次方法或者函数调用是否合法。若合法,就直接回调原方法或函数,否则阻止此次调用。进一步地,所述检查模块维护一个方法或函数和其需要权限之间的映射;所述检查模块通过解析所述权限文件,得到赋予目标第三方类库的权限,并根据方法或函数到权限的映射关系,判断第三方类库的某次方法或函数调用是否合法。与现有技术相比,本专利技术的积极效果为:本专利技术提出了一种Android第三方类库权限隔离方案及装置,以限制第三方类库运行时使用的权限,达到第三方类库与主应用权限分离的效果。该方法及装置不需要修改Android系统,也不需要重写应用程序或者第三方类库,使用简单。附图说明图1为Android第三方类库权限隔离方法的流程图;图2为Android第三方类库权限隔离装置的示意图。具体实施方式下面结合附图和实施例对本专利技术做进一步说明。为了解决现有技术问题,本实施例提供了一种Android第三方类库权限隔离方法及装置。下面首先对本专利技术实施例所提供的一中Android第三方类库权限隔离方法进行介绍。图1为本专利技术实施例提供的Android第三方类库权限隔离方法的流程示意图。该方法包括以下步骤,步骤1,配置权限信息,包括应用申请的危险权限、使用的第三方类库信息及赋予的权限。其中,危险权限指可能获取用户隐私数据的权限,包括下面表1所示的内容:表1.危险权限第三方类库信息包括,所有的Java部分的包名和本地类库文件名。步骤2,拦截第三方类库的敏感系统调用,将其重定向到代理方法或函数上。敏感系统调用是指敏感方法或函数的调用。敏感方法或函数指的是,需要这些危险权限的方法或函数,比如getDeviceId需要READ_PHONE_STATE权限,那么该方法就是一个敏感方法。该步骤在程序启动的时候,操作内部数据结构进行方法或函数替换,将目标敏感方法或函数替换成对应的代理方法或函数。具体的,代理方法或函数和目标方法或函数具有完全相同的参数列表和返回类型,这样代理方法或函数才能正确处理重定向的目标方法或函数调用。由于这个操作是在程序启动的时候完成的,那么任何第三方类库的调用都会被有效地拦截到。步骤3,得到目标方法或函数的调用者,若是主程序,则直接回调原方法或函数。若是第三方类库,则判断该方法或函数调用是否合法。具体的,根据方法或函数调用栈,本文档来自技高网
...
一种Android第三方类库权限隔离方法及装置

【技术保护点】
一种Android第三方类库权限隔离方法,其特征在于,包括以下步骤:1)配置权限信息,包括应用申请的危险权限,应用使用到的第三方类库信息,以及赋予第三方类库的权限;2)拦截敏感系统调用,将其重定向到代理方法或函数上;3)获得当前代理方法或函数的调用者,并判断此次调用是否合法;4)若合法,则回调原方法或函数,否则,阻止此次调用。

【技术特征摘要】
1.一种Android第三方类库权限隔离方法,其特征在于,包括以下步骤:1)配置权限信息,包括应用申请的危险权限,应用使用到的第三方类库信息,以及赋予第三方类库的权限;2)拦截敏感系统调用,将其重定向到代理方法或函数上;3)获得当前代理方法或函数的调用者,并判断此次调用是否合法;4)若合法,则回调原方法或函数,否则,阻止此次调用。2.如权利要求1所述的方法,其特征在于,步骤1)中,所述危险权限是指可能泄露用户隐私的权限,包括:读取日历事件、编辑日历事件、录制视频或拍照、读取联系人、编辑联系人、得到位置信息、录制音频、获取电话状态、访问通话记录、编辑通话记录、发送短信、编辑短信、读取短信、读取文件、编辑文件权限;所述第三方类库信息包括,第三方类库的Java部分的包名,本地类库的文件名。3.如权利要求1所述的方法,其特征在于,步骤2)所述敏感系统调用是指敏感方法或函数的调用,所述敏感方法或函数是指与危险权限相关的Android框架层方法或本地函数;对于每个所述敏感方法或函数,构造一个相应的代理方法或函数;步骤2)采用系统调用拦截方式,将第三方类库的敏感方法或函数的调用重定向到代理方法或函数上,且只拦截目标应用申请的危险权限对应的敏感方法或函数的调用。4.如权利要求1所述的方法,其特征在于,步骤3)获取敏感方法或函数的调用者的方法为:利用Android的方法或函数调用堆栈,得到敏感方法或函数的调用者;步骤3)判断此次调用是否合法的方式是,得到此次调用的调用者,根据配置的权限信息判断是否赋予该调用者相应的权限,若没有,则说明此次调用非法,否则,此次调用合法。5.如权利要求1所述的方法,其特征在于,步骤4)阻止方法或函数调用的方式为:若该方法或函数没有返回值,则代...

【专利技术属性】
技术研发人员:王发波张玉清
申请(专利权)人:中国科学院大学西安电子科技大学
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1