权限异常检测方法、装置、计算机设备和存储介质与流程

专利2022-06-29  91


本申请涉及计算机技术领域,特别是涉及一种权限异常检测方法、装置、计算机设备和存储介质。



背景技术:

随着计算机技术的发展,移动智能平台在硬件和软件等方面均有了十足的进步,各类可应用在智能设备上的传感器种类更加丰富先进,可获取各类用户数据和其他信息,android系统因其开源性和免费性备受厂商和用户青睐,现已成为第一大智能设备操作系统,随之而来,各类安全隐患的影响逐渐凸显,近年来发生大量用户隐私数据泄露的事件。然而,目前的用户隐私数据泄露检测的运行要求配置复杂,运行时间过长,导致检测效率低。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种能够快速检测出异常使用权限的权限异常检测方法、装置、计算机设备和存储介质。

一种权限异常检测方法,该方法包括:

获取待检测源码;

根据关联关系检测待检测源码是否存在匹配的目标分析关键字;

当待检测源码中存在匹配的目标分析关键字时,获取与目标分析关键字对应的目标权限;

检测原始应用清单配置文件是否存在与目标权限对应的目标使用权限节点;

当目标权限不存在对应的目标使用权限节点时,则确定待检测源码对应的权限为异常使用权限。

在其中一个实施例中,获取待检测工程项目对应的原始应用清单配置文件,原始应用清单配置文件包括待检测工程项目对应的使用权限节点;从原始应用清单配置文件中提取出使用权限节点,得到权限节点列表文件,权限节点列表包括第一使用权限;将原始应用清单配置文件中使用权限节点对应的权限内容进行删除,得到中间应用清单配置文件;对中间应用清单配置文件进行检测,得到权限检测结果列表,权限检测结果包括第二使用权限;根据权限节点列表文件和权限检测结果列表确定异常使用权限;根据异常使用权限生成权限异常检测报告。

在其中一个实施例中,获取待检测工程项目对应的原始应用清单配置文件,包括:获取系统运行指令;当系统运行指令为首次运行时,获取待检测工程项目所在的系统对应的系统源码;对系统源码进行分析,得到系统源码对应的开发环境;当开发环境确定为系统支持的开发环境时,获取待检测工程项目对应的原始应用清单配置文件。

在其中一个实施例中,根据权限节点列表文件和权限检测结果列表确定异常使用权限,包括:获取当前使用权限;若权限节点列表文件仅存在权限节点列表文件或仅存在权限检测结果列表中,则确定当前使用权限为异常使用权限。

在其中一个实施例中,权限异常检测方法还包括:获取待检测工程项目所在的系统对应的系统源码;对系统源码进行分析,得到系统源码中的目标权限;获取目标权限对应的分析关键字,根据分析关键字在系统源码中查找匹配的源码内容;建立分析关键字和对应的源码内容对应的关联关系。

在其中一个实施例中,获取目标权限对应的分析关键字,根据分析关键字在系统源码中查找匹配的源码内容,包括:遍历系统源码的每一行源码;获取当前行源码,判断当前行源码中是否包括分析关键字;当当前行源码包括分析关键字时,则确定当前行源码为分析关键字对应的源码内容。

一种权限异常检测装置,该装置包括:

第一获取模块,用于获取待检测源码;

分析关键字匹配模块,用于根据关联关系检测待检测源码是否存在匹配的目标分析关键字;

第二获取模块,用于当待检测源码中存在匹配的目标分析关键字时,获取与目标分析关键字对应的目标权限;

权限节点检测模块,用于检测原始应用清单配置文件是否存在与目标权限对应的目标使用权限节点;

异常使用权限确定模块,用于当目标权限不存在对应的目标使用权限节点时,则确定待检测源码对应的权限为异常使用权限。

一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

获取待检测源码;

根据关联关系检测待检测源码是否存在匹配的目标分析关键字;

当待检测源码中存在匹配的目标分析关键字时,获取与目标分析关键字对应的目标权限;

检测原始应用清单配置文件是否存在与目标权限对应的目标使用权限节点;

当目标权限不存在对应的目标使用权限节点时,则确定待检测源码对应的权限为异常使用权限。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

获取待检测源码;

根据关联关系检测待检测源码是否存在匹配的目标分析关键字;

当待检测源码中存在匹配的目标分析关键字时,获取与目标分析关键字对应的目标权限;

检测原始应用清单配置文件是否存在与目标权限对应的目标使用权限节点;

当目标权限不存在对应的目标使用权限节点时,则确定待检测源码对应的权限为异常使用权限。

上述权限异常检测方法、装置、计算机设备和存储介质,获取待检测源码,根据关联关系检测待检测源码是否存在匹配的目标分析关键字,当待检测源码中存在匹配的目标分析关键字时,获取与目标分析关键字对应的目标权限,检测原始应用清单配置文件是否存在与目标权限对应的目标使用权限节点,当目标权限不存在对应的目标使用权限节点时,则确定待检测源码对应的权限为异常使用权限。通过该方法,通过关联关系可以获取与待检测源码对应的分析关键字,获取原始应用清单配置文件,检测原始应用清单配置文件是否存在与目标权限对应的目标使用权限节点则可确定待检测源码对应的权限是否为异常使用权限,无需做任何配置,提高异常使用权限的检测效率。

