本发明涉及一种android系统安全加固系统,尤其是一种基于自适配插件的权限校验系统。
背景技术:
android是当前移动平台使用最为广泛的操作系统,也是目前遭受恶意软件攻击最多的平台。android系统的安全性研究已成为热点话题。现如今国内外移动平台环境日益恶化,android病毒软件呈爆发式增长,提高android系统的安全性显得十分必要。更有甚者,许多软件开发厂家以利用android安全缺陷,绕过android系统验证实现某些功能,美其名曰“黑科技”。android系统安全措施也在不断的提升,安全校验也分布在系统的多个层面。针对android应用的权限校验,分为两个层面,框架层面和本地库层面;在框架层面,android系统的权限校验可以说做的比较健壮,精细到了模块级、类级,甚至于方法级别。然而,对于本地库方法的校验则较为宽松;粒度过大,大多仅仅限制到目录级别,最小的限制级别也在单个库级别。相较于框架层面,权限校验颗粒偏大。而系统诸多的功能的实现,往往是框架层面在做权限校验,进而调用本地库执行真正的功能。这样,就导致诸多应用可以绕过框架安全机制,直接执行本地库方法调用,进行各种系统操作,给用户隐私和安全造成潜在威胁。
技术实现要素:
发明目的:提供一种基于自适配插件的权限校验系统,在应用虚拟机引入了校验机制,能够将主动调用的本地接口转发至框架进行权限校验,确保所有的本地接口调用均经过框架的权限校验。
为了实现上述发明目的,本发明提供了一种基于自适配插件的权限校验系统,包括配置模块、权限抽取适配模块、插件库、虚拟机过滤模块以及虚拟机权限校验模块;
配置模块用于根据各类应用虚拟机的调用需求选定当前安卓系统中需要进行权限校验的本地库;
权限抽取适配模块用于识别当前安卓系统的平台架构,再根据识别的平台架构在插件库中选择相兼容的抽取插件模块;
插件库用于根据权限抽取适配模块的选择启用相应的抽取插件模块,抽取插件模块用于从配置模块选定的各个本地库中提取出需要权限校验的接口名称和权限名称,并将提取出的接口名称和权限名称对应存储至接口权限映射表中;
虚拟机过滤模块用于在应用虚拟机调用接口过程中查询接口权限映射表,判断当前调用的接口是否在接口权限映射表中,若在接口权限映射表中,则进一步查询该接口对应的权限,并调用虚拟机权限校验模块对查询到的权限进行校验,则反馈此接口无需权限验证,可直接调用;
虚拟机权限校验模块用于在调用时将查询到的权限以及应用虚拟机信息转送至安卓系统框架层进行权限校验,从而确认用户或安卓系统是否授予此应用虚拟机相应的权限。
进一步的,插件库设置有插件扩展接口,用于自定义扩展插件库中的抽取插件模块。
进一步的,抽取插件模块在从本地库中提取接口名称和权限名称时,根据各个接口结构体的跳转指令向下追踪,若追踪到的是本地接口或者系统调用时,则将该接口结构体的接口名称和对应的权限名称存储至接口权限映射表中。
进一步的,在接口权限映射表中还包括本地库的库名称,且库名称、接口名称以及权限名称关联存储。
进一步的,权限抽取适配模块在系统首次开机或者升级后开机时执行一次。
进一步的,抽取插件模块包括arm抽取插件模块、x86抽取插件模块以及mips抽取插件模块。
进一步的,虚拟机过滤模块以及虚拟机权限校验模块均运行于应用虚拟机中。
进一步的,配置模块、权限抽取适配模块以及抽取插件模块的执行主体均为进程孵化器,使得应用虚拟机直接由自身内存信息中查询接口权限映射表。
本发明与现有技术相比,其有益效果是:利用配置模块选定当前安卓系统中需要进行权限校验的本地库,只需要设备厂商介入即可,无需用户参与,所以无论针对消费级设备,还是工业级设备,均适用;利用权限抽取适配模块能够识别当前安卓系统的平台架构,从而根据平台架构在插件库中选择相兼容的抽取插件模块,确保接口名称和权限名称提取的可靠性;利用虚拟机过滤模块以及虚拟机权限校验模块能够在进行本地接口调用时转发框架进行权限验证,使原本准备绕开框架验证的调用再回到框架进行验证,确保用户隐私和安全。
附图说明
图1为本发明的系统结构示意图。
具体实施方式
下面结合附图对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。
实施例1:
如图1所述,本发明公开的基于自适配插件的权限校验系统包括;配置模块、权限抽取适配模块、插件库、虚拟机过滤模块以及虚拟机权限校验模块;
配置模块用于根据各类应用虚拟机的调用需求选定当前安卓系统中需要进行权限校验的本地库;
权限抽取适配模块用于识别当前安卓系统的平台架构,再根据识别的平台架构在插件库中选择相兼容的抽取插件模块;
插件库用于根据权限抽取适配模块的选择启用相应的抽取插件模块,抽取插件模块用于从配置模块选定的各个本地库中提取出需要权限校验的接口名称和权限名称,并将提取出的接口名称和权限名称对应存储至接口权限映射表中;
虚拟机过滤模块用于在应用虚拟机调用接口过程中查询接口权限映射表,判断当前调用的接口是否在接口权限映射表中,若在接口权限映射表中,则进一步查询该接口对应的权限,并调用虚拟机权限校验模块对查询到的权限进行校验,则反馈此接口无需权限验证,可直接调用;
虚拟机权限校验模块用于在调用时将查询到的权限以及应用虚拟机信息转送至安卓系统框架层进行权限校验,从而确认用户或安卓系统是否授予此应用虚拟机相应的权限。
利用配置模块选定当前安卓系统中需要进行权限校验的本地库,只需要设备厂商介入即可,无需用户参与,所以无论针对消费级设备,还是工业级设备,均适用;利用权限抽取适配模块能够识别当前安卓系统的平台架构,从而根据平台架构在插件库中选择相兼容的抽取插件模块,确保接口名称和权限名称提取的可靠性;利用虚拟机过滤模块以及虚拟机权限校验模块能够在进行本地接口调用时转发框架进行权限验证,使原本准备绕开框架验证的调用再回到框架进行验证,确保用户隐私和安全。
进一步的,插件库设置有插件扩展接口,用于自定义扩展插件库中的抽取插件模块。利用扩展插件接口,能够支持自主扩展插件库,从而便于自定义出其他抽取插件模块,能够精准的提取出权限和接口之间的映射。
进一步的,抽取插件模块在从本地库中提取接口名称和权限名称时,根据各个接口结构体的跳转指令向下追踪,若追踪到的是本地接口或者系统调用时,则将该接口结构体的接口名称和对应的权限名称存储至接口权限映射表中。抽取插件模块的追踪是基于虚拟机的链接器筛选框架服务及其对外接口方法指令或字节码,比如enforcecallingpermission、enforcepermission等等。
进一步的,在接口权限映射表中还包括本地库的库名称,且库名称、接口名称以及权限名称关联存储。通过关联存储能够找到接口名称、权限名称以及库名称的对应关系。
进一步的,权限抽取适配模块在系统首次开机或者升级后开机时执行一次。执行一次即可获得接口权限映射表,满足后续的接口调用查询。
进一步的,抽取插件模块包括但不限于arm抽取插件模块、x86抽取插件模块以及mips抽取插件模块。
进一步的,虚拟机过滤模块以及虚拟机权限校验模块均运行于应用虚拟机中。通过进程孵化器将接口权限映射表映射至应用虚拟机,无需通过进程孵化器进行查找,进而能够有效提高检验的执行效率。
进一步的,配置模块、权限抽取适配模块以及抽取插件模块的执行主体均为进程孵化器,从而依android系统的特性,由进程孵化器生成接口权限映射表,使得应用虚拟机直接由自身内存信息中查询接口权限映射表,无需执行远程过程调用即可确定是否需要进行框架权限校验,对系统和应用的执行没有性能损失。
如上所述,尽管参照特定的优选实施例已经表示和表述了本发明,但其不得解释为对本发明自身的限制。在不脱离所附权利要求定义的本发明的精神和范围前提下,可对其在形式上和细节上作出各种变化。