附图说明

图1为一个实施例中权限异常检测方法的应用环境图;

图2为一个实施例中权限异常检测方法的流程示意图;

图3为另一个实施例中权限异常检测方法的流程示意图;

图4为一个实施例中原始应用清单配置文件获取步骤的流程示意图;

图5为一个实施例中异常使用权限确定步骤的流程示意图;

图6为另一个实施例中权限异常检测方法的流程示意图;

图7为一个实施例中源码内容查找步骤的流程示意图;

图8为一个实施例中权限异常检测装置的结构框图;

图9为另一个实施例中权限异常检测装置的结构框图;

图10为一个实施例中清单配置文件获取模块的结构框图;

图11为另一个实施例中权限异常检测装置的结构框图;

图12为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的权限异常检测方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

具体地,终端102可获取待检测源码,将获取待检测源码发送至服务器104,服务器104接收到待检测源码后,根据关联关系检测待检测源码是否存在匹配的目标分析关键字,当待检测源码中存在匹配的目标分析关键字时,获取与目标分析关键字对应的目标权限,检测原始应用清单配置文件是否存在与目标权限对应的目标使用权限节点,当目标权限不存在对应的目标使用权限节点时,则确定待检测源码对应的权限为异常使用权限。进一步地,服务器104可将异常使用权限发送至终端102,供终端102的开发者进行查看。

在一个实施例中,如图2所示,提供了一种权限异常检测方法,以该方法应用于图1中的终端或服务器为例进行说明,包括以下步骤:

步骤202,获取待检测源码。

步骤204,根据关联关系检测待检测源码是否存在匹配的目标分析关键字。

步骤206,当待检测源码中存在匹配的目标分析关键字时,获取与目标分析关键字对应的目标权限。

其中,这里的待检测源码是指用来检测的候选源码,可以是待检测工程项目对应的源码,或者还可以是待检测工程项目所在系统对应的源码。具体地,获取预先建立好的关联关系,因为关联关系是指源码内容与分析关键字之间的关系,所以可以根据关联关系检测待检测源码中是否存在匹配的目标分析关键字,即根据关联关系匹配得到待检测源码对应的目标分析关键字,具体可以是,检测关联关系中是否存在与待检测源码相同的源码内容,如果存在,则将该源码内容对应的分析关键字作为待检测源码匹配的分析关键字,进一步可获取目标分析关键字对应的目标权限,反之,如果不存在,则丢弃该待检测源码。

步骤208,检测原始应用清单配置文件是否存在与目标权限对应的目标使用权限节点。

步骤210,当目标权限不存在对应的目标使用权限节点时,则确定待检测源码对应的权限为异常使用权限。

具体地,获取原始应用清单配置文件中所有使用权限节点,各个使用权限节点都包括对应的使用权限,检测使用权限节点对应的使用权限中是否包括目标权限,也就是说,检测原始应用清单配置文件中是否存在目标权限。当检测到原始应用清单配置文件中使用权限节点对应的使用权限中包括目标权限时,说明原始应用清单配置文件中声明了该目标权限,则可确定为正常使用权限。反之,当检测到原始应用清单配置文件中使用权限节点对应的使用权限中不包括目标权限时,说明原始应用清单配置文件中并未声明该目标权限,则可能存在使用权限的缺失,则确定待检测源码对应的权限为异常使用权限。

上述权限异常检测方法,获取待检测源码,根据关联关系检测待检测源码是否存在匹配的目标分析关键字,当待检测源码中存在匹配的目标分析关键字时,获取与目标分析关键字对应的目标权限,检测原始应用清单配置文件是否存在与目标权限对应的目标使用权限节点,当目标权限不存在对应的目标使用权限节点时,则确定待检测源码对应的权限为异常使用权限。通过该方法,通过关联关系可以获取与待检测源码对应的分析关键字,获取原始应用清单配置文件,检测原始应用清单配置文件是否存在与目标权限对应的目标使用权限节点则可确定待检测源码对应的权限是否为异常使用权限,无需做任何配置,提高异常使用权限的检测效率。

在一个实施例中,如图3所示,权限异常检测方法还包括:

步骤302,获取待检测工程项目对应的原始应用清单配置文件,原始应用清单配置文件包括待检测工程项目对应的使用权限节点。

其中,应用清单配置文件是工程项目的信息描述文件,应用清单配置文件中包括但不限于待检测工程项目对应的各个组件信息,各个组件可以是活动activity,服务service,内容提供商contentprovider和广播接收者broadcastreceiver。其中,应用清单配置文件可以是androidmanifest.xml,其中,androidmanifest.xml定义了待检测工程项目中包含的activity,service,contentprovider和broadcastreceiver组件信息。每个工程项目在根目录下必须包含一个androidmanifest.xml文件,且文件名不能修改。

其中,应用清单配置文件包括待检测工程项目对应的使用权限节点,这里的使用权限节点是用来声明待检测工程项目的权限的,使用权限节点可以是use-permission节点,use-permission节点是用来声明该待检测工程项目对应的权限的,使用权限节点都存在对应的权限内容。其中,待工程项目对应的原始应用清单配置文件中包括至少一个使用权限节点。

步骤304,从原始应用清单配置文件中提取出使用权限节点,得到权限节点列表文件,权限节点列表包括第一使用权限。

其中,这里的第一使用权限是权限节点列表中各个使用权限节点声明的使用权限。其中,待工程项目对应的原始应用清单配置文件中包括至少一个使用权限节点,将原始应用清单配置文件中的所有使用权限节点全部提取出来,从而组成权限节点列表文件。因为权限节点是用来声明对应的权限的,因此提取出来的权限节点包括对应的使用权限,则权限节点列表包括第一使用权限。即,权限节点列表文件中仅包括原始应用清单配置文件中的使用权限节点,而使用权限节点是用来声明对应的权限的,因此,权限节点列表中还包括使用权限节点对应的第一使用权限。

在一个实施例中,例如,将待检测工程项目中原始应用清单配置文件androidmanifest.xml记为a文件。将a文件中所有使用权限节点<use-permission>另存到一个列表文件c中。其中,a为原始应用清单配置文件,c为权限节点列表文件。

步骤306,将原始应用清单配置文件中使用权限节点对应的权限内容进行删除,得到中间应用清单配置文件。

具体地,在得到权限节点列表文件后,将原始应用清单配置文件中使用权限节点对应的权限内容进行删除,得到新的中间应用清单配置文件。具体可以是,获取原始应用清单配置文件中各个使用权限节点对应的权限内容,将各个使用权限节点对应的权限内容进行删除,得到中间应用清单配置文件,其中,中间应用清单配置文件中此时不包括使用权限节点对应的权限内容,但是中间应用清单配置文件中还是包括其他节点对应的权限内容。

在一个实施例中,例如,将待检测工程项目中原始应用清单配置文件androidmanifest.xml记为a文件。将a文件中所有使用权限节点<use-permission>另存到一个列表文件c中。其中,a为原始应用清单配置文件,c为权限节点列表文件。进一步地,将a文件中权限节点<use-permission>对应的权限内容全部进行删除,得到新的应用清单配置文件d。

步骤308,对中间应用清单配置文件进行检测,得到权限检测结果列表,权限检测结果包括第二使用权限。

具体地,在得到中间应用清单配置文件后,对中间应用清单配置文件进行检测,具体可以是利用droidprivacychecker检测系统自动对中间应用清单配置文件进行检测,droidprivacychecker检测系统是开源的,检测系统可以直接对中间应用清单配置文件进行分析处理,检测系统在检测过程中,遵循一定的规则进行检测,从而得到检测结果,检测结果即权限检测结果列表。其中,这里的规则可自定义,自定义可以是根据实际业务需求或者具体应用场景进行确定。

其中,这里的权限检测结果包括第二使用权限,这里的第二使用权限是中间应用清单配置文件对应的使用权限,虽然中间应用清单配置文件中不包括使用权限节点,但是中间应用清单配置文件中还包括自定义使用权限节点,而这里的第二使用权限为自定义使用权限节点对应的权限。其中,使用权限节点和自定义使用权限节点的意义是不同,使用权限节点是待检测工程项目在安装时用来声明对应的权限的,可以是use-permission,而自定义使用权限节点是待检测工程项目根据实际需要或者业务场景用来自定义声明对应的权限的,可以是permission。

步骤310,根据权限节点列表文件和权限检测结果列表确定异常使用权限。

具体地,在得到权限检测结果列表后,可根据权限节点列表文件和权限检测结果列表确定异常使用权限。其中,确定异常使用权限可以是将权限节点列表文件作为标准,将权限节点列表文件和权限检测结果列表进行比对,将权限检测结果列表中缺失使用权限、冗余使用权限都确定为异常使用权限。具体可以是,获取当前使用权限,当前使用权限可以是权限节点列表文件中随机确定一个使用权限作为当前使用权限,或者还可以是根据权限节点列表文件中各个使用权限的优先级,根据优先级先后顺序依次作为当前使用权限,当当前使用权限仅存在权限节点列表文件或仅存在权限检测结果列表中,则确定当前使用权限为异常使用权限。

其中,当当前使用权限仅存在权限节点列表文件中,说明待检测工程项目中存在对于当前使用权限的冗余权限声明,该待检测工程项目中不需要这个当前使用权限,但是却在应用清单配置文件中声明了,因此将来有可能被其他恶意应用程序进行非法利用,导致用户隐私数据泄露。

其中,当当前使用权限仅存在权限检测结果列表中,说明待检测工程项目中可能存在当前使用权限,而待检测工程项目运行到需要当前使用权限时将会导致该待检测工程项目生成的应用程序崩溃。因此,当当前使用权限仅存在权限节点列表文件或仅存在权限检测结果列表中,则确定当前使用权限为异常使用权限。

步骤312,根据异常使用权限生成权限异常检测报告。

具体地,在得到异常使用权限后,可以将异常使用权限以权限异常检测报告的形式展示给开发人员查看。开发人员可以根据权限异常检测报告进行修改,避免用户隐私数据的泄露,从而给公司以及用户进行不必要的经济损失。

在一个实施例中,例如,将待检测工程项目中原始应用清单配置文件androidmanifest.xml记为a文件,同时将其备份,记为b文件。将a文件中所有使用权限节点<use-permission>另存到一个列表文件c中。其中,a为原始应用清单配置文件,c为权限节点列表文件。

进一步地,将a文件中权限节点<use-permission>对应的权限内容全部进行删除,得到新的应用清单配置文件a。在不改变a文件的命名的条件下将其进行保存操作并完整放回待检测工程项目对应目录的androidmanifest.xml原始应用清单配置文件所在目录中并覆盖原有文件,droidprivacychecker检测系统自动调用lint命令“lint--checkmissingpermissionmyproject”对待检测工程进行异常使用权限missing-permission的专项检测,其中myproject为待检测工程项目的名称。

再进一步地,当命令执行完毕后解析检测生成得到权限检测结果列表result.xml,即得到权限检测结果列表d。紧接着,对比权限检测结果列表d和权限节点列表文件c中的每一个使用权限,如果某个使用权限permission(记为e)仅在c文件中存在,那么说明待检测工程项目存在对于e的冗余权限声明,该待检测工程项目不需要这个权限却声明使用,将有更大的可能被其他恶意应用程序非法利用,导致用户信息泄露。如果某个使用权限permission(记为f)仅在d中出现,那么说明该待检测工程项目中可能存在权限f声明,程序运行到需要f权限时将导致该待检测工程项目生成的应用程序崩溃。

最后,根据以上生成的异常使用权限从而生成权限异常检测报告,生成完成后再将备份好的b文件放回并覆盖a文件,以恢复待检测工程项目的原有文件状态,防止因检测流程对待检测工程项目造成影响。

上述权限异常检测方法中,获取待检测工程项目对应的原始应用清单配置文件,原始应用清单配置文件中包括使用权限节点以及对应的第一使用权限,再将原始应用清单配置文件中的使用权限节点对应的权限内容进行删除,得到中间应用清单配置文件。再对中间应用清单配置文件进行检测,得到包括第二使用权限的权限检测结果列表,最后根据权限节点列表文件和权限检测结果列表确定异常使用权限,从而生成权限异常检测报告。通过该方法,仅需要获取待检测工程项目的原始应用清单配置文件就能检测出异常使用权限,无需做任何配置,提高异常使用权限的检测效率。

在一个实施例中,如图4所示,获取待检测工程项目对应的原始应用清单配置文件,包括:

步骤402,获取系统运行指令。

步骤404,当系统运行指令为首次运行时,获取待检测工程项目所在的系统对应的系统源码。

其中,系统运行指令是用来指令待检测项目所在的系统运行的,若终端作为执行主体,终端上安装有权限异常检测相关的应用,可通过该应用触发生成系统运行指令,具体可以是通过作用于该应用上的展示界面的点击操作或者语音操作触发生成系统运行指令。在一个实施例中,若服务器作为执行主体时,终端触发生成系统运行指令后,通过网络连接将系统运行指令发送至服务器。或者服务器可以直接获取系统运行指令,无需通过终端获取系统运行指令,例如,通过定时事件触发系统运行指令。

具体地,在获取到系统运行指令后,需要检测该系统运行指令是否为首次运行,当检测到该系统运行指令为首次运行时,获取待检测工程项目所在的系统对应的系统源码。所谓系统源码是与系统相关的源代码,例如,android系统源码可以为系统源码。

步骤406,对系统源码进行分析,得到系统源码对应的开发环境。

步骤408,当开发环境确定为系统支持的开发环境时,获取待检测工程项目对应的原始应用清单配置文件。

具体地,在获取到待检测工程项目所在的系统对应的系统源码后,对系统源码进行分析,可以从系统源码中得到待检测工程项目所在的开发环境。具体可以是借助droidprivacychecker检测系统对系统源码进行分析,从系统源码中各行代码对应的含义中分析得到对应的开发环境。进一步,再检测分析得到的开发环境是否是待检测工程项目所在的系统支持的开发环境,具体可以是获取系统支持的开发环境,检测系统支持的开发环境和系统源码对应的开发环境是否匹配,当匹配时,则可以确定系统源码对应的开发环境为系统支持的开发环境,反之,当不匹配时,则可以确定系统源码对应的开发环境不是系统支持的开发环境。

最后,当系统源码对应的开发环境确定为系统支持的开发环境后,获取待检测工程项目对应的原始应用清单配置文件。

在一个实施例中,如图5所示,根据权限节点列表文件和权限检测结果列表确定异常使用权限,包括:

步骤502,获取当前使用权限。

步骤504,若当前使用权限仅存在权限节点列表文件或仅存在权限检测结果列表中,则确定当前使用权限为异常使用权限。

其中,这里的当前使用权限是目前正在用来处理的使用权限,可以从权限节点列表文件中的第一使用权限中随机选择一个使用权限作为当前使用权限,或者按照权限节点列表文件中的第一使用权限的优先级,依次作为当前使用权限。其中,当前使用权限还可以是从权限检测结果列表中的使用权限作为当前使用权限,同样地,可以从权限检测结果列表中的第二使用权限中随机选择一个使用权限作为当前使用权限,或者按照权限检测结果列表中的第二使用权限的优先级,依次作为当前使用权限。

进一步地,检测当前使用权限是否同时存在权限节点列表文件和权限检测结果列表中,当检测当前使用权限仅存在权限节点列表文件或仅存在权限检测结果列表中,则确定当前使用权限为异常使用权限。其中,当前使用权限仅存在权限节点列表文件或仅存在权限检测结果列表中的情况可以为当前使用权限存在权限节点列表文件,不存在权限检测结果列表,或者当前使用权限存在权限检测结果列表,不存在权限节点列表文件中。

其中,当当前使用权限仅存在权限节点列表文件中,说明待检测工程项目中存在对于当前使用权限的冗余权限声明,该待检测工程项目中不需要这个当前使用权限,但是却在应用清单配置文件中声明了,因此将来有可能被其他恶意应用程序进行非法利用,导致用户隐私数据泄露。

其中,当当前使用权限仅存在权限检测结果列表中,说明待检测工程项目中可能存在当前使用权限,而待检测工程项目运行到需要当前使用权限时将会导致该待检测工程项目生成的应用程序崩溃。

因此,综上,当当前使用权限仅存在权限节点列表文件或仅存在权限检测结果列表中,则可确定当前使用权限为异常使用权限。

在一个实施例中,如图6所示,权限异常检测方法还包括:

步骤602,获取待检测工程项目所在的系统对应的系统源码。

步骤604,对系统源码进行分析,得到系统源码中的目标权限。

其中,这里的系统源码是与系统相关的源代码,例如,android系统源码可以为系统源码。具体地,获取待检测工程项目所在的系统对应的系统源码,因为可以通过系统源码去声明该系统的权限,所以可以再对系统源码进行分析,得到系统源码中的目标权限。其中,这里的目标权限是指符合预设条件的使用权限,预设条件可自定义,自定义可以是根据使用权限的级别确定得到的,或者根据使用权限的意义确定得到的。

在一个实施例中,例如,使用权限级别分为正常权限和危险权限,目标权限可以为危险权限,由于正常权限几乎不能接触到用户隐私数据,比如设置时区的权限就是正常权限。当然,如果用户认为时区数据为其隐私数据时,该“正常权限”也能接触到。如果系统源码中声明其需要“正常权限”,会自动向待检测工程项目授予该权限。而危险权限包括所有可能接触到的使用者的私密数据。例如,能够获取短信内容就属于危险权限。如果系统源码中声明其需要某个或某些危险权限,待检测工程项目在运行时会进行弹窗以提示用户,询问用户是否授予这个待检测工程项目其当前所申请的权限,在用户点击确认授权后应用才可使用该权限。其中,有许多权限的行为方式与正常权限及危险权限都不同。还有一些权限,比如系统浮窗权限和修改系统设置等权限属于危险权限,对待检测工程项目所在的系统来说也十分敏感,因此大多数待检测工程项目都不应该使用它们。如果某待检测工程项目需要其中某一种权限,须在系统源码中声明该权限。

步骤606,获取目标权限对应的分析关键字,根据分析关键字在系统源码中查找匹配的源码内容。

步骤608,建立分析关键字和对应的源码内容对应的关联关系。

其中,这里的分析关键字是用来标识对应的目标权限的,可以用预设的字段来标识对应的目标权限。具体地,在获取到系统源码中的目标权限后,可以获取目标权限对应的分析关键字,例如,read_calendar、write_calendar都可以作为目标权限对应的分析关键字。进一步地,在根据分析关键字在系统源码中查找匹配的源码内容,具体可以是,根据分析关键字查找该分析关键字在系统源码中对应的位置,再根据位置确定对应的源码内容,进而建立源码内容与对应的分析关键字的关联关系。例如,遍历系统源码的每一行代码,检测系统源码的每一行代码中是否出现分析关键字,若检测到某一行代码中出现分析关键字后,可建立该行代码对应的代码内容与该分析关键字对应的关联关系。

在一个实施例中,例如,目标权限为危险权限,可以将所有危险权限设置为对应的分析关键字,例如,其中android.manifest.permission为应用清单配置文件,即应用清单配置文件中使用分析关键字来标识对应的使用权限:

android.manifest.permission#read_calendar

android.manifest.permission#write_calendar

android.manifest.permission#camera

android.manifest.permission#read_contacts

android.manifest.permission#write_contacts

android.manifest.permission#get_accounts

android.manifest.permission#access_fine_location

android.manifest.permission#access_coarse_location

android.manifest.permission#record_audio

android.manifest.permission#read_phone_state

android.manifest.permission#call_phone

android.manifest.permission#read_call_log

android.manifest.permission#write_call_log

android.manifest.permission#add_voicemail

android.manifest.permission#use_sip

android.manifest.permission#process_outgoing_calls

android.manifest.permission#body_sensors

android.manifest.permission#send_sms

android.manifest.permission#receive_sms

android.manifest.permission#read_sms

android.manifest.permission#receive_wap_push

android.manifest.permission#receive_mms

然后,遍历系统源码的每一行代码,检测系统源码的每一行代码中是否出现分析关键字,若检测到某一行代码中出现分析关键字后,可建立该行代码对应的代码内容与该分析关键字对应的关联关系,例如,分析关键字read_calendar对应的源码内容为系统源码中的第1000行内容,则建立read_calendar与系统源码第1000行内容之间的关联关系。

在一个实施例中,如图7所示,获取目标权限对应的分析关键字,根据分析关键字在系统源码中查找匹配的源码内容,包括:

步骤702,遍历系统源码的每一行源码。

步骤704,获取当前行源码,判断当前行源码中是否包括分析关键字。

步骤706,当当前行源码包括分析关键字时,则确定当前行源码为分析关键字对应的源码内容。

其中,系统源码中包括至少一行源码,每一行源码都包括对应的源码内容,根据分析关键字在系统源码中查找匹配的源码内容具体可以是,遍历系统源码的每一行源码,获取当前行源码,这里的当前行源码是目前正在用来处理的源码,可以从系统源码中随机确定一行源码作为当前行源码,还可以是依次将系统源码中的每一行作为当前源码。进一步,判断当前行源码中是否包括分析关键字,具体可以是,检测当前行源码中是否存在分析关键字,若当前行源码中存在分析关键字,则确定当前行源码为该分析关键字对应的源码内容,反之,则获取下一行源码,将下一行源码作为当前行源码,返回判断当前行源码中是否包括分析关键字的步骤,以此类推,直至得到所有分析关键字对应的源码内容。

在一个实施例中,例如,目标权限为危险权限,可以将所有危险权限设置为对应的分析关键字,例如,其中android.manifest.permission为应用清单配置文件,即应用清单配置文件中使用分析关键字来标识对应的使用权限:

android.manifest.permission#read_calendar

android.manifest.permission#write_calendar

android.manifest.permission#camera

android.manifest.permission#read_contacts

然后,再遍历系统源码的每一行代码,检测系统源码的每一行代码中是否出现分析关键字,若检测到某一行代码中出现分析关键字后,可建立该行代码对应的代码内容与该分析关键字对应的关联关系,例如,分析关键字read_calendar对应的源码内容为系统源码中的第1000行内容,则确定为第1000行源码内容为分析关键字read_calendar对应的源码内容。

在一个具体的实施例中,提供了一种权限异常检测方法,具体包括以下步骤:

1、获取待检测工程项目对应的原始应用清单配置文件,原始应用清单配置文件包括待检测工程项目对应的使用权限节点。

1-1、获取系统运行指令。

1-2、当系统运行指令为首次运行时,获取待检测工程项目所在的系统对应的系统源码。

1-3、对系统源码进行分析,得到系统源码对应的开发环境。

1-4、当开发环境确定为系统支持的开发环境时,获取待检测工程项目对应的原始应用清单配置文件。

2、从原始应用清单配置文件中提取出使用权限节点,得到权限节点列表文件,权限节点列表包括第一使用权限。

3、将原始应用清单配置文件中使用权限节点对应的权限内容进行删除,得到中间应用清单配置文件。

4、对中间应用清单配置文件进行检测,得到权限检测结果列表,权限检测结果包括第二使用权限。

5、根据权限节点列表文件和权限检测结果列表确定异常使用权限。

5-1、获取当前使用权限。

5-2、若当前使用权限仅存在权限节点列表文件或仅存在权限检测结果列表中,则确定当前使用权限为异常使用权限。

6、根据异常使用权限生成权限异常检测报告。

7、获取待检测工程项目所在的系统对应的系统源码。

8、对系统源码进行分析,得到系统源码中的目标权限。

9、获取目标权限对应的分析关键字,根据分析关键字在系统源码中查找匹配的源码内容。

9-1、遍历系统源码的每一行源码。

9-2、获取当前行源码,判断当前行源码中是否包括分析关键字。

9-3、当当前行源码包括分析关键字时,则确定当前行源码为分析关键字对应的源码内容。

10、建立分析关键字和对应的源码内容对应的关联关系。

11、获取待检测源码。

12、根据关联关系检测待检测源码是否存在匹配的目标分析关键字。

13、当待检测源码存在匹配的目标分析关键字时,获取目标分析关键字对应的目标权限。

14、检测原始应用清单配置文件是否存在目标权限对应的使用权限节点。

15、当目标权限不存在对应的使用权限节点时,则确定待检测源码对应的权限为异常使用权限。

应该理解的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图8所示,提供了一种权限异常检测装置800,包括:第一获取模块802、分析关键字匹配模块804、第二获取模块806、权限节点检测模块808和异常使用权限确定模块810,其中:

第一获取模块802,用于获取待检测源码。

分析关键字匹配模块804,用于根据关联关系检测待检测源码是否存在匹配的目标分析关键字。

第二获取模块806,用于当待检测源码中存在匹配的目标分析关键字时,获取与目标分析关键字对应的目标权限。

权限节点检测模块808,用于检测原始应用清单配置文件是否存在与目标权限对应的目标使用权限节点。

异常使用权限确定模块810,用于当目标权限不存在对应的目标使用权限节点时,则确定待检测源码对应的权限为异常使用权限。

在一个实施例中,如图9所示,权限异常检测装置800还包括:

清单配置文件获取模块902,用于获取待检测工程项目对应的原始应用清单配置文件,原始应用清单配置文件包括待检测工程项目对应的使用权限节点。

使用权限节点提取模块904,用于从原始应用清单配置文件中提取出使用权限节点,得到权限节点列表文件,权限节点列表包括第一使用权限。

使用权限节点处理模块906,用于将原始应用清单配置文件中使用权限节点对应的权限内容进行删除,得到中间应用清单配置文件。

清单配置文件检测模块908,用于对中间应用清单配置文件进行检测,得到权限检测结果列表,权限检测结果包括第二使用权限。

异常使用权限确定模块910,用于根据权限节点列表文件和权限检测结果列表确定异常使用权限。

权限异常检测报告生成模块912,用于根据异常使用权限生成权限异常检测报告。

在一个实施例中,如图10所示,清单配置文件获取模块902包括:

运行指令获取单元902a,用于获取系统运行指令。

运行指令检测单元902b,用于当系统运行指令为首次运行时,获取待检测工程项目所在的系统对应的系统源码。

系统源码分析单元902c,用于对系统源码进行分析,得到系统源码对应的开发环境。

开发环境检测单元902d,用于当开发环境确定为系统支持的开发环境时,获取待检测工程项目对应的原始应用清单配置文件。

在一个实施例中,异常使用权限确定模块910还用于获取当前使用权限,若当前使用权限仅存在权限节点列表文件或仅存在权限检测结果列表中,则确定当前使用权限为异常使用权限。

在一个实施例中,如图11所示,权限异常检测装置800还包括:

系统源码获取模块1102,用于获取待检测工程项目所在的系统对应的系统源码。

系统源码分析模块1104,用于对系统源码进行分析,得到系统源码中的目标权限。

源码内容查找模块1106,用于获取目标权限对应的分析关键字,根据分析关键字在系统源码中查找匹配的源码内容。

关联关系建立模块1108,用于建立分析关键字和对应的源码内容对应的关联关系。

在一个实施例中,源码内容查找模块1006还用于遍历系统源码的每一行源码,获取当前行源码,判断当前行源码中是否包括分析关键字,当当前行源码包括分析关键字时,则确定当前行源码为分析关键字对应的源码内容。

关于权限异常检测装置的具体限定可以参见上文中对于权限异常检测方法的限定,在此不再赘述。上述权限异常检测装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

图12示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的终端102或服务器104。如图12所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现权限异常检测方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行权限异常检测方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图12中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:获取待检测源码;根据关联关系检测待检测源码是否存在匹配的目标分析关键字;当待检测源码中存在匹配的目标分析关键字时,获取与目标分析关键字对应的目标权限;检测原始应用清单配置文件是否存在与目标权限对应的目标使用权限节点;当目标权限不存在对应的目标使用权限节点时,则确定待检测源码对应的权限为异常使用权限。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取待检测工程项目对应的原始应用清单配置文件,原始应用清单配置文件包括待检测工程项目对应的使用权限节点;从原始应用清单配置文件中提取出使用权限节点,得到权限节点列表文件,权限节点列表包括第一使用权限;将原始应用清单配置文件中使用权限节点对应的权限内容进行删除,得到中间应用清单配置文件;对中间应用清单配置文件进行检测,得到权限检测结果列表,权限检测结果包括第二使用权限;根据权限节点列表文件和权限检测结果列表确定异常使用权限;根据异常使用权限生成权限异常检测报告。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取系统运行指令;当系统运行指令为首次运行时,获取待检测工程项目所在的系统对应的系统源码;对系统源码进行分析,得到系统源码对应的开发环境;当开发环境确定为系统支持的开发环境时,获取待检测工程项目对应的原始应用清单配置文件。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取当前使用权限;若权限节点列表文件仅存在权限节点列表文件或仅存在权限检测结果列表中,则确定当前使用权限为异常使用权限。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取待检测工程项目所在的系统对应的系统源码;对系统源码进行分析,得到系统源码中的目标权限;获取目标权限对应的分析关键字,根据分析关键字在系统源码中查找匹配的源码内容;建立分析关键字和对应的源码内容对应的关联关系。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:遍历系统源码的每一行源码;获取当前行源码,判断当前行源码中是否包括分析关键字;当当前行源码包括分析关键字时,则确定当前行源码为分析关键字对应的源码内容。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取待检测源码;根据关联关系检测待检测源码是否存在匹配的目标分析关键字;当待检测源码中存在匹配的目标分析关键字时,获取与目标分析关键字对应的目标权限;检测原始应用清单配置文件是否存在与目标权限对应的目标使用权限节点;当目标权限不存在对应的目标使用权限节点时,则确定待检测源码对应的权限为异常使用权限。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取待检测工程项目对应的原始应用清单配置文件,原始应用清单配置文件包括待检测工程项目对应的使用权限节点;从原始应用清单配置文件中提取出使用权限节点,得到权限节点列表文件,权限节点列表包括第一使用权限;将原始应用清单配置文件中使用权限节点对应的权限内容进行删除,得到中间应用清单配置文件;对中间应用清单配置文件进行检测,得到权限检测结果列表,权限检测结果包括第二使用权限;根据权限节点列表文件和权限检测结果列表确定异常使用权限;根据异常使用权限生成权限异常检测报告。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取系统运行指令;当系统运行指令为首次运行时,获取待检测工程项目所在的系统对应的系统源码;对系统源码进行分析,得到系统源码对应的开发环境;当开发环境确定为系统支持的开发环境时,获取待检测工程项目对应的原始应用清单配置文件。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取当前使用权限;当权限节点列表文件仅存在权限节点列表文件或仅存在权限检测结果列表中,则确定当前使用权限为异常使用权限。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取待检测工程项目所在的系统对应的系统源码;对系统源码进行分析,得到系统源码中的目标权限;获取目标权限对应的分析关键字,根据分析关键字在系统源码中查找匹配的源码内容;建立分析关键字和对应的源码内容对应的关联关系。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:遍历系统源码的每一行源码;获取当前行源码,判断当前行源码中是否包括分析关键字;当当前行源码包括分析关键字时,则确定当前行源码为分析关键字对应的源码内容。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。


技术特征:

1.一种权限异常检测方法,所述方法包括:

获取待检测源码;

根据关联关系检测所述待检测源码是否存在匹配的目标分析关键字;

当所述待检测源码中存在匹配的目标分析关键字时,获取与所述目标分析关键字对应的目标权限;

检测原始应用清单配置文件是否存在与所述目标权限对应的目标使用权限节点;

当所述目标权限不存在对应的目标使用权限节点时,则确定所述待检测源码对应的权限为异常使用权限。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

获取待检测工程项目对应的原始应用清单配置文件,所述原始应用清单配置文件包括所述待检测工程项目对应的使用权限节点;

从所述原始应用清单配置文件中提取出所述使用权限节点,得到权限节点列表文件,所述权限节点列表包括第一使用权限;

将所述原始应用清单配置文件中所述使用权限节点对应的权限内容进行删除,得到中间应用清单配置文件;

对所述中间应用清单配置文件进行检测,得到权限检测结果列表,所述权限检测结果包括第二使用权限;

根据所述权限节点列表文件和所述权限检测结果列表确定异常使用权限;

根据所述异常使用权限生成权限异常检测报告。

3.根据权利要求2所述的方法,其特征在于,所述获取待检测工程项目对应的原始应用清单配置文件,包括:

获取系统运行指令;

当所述系统运行指令为首次运行时,获取待检测工程项目所在的系统对应的系统源码;

对所述系统源码进行分析,得到所述系统源码对应的开发环境;

当所述开发环境确定为所述系统支持的开发环境时,获取待检测工程项目对应的原始应用清单配置文件。

4.根据权利要求2所述的方法,其特征在于,所述根据所述权限节点列表文件和所述权限检测结果列表确定异常使用权限,包括:

获取当前使用权限;

若所述当前使用权限仅存在所述权限节点列表文件或仅存在所述权限检测结果列表中,则确定所述当前使用权限为异常使用权限。

5.根据权利要求1所述的方法,其特征在于,所述关联关系的建立步骤包括:

获取待检测工程项目所在的系统对应的系统源码;

对所述系统源码进行分析,得到所述系统源码中的目标权限;

获取所述目标权限对应的分析关键字,根据所述分析关键字在所述系统源码中查找匹配的源码内容;

建立所述分析关键字和对应的所述源码内容对应的关联关系。

6.根据权利要求5所述的方法,其特征在于,所述获取所述目标权限对应的分析关键字,根据所述分析关键字在所述系统源码中查找匹配的源码内容,包括:

遍历所述系统源码的每一行源码;

获取当前行源码,判断所述当前行源码中是否包括所述分析关键字;

当所述当前行源码包括所述分析关键字时,则确定所述当前行源码为所述分析关键字对应的源码内容。

7.一种权限异常检测装置,其特征在于,所述装置包括:

第一获取模块,用于获取待检测源码;

分析关键字匹配模块,用于根据关联关系检测所述待检测源码是否存在匹配的目标分析关键字;

第二获取模块,用于当所述待检测源码中存在匹配的目标分析关键字时,获取与所述目标分析关键字对应的目标权限;

权限节点检测模块,用于检测原始应用清单配置文件是否存在与所述目标权限对应的目标使用权限节点;

异常使用权限确定模块,用于当所述目标权限不存在对应的目标使用权限节点时,则确定所述待检测源码对应的权限为异常使用权限。

8.根据权利要求7所述的装置,其特征在于,所述装置还包括:

清单配置文件获取模块,用于获取待检测工程项目对应的原始应用清单配置文件,所述原始应用清单配置文件包括所述待检测工程项目对应的使用权限节点;

使用权限节点提取模块,用于从所述原始应用清单配置文件中提取出所述使用权限节点,得到权限节点列表文件,所述权限节点列表包括第一使用权限;

使用权限节点处理模块,用于将所述原始应用清单配置文件中所述使用权限节点对应的权限内容进行删除,得到中间应用清单配置文件;

清单配置文件检测模块,用于对所述中间应用清单配置文件进行检测,得到权限检测结果列表,所述权限检测结果包括第二使用权限;

异常使用权限确定模块,用于根据所述权限节点列表文件和所述权限检测结果列表确定异常使用权限;

权限异常检测报告生成模块,用于根据所述异常使用权限生成权限异常检测报告。

9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。

技术总结
本申请涉及一种权限异常检测方法、装置、计算机设备和存储介质。该方法包括:获取待检测源码;根据关联关系检测待检测源码是否存在匹配的目标分析关键字;当待检测源码中存在匹配的目标分析关键字时,获取与目标分析关键字对应的目标权限;检测原始应用清单配置文件是否存在与目标权限对应的目标使用权限节点;当目标权限不存在对应的目标使用权限节点时,则确定待检测源码对应的权限为异常使用权限。采用本方法能够快速检测出异常使用权限。

技术研发人员:李博群;徐杭
受保护的技术使用者:苏宁云计算有限公司
技术研发日:2020.01.08
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-22269.html

最新回复(0)