CN116028917A - 权限检测方法及装置、存储介质及电子设备 - Google Patents
权限检测方法及装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN116028917A CN116028917A CN202211599983.6A CN202211599983A CN116028917A CN 116028917 A CN116028917 A CN 116028917A CN 202211599983 A CN202211599983 A CN 202211599983A CN 116028917 A CN116028917 A CN 116028917A
- Authority
- CN
- China
- Prior art keywords
- sdk
- detected
- static
- permission
- result
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Storage Device Security (AREA)
Abstract
本公开提供了一种权限检测方法、装置、电子设备及存储介质,涉及计算机技术领域。该方法包括:获取待检测应用程序包;确定待检测应用程序包中的静态SDK集,并查询SDK权限数据库以获得静态SDK集中各静态SDK的静态权限表;将待检测应用程序包运行在沙箱环境中,确定待检测应用程序包运行时调用的待检测SDK及待检测SDK发起的权限请求;根据静态SDK的静态权限表和待检测SDK发起的权限请求,确定待检测应用程序包的SDK权限检测结果。通过本公开提供的权限检测方法,可以结合静态和动态两种方式确定待检测应用程序包的SDK权限检测结果,使得对待检测应用程序包的SDK的权限检测更全面、更准确。
Description
背景技术
随着计算机技术的发展和移动终端的广泛普及,越来越多的可安装在移动终端上的移动应用程序被开发出来供人们使用。移动应用程序的应用程序包中通常会使用多个第三方的SDK(Software Development Kit,软件开发工具包)来实现移动应用的功能,这些SDK在移动应用运行过程中会产生各种权限请求,而这些权限请求可能会存在合规性问题。
相关技术中,通常是通过查询SDK黑名单或白名单来确定应用程序包中所使用的SDK是否异常,这种方式确定出的检测结果准确性较低,且检测到的SDK不够全面。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种权限检测方法、装置、电子设备及存储介质,可以使得对待检测应用程序包的SDK的权限检测更全面、更准确。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一个方面,提供一种权限检测方法,包括:获取待检测应用程序包;确定待检测应用程序包中的静态软件开发工具包SDK集,并查询SDK权限数据库以获得静态SDK集中各静态SDK的静态权限表;将待检测应用程序包运行在沙箱环境中,确定待检测应用程序包运行时调用的待检测SDK及待检测SDK发起的权限请求;根据静态SDK的静态权限表和待检测SDK发起的权限请求,确定待检测应用程序包的SDK权限检测结果。
在本公开一个实施例中,根据静态SDK的静态权限表和待检测SDK发起的权限请求,确定待检测应用程序包的SDK权限检测结果,包括:若待检测SDK属于静态SDK集,将待检测SDK确定为第一SDK,使用第一SDK的静态权限表和第一SDK发起的权限请求对第一SDK进行权限检测,获得第一SDK的第一结果;若待检测SDK不属于静态SDK集,将待检测SDK确定为第二SDK,基于第二SDK发起的权限请求对第二SDK进行权限检测,获得第二SDK的第二结果;若静态SDK集中存在未在待检测应用程序包运行时被调用的静态SDK,将静态SDK确定为第三SDK,并获取预设结果作为第三SDK的第三结果;根据第一结果、第二结果和第三结果确定待检测应用程序包的SDK权限检测结果。
在本公开一个实施例中,使用第一SDK的静态权限表和第一SDK发起的权限请求对第一SDK进行权限检测,获得第一SDK的第一结果,包括:判断第一SDK发起的权限请求是否存在于第一SDK的静态权限表中;若是,则确定第一SDK的第一结果为正常;若否,则确定第一SDK的第一结果为异常。
在本公开一个实施例中,基于第二SDK发起的权限请求对第二SDK进行权限检测,获得第二SDK的第二结果,包括:通过训练好的权限分类模型处理第二SDK发起的权限请求,获得第二SDK发起的权限请求的分类结果;其中,分类结果为异常请求或正常请求;判断第二SDK发起的动态权限的分类结果中是否存在异常请求;若否,则确定第二SDK的第二结果为正常;若是,则确定第二SDK的第二结果为异常。
在本公开一个实施例中,在确定待检测应用程序包的SDK权限检测结果后,权限检测方法还包括:将第二SDK及其发起的分类结果为正常请求的权限请求对应存储至SDK权限数据库中,以对SDK权限数据库进行更新。
在本公开一个实施例中,待检测应用程序包中还包含具有防护功能的防护SDK,防护SDK中包括训练好的权限预测模型;其中,在通过训练好的权限预测模型处理第二SDK发起的权限请求之前,权限检测方法还包括:调用防护SDK中的训练好的权限预测模型;以及,权限检测方法还包括:通过防护SDK对预测结果为异常请求的权限请求进行拦截。
在本公开一个实施例中,在确定待检测应用程序包的SDK权限检测结果之后,权限检测方法还包括:获取待检测应用程序包的散列值;将散列值和SDK权限检测结果关联存储至检测数据库中。
在本公开一个实施例中,在确定待检测应用程序包中的静态SDK集之前,权限检测方法还包括:计算待检测应用程序包的散列值;调用检测数据库,判断散列值是否存在于检测数据库中;若散列值不存在于检测数据库中,则执行确定待检测应用程序包中的静态SDK集的步骤;若散列值存在于检测数据库中,则从检测数据库中获取与散列值对应的目标SDK权限检测结果,以作为待检测应用程序包的SDK权限检测结果。
根据本公开的另一个方面,提供一种权限检测装置,包括:获取模块,用于获取待检测应用程序包;静态确定模块,用于确定待检测应用程序包中的静态软件开发工具包SDK集,并查询SDK权限数据库以获得静态SDK集中各静态SDK的静态权限表;动态确定模块,用于将待检测应用程序包运行在沙箱环境中,确定待检测应用程序包运行时调用的待检测SDK及待检测SDK发起的权限请求;结果确定模块,用于根据静态SDK的静态权限表和待检测SDK发起的权限请求,确定待检测应用程序包的SDK权限检测结果。
根据本公开的又一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的权限检测方法。
根据本公开的再一个方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述的权限检测方法。
本公开的实施例所提供的权限检测方法,能够结合静态和动态两种方式确定待检测应用程序包的SDK权限检测结果,使得对待检测应用程序包的SDK的权限检测更全面、更准确。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了可以应用本公开实施例的权限检测方法的示例性系统架构的示意图;
图2示出了本公开一个实施例的权限检测方法的流程图;
图3示出了本公开一个实施例的权限检测方法中确定SDK权限检测结果的方法的流程图;
图4示出了本公开一个实施例的权限检测装置的框图;和
图5示出了本公开实施例中一种权限检测计算机设备的结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本公开的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
图1示出了可以应用本公开实施例的权限检测方法的示例性系统架构的示意图。
如图1所示,该系统架构可以包括服务器101、网络102和客户端103。网络102用以在客户端103和服务器101之间提供通信链路的介质。网络102可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
在示例性实施例中,与服务端101进行数据传输的客户端103可以包括但不限于智能手机、台式计算机、平板电脑、笔记本电脑、智能音箱、数字助理、AR(Augmented Reality,增强现实)设备、VR(Virtual Reality,虚拟现实)设备、智能可穿戴设备等类型的电子设备。可选的,电子设备上运行的操作系统可以包括但不限于安卓系统、IOS系统、linux系统、windows系统等。
服务器101可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。在一些实际应用中,服务器101也可以是网络平台的服务器,网络平台例如可以是交易平台、直播平台、社交平台或者音乐平台等,本公开实施例对此不作限定。其中,服务器可以是一台服务器,也可以是多台服务器形成的集群,本公开对于服务器的具体架构不做限定。
在示例性实施例中,本公开提供的方法可以由服务器101执行也可以由客户端103执行,也可以由服务器101与客户端103共同执行。例如,用户可以先将待检测应用程序包(如APK(Android application package,安卓应用程序包)文件)传输至本地的客户端103,然后由本地的客户端103执行本公开提供的权限检测方法,最终在本地的客户端103上得到待检测应用程序包的SDK权限检测结果。用户也可以通过客户端103将待检测应用程序包发送至远端的服务器101,然后由服务器101执行本公开提供的权限检测方法,最终在服务器101上得到待检测应用程序包的SDK权限检测结果,服务器101还可以将SDK权限检测结果存储至云端服务器,也可以将SDK权限检测结果下发回客户端103,以供后续对待检测应用进行分析或处理。
在示例性实施例中,客户端103用于实现权限检测方法的过程可以是:客户端103获取待检测应用程序包;客户端103确定待检测应用程序包中的静态软件开发工具包SDK集,并查询SDK权限数据库以获得静态SDK集中各静态SDK的静态权限表;客户端103将待检测应用程序包运行在沙箱环境中,确定待检测应用程序包运行时调用的待检测SDK及待检测SDK发起的权限请求;客户端103根据静态SDK的静态权限表和待检测SDK发起的权限请求,确定待检测应用程序包的SDK权限检测结果。
此外,需要说明的是,图1所示的仅仅是本公开提供的权限检测方法的一种应用环境。图1中的客户端、网络和服务器的数目仅仅是示意性的,根据实际需要,可以具有任意数目的客户端、网络和服务器。
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图及实施例对本公开示例实施例中的权限检测方法的各个步骤进行更详细的说明。
图2示出了本公开一个实施例的权限检测方法的流程图。本公开实施例提供的方法可以由如图1所示的服务器101或客户端103执行,但本公开并不限定于此。
在下面的举例说明中,以客户端103为执行主体进行示例说明。
如图2所示,本公开实施例提供的权限检测方法可以包括以下步骤。
步骤S201,获取待检测应用程序包。
本步骤中,待检测应用程序包例如可以是待检测的安卓应用的APK(Androidapplication package,安卓应用程序包)文件,在移动设备上安装待检测应用程序包后可以生成能被用户使用的安卓应用程序。
在一些实际应用中,待检测应用可以用于实现某些既定功能,待检测应用程序包中可以包含至少一种SDK(Software Development Kit,软件开发工具包)用于实现这些既定功能;待检测应用在功能实现过程中会产生各种对于权限的请求,例如收集移动设备中存储的图像资源信息的请求、读取移动设备机主的联系人信息的请求、读取设备中短信信息的请求、监听移动设备通话的请求、远程遥控移动设备的请求等。这些权限请求可以是待检测应用程序包本身发出的,也可以是待检测应用程序包通过调用其中的SDK发出的;这些权限请求中有些是正常请求(合规请求),有些是异常请求(恶意请求),可以通过本公开提供的权限检测方法确定待检测应用程序包中与SDK相关的SDK权限检测结果。
步骤S203,确定待检测应用程序包中的静态软件开发工具包SDK集,并查询SDK权限数据库以获得静态SDK集中各静态SDK的静态权限表。
本步骤中,可以先静态解析待检测应用程序包以得到其中所使用的SDK,进而确定SDK集。例如,可以对待检测应用程序包进行反编译处理以得到其中所携带的资源数据;再从资源数据中确定待检测应用程序包中所使用的SDK。
以待检测应用程序包为APK文件而言,可以先使用反编译工具(如ApkTool、jadx等工具)对APK进行反编译,获得APK中的资源文件;然后可以对资源文件进行SDK信息提取获得APK中所使用的SDK,以组成静态SDK集。在一些实际应用中,资源文件可以包括以下中的至少一种:静态数据连接库lib文件、项目构建build.gradle文件。基于此,进一步地,可以遍历lib文件夹得到该文件夹下的SDK文件,以及可以识别build.gradle文件依赖项目中的内容以得到与build.gradle文件相关的SDK文件,这些都是静态提取到的,可以认为是静态SDK,从而组成静态SDK集。
SDK权限数据库可以是预先构建好的,本步骤中调用即可。SDK权限数据库中可以存储有多个SDK及允许各SDK发起的权限请求,一个SDK被允许发起的权限请求构成的集合可以看作为该SDK的静态权限表。例如,对于某已知SDK,SDK权限数据库中可以存储有该已知SDK的标识(如名称或编码信息等),以及对应存储有该已知SDK的静态权限表,即允许该已知SDK发起的至少一个权限请求的标识(如请求的名称、请求的编码信息、请求的正则表达式等)。SDK权限数据库中存储的内容可以是通过统计历史数据而来,也可以是从SDK权限相关的规范化文档中提取而来,本公开对此可以不作限定。
在一些实际应用中,SDK不被允许发起恶意读取手机联系人列表、短信列表、手机已安装APP信息的请求,以及不被允许发起对监听手机通话、远程遥控手机、恶意索取个人隐私信息等不良行为的请求。
可以通过查询SDK权限数据库获得待检测应用程序包中各静态SDK的静态权限表,其中,可以存在未被记录在SDK权限数据库中的静态SDK,对于未被记录的静态SDK,可以不进行静态权限表的获取或者也可以先创建这些SDK及其静态权限表的字段并将静态权限表的内容设为空,通过后续步骤进行预测以获得权限检测结果,并可以利用预测到的权限检测结果来更新SDK权限数据库。
步骤S205,将待检测应用程序包运行在沙箱环境中,确定待检测应用程序包运行时调用的待检测SDK及待检测SDK发起的权限请求。
本步骤中,沙箱环境可以是例如基于安卓操作系统的真机沙箱环境,可以模拟用户的点击操作在真机沙箱环境中运行待测应用的APK文件,以及模拟用户对待测应用中各种功能的真实操作,以使待测应用产生权限请求,这些权限请求中有的是APK发起的,有些是APK所调用的SDK发起的,在此过程中,可以从这些权限请求中确定出SDK发起的权限请求,并同时将发起这些权限请求的SDK确定为待检测SDK,其中,待检测SDK可以认为是待检测应用程序包的动态SDK。
步骤S207,根据静态SDK的静态权限表和待检测SDK发起的权限请求,确定待检测应用程序包的SDK权限检测结果。
本步骤中,在经过了对待检测应用程序包中的静态SDK提取并通过查询SDK权限数据库以获得静态SDK集中各静态SDK的静态权限表,以及在待检测应用运行过程中获取其所调用的待检测SDK(即动态SDK)及待检测SDK发起的权限请求后,可以将从静、动两方面获取到的与权限请求信息共同作为对SDK权限进行检测的数据基础,以确定待检测应用程序包的SDK权限检测结果。
通过本公开提供的权限检测方法,可以结合静态和动态两种方式确定待检测应用程序包的SDK权限检测结果,使得对待检测应用程序包的SDK的权限检测更全面、更准确。
图3示出了本公开一个实施例的权限检测方法中确定SDK权限检测结果的方法的流程图。如图3所示,在一些实施例中,步骤S207可以进一步包括以下步骤。
步骤S301,若待检测SDK属于静态SDK集,将待检测SDK确定为第一SDK,使用第一SDK的静态权限表和第一SDK发起的权限请求对第一SDK进行权限检测,获得第一SDK的第一结果。
本步骤中,对于第一SDK,一方面可以查询到已记录的第一SDK的静态权限表,另一方面可以通过将待检测应用程序包运行在沙箱环境中以获得第一SDK实际发起的权限请求,进而可以将二者(静态权限表和实际发起的权限请求)结合进行比对,以获得第一SDK的第一结果。
在一些实施例中,步骤S301可以进一步包括:判断第一SDK发起的权限请求是否存在于第一SDK的静态权限表中;若是,则确定第一SDK的第一结果为正常;若否,则确定第一SDK的第一结果为异常。
本实施例中,第一SDK的静态权限表中所记录的请求可以认为是合规的、正常的请求,因此若发现第一SDK实际发起的权限请求不存在于静态权限表中,则可以认为第一SDK在实际运行中发起了不合规的权限请求,进而可以确定此种情况下第一SDK的权限检测结果(即第一结果)为异常。
步骤S303,若待检测SDK不属于静态SDK集,将待检测SDK确定为第二SDK,基于第二SDK发起的权限请求对第二SDK进行权限检测,获得第二SDK的第二结果。
本步骤中,由于第二SDK未被记录在SDK权限数据库中,因此可以通过本步骤的预测来确定第二SDK的权限检测结果(即第二结果)。
在一些实施例中,步骤S303可以进一步包括:通过训练好的权限分类模型处理第二SDK发起的权限请求,获得第二SDK发起的权限请求的分类结果;其中,分类结果为异常请求或正常请求;判断第二SDK发起的动态权限的分类结果中是否存在异常请求;若否,则确定第二SDK的第二结果为正常;若是,则确定第二SDK的第二结果为异常。
其中,训练好的权限分类模型可以用于对第二SDK发起的权限请求进行分类判断,例如可以判断出第二SDK发起的权限请求是正常请求还是异常请求。本步骤中,可以将不属于静态SDK集的待检测SDK所发起的权限请求输入至训练好的权限分类模型中,通过训练好的权限分类模型处理该权限请求,输出权限请求的分类结果,以确定第二SDK发起的权限请求是正常请求还是异常请求。通过本实施例,可以在缺少第二SDK的静态权限表的情况下通过训练好的权限分类模型来预测第二SDK的权限检测结果(即第二结果)为正常还是异常。
在一些实际应用中,可以基于机器学习的线性回归算法或线性分类算法来构建以及训练上述权限分类模型。
权限分类模型可以包含特征提取模块和分类模块。以下对构建及训练上述权限分类模型的过程进行举例说明:
首先,可以先获取训练样本,本步骤中可以将SDK及其发起的已知是否合规(正常)的权限请求作为训练样本,权限请求正常与否可以看作是它的样本标签。举例而言,与图像处理相关的SDK发起存储图像的请求可以看作是正常的,该SDK发起读取设备机主联系人的请求则可以看作是异常的;再例如,用于重力感应游戏的SDK发起从设备中读取重力传感器数据的请求可以看作是正常的,该SDK发起监听手机通话或远程遥控手机的请求则可以看作是异常的。在一些实际应用中,可以从前述步骤中提到的SDK权限数据库中选取训练样本。
其次,可以使用特征提取模块对SDK及其发起的权限请求进行特征提取,以得到权限请求的特征。特征提取模块可以是基于自然语言处理算法的机器模型,例如,可以是基于N-Gram(一种汉语语言模型)算法的机器模型,可以采用N-Gram算法对权限请求进行特征提取,以得到权限请求的特征。其中,N-Gram是一种基于统计语言模型的算法。它的基本思想是将文本(如权限请求)里面的内容按照字节进行大小为N的滑动窗口操作,形成长度是N的字节片段序列,其中每一个字节片段可以称为gram;对所有gram的出现频度进行统计,并且按照事先设定好的阈值进行过滤,可以形成关键gram列表,也就是这个文本的向量特征空间,列表中的每一种gram可以看作是这个文本的一个特征向量维度。
接着,可以使用权限请求的特征以及权限请求的样本标签对初始分类模块进行训练,初始分类模块可以是基于线性回归算法构建的未经训练的机器模型。具体而言,可以使用初始分类模块处理权限请求的特征进行数据拟合,得到对权限请求的预测结果;然后分别对预测结果与样本标签进行处理得到各自特征,使用预测结果与样本标签各自的特征构建损失函数;再使用选定的优化算法对初始分类模块中的线性回归系数进行优化调参以使得损失函数的损失值最小化,最终得到训练好的分类模型。
其中,在构建损失函数时可以选用均方差(最小二乘法)作为代价函数,在确定线性回归系数的优化算法时,可以选用正则化法作为优化算法,在一些实际应用中,正则化函数可以是:
其中,m可以表示预测结果与样本标签的特征的维度,x(i)可以表示预测结果的特征中第i维度的值,y(i)可以表示样本标签的特征中第i维度的值,θ0…θj可以表示资源数据的数据特征的线性域。
最后,以训练好的分类模块和特征提取模块共同构成本实施例中的训练好的权限分类模型。
该训练好的权限分类模型,可以对输入的SDK(如第二SDK)发起的权限请求进行分类判断,得到权限请求为异常请求或正常请求的输出结果。
在一些实施例中,权限检测方法还包括:若第二SDK发起的权限请求的分类结果为异常请求,则拦截分类结果为异常请求的权限请求。
在一些实际应用中,在上述过程中模型训练结束后,可以获得最终的hθ,可以利用hθ构建拦截因子及拦截因子计算模型,可以将拦截因子计算模型置入权限分类模型中,拦截因子计算模型中的拦截因子可以将预测为异常请求的权限请求消费掉,然后返回空值,即可实现对异常请求的拦截,从而使得应用程序对权限的请求更加合规,使得用户在使用应用程序的过程中更加安全,避免了不必要的信息泄露。
在一些实际应用中,拦截因子的表达式可以是:
其中,k(θ)可以为上述hθ。
步骤S305,若静态SDK集中存在未在待检测应用程序包运行时被调用的静态SDK,将静态SDK确定为第三SDK,并获取预设结果作为第三SDK的第三结果。
本步骤中,第三结果可以是预设类型的结果,例如设置为风险类型、待关注类型等。第三SDK可以看作是待检测应用程序包中写入了的但实际中未发起权限请求的SDK,这类SDK虽然没有发起请求,但未发起请求的原因可能是本次沙箱运行中未出现使其发起请求的应用场景,而不是它不会发起请求,因此这类SDK需要在后续步骤中被关注,当第三SDK在其他场景中发起权限请求时,可以采用与第一SDK类似的方式确定其权限检测结果。
步骤S307,根据第一结果、第二结果和第三结果确定待检测应用程序包的SDK权限检测结果。
通过本实施例提供的确定SDK权限检测结果的方法,可以将SDK分类型地进行检测,得到各类SDK的权限检测结果,其中包括动态静态结合的方式确定出的检测结果,以及包括对权限请求预测分类结果的方式确定出的检测结果,可见通过本实施例提供的方法,可以使得对待检测应用程序包的SDK的权限检测更全面、更准确。
在一些实施例中,在获得第二SDK的第二结果之后,本公开提供的权限检测方法还可以包括:将第二SDK及其发起的分类结果为正常请求的权限请求对应存储至SDK权限数据库中,以对SDK权限数据库进行更新。
在一些实施例中,待检测应用程序包中还包含具有防护功能的防护SDK,防护SDK中包括训练好的权限预测模型;其中,在通过训练好的权限预测模型处理第二SDK发起的权限请求之前,权限检测方法还可以包括:调用防护SDK中的训练好的权限预测模型;以及,权限检测方法还包括:通过防护SDK对预测结果为异常请求的权限请求进行拦截。
在一些实际应用中,可以先获取应用程序的初始应用程序包和具有防护功能的防护SDK,然后将防护SDK注入至初始应用程序包的源码中,获得应用程序的待检测应用程序包。
在一些实施例中,在确定待检测应用程序包的SDK权限检测结果之后,权限检测方法还包括:获取待检测应用程序包的散列值;将散列值和SDK权限检测结果关联存储至检测数据库中。
在一些实际应用中,可以使用SHA-1(Secure Hash Algorithm 1,安全散列算法1,一种密码散列函数)算法处理待检测应用程序包,得到待检测应用程序包的SHA-1值;具体而言,SHA-1算法可以基于待检测应用程序包生成一个被称为消息摘要的160位(20字节)散列值,该散列值呈现形式可以为40个十六进制数。
通过本实施例,可以将待检测应用程序包的散列值与前述步骤所得到的待检测应用程序包的SDK权限检测结果进行关联存储,待检测应用程序包的散列值可以看作是该待检测应用程序包的一种标识方式,不仅可以标识待检测应用程序包的名称等信息,还可以标识其中的版本内容,例如,假设待检测应用程序包的内容被更新了但名称未变,那么由于其内容已被更新,故计算出的散列值也会变化,则可以通过比对散列值而得知待检测应用程序包已被更新,从而不会由于名称未变而漏掉重新确定SDK权限检测结果的流程。
在一些实施例中,在确定待检测应用程序包中的静态SDK集之前,权限检测方法还包括:计算待检测应用程序包的散列值;调用检测数据库,判断散列值是否存在于检测数据库中;若散列值不存在于检测数据库中,则执行确定待检测应用程序包中的静态SDK集的步骤,也即,执行本公开提供的权限检测方法。
在一些实施例中,若散列值存在于检测数据库中,则从检测数据库中获取与散列值对应的目标SDK权限检测结果,以作为待检测应用程序包的SDK权限检测结果。
可见,随着越来越多的待检测应用程序包的SDK权限检测结果的确定,检测数据库中的数据量会越来越丰富,那么新的待检测应用程序包就更有可能由于已被确定过SDK权限检测结果而存在于检测数据库中,进而更有可能快速响应于新的待检测应用程序包的SDK权限检测请求。
需要注意的是,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
图4示出了本公开一个实施例的权限检测装置400的框图;如图4所示,包括:获取模块401,用于获取待检测应用程序包;静态确定模块402,用于确定待检测应用程序包中的静态软件开发工具包SDK集,并查询SDK权限数据库以获得静态SDK集中各静态SDK的静态权限表;动态确定模块403,用于将待检测应用程序包运行在沙箱环境中,确定待检测应用程序包运行时调用的待检测SDK及待检测SDK发起的权限请求;结果确定模块404,用于根据静态SDK的静态权限表和待检测SDK发起的权限请求,确定待检测应用程序包的SDK权限检测结果。
通过本公开提供的权限检测装置,可以结合静态和动态两种方式确定待检测应用程序包的SDK权限检测结果,使得对待检测应用程序包的SDK的权限检测更全面、更准确。
在一些实施例中,结果确定模块404根据静态SDK的静态权限表和待检测SDK发起的权限请求,确定待检测应用程序包的SDK权限检测结果,包括:若待检测SDK属于静态SDK集,将待检测SDK确定为第一SDK,使用第一SDK的静态权限表和第一SDK发起的权限请求对第一SDK进行权限检测,获得第一SDK的第一结果;若待检测SDK不属于静态SDK集,将待检测SDK确定为第二SDK,基于第二SDK发起的权限请求对第二SDK进行权限检测,获得第二SDK的第二结果;若静态SDK集中存在未在待检测应用程序包运行时被调用的静态SDK,将静态SDK确定为第三SDK,并获取预设结果作为第三SDK的第三结果;根据第一结果、第二结果和第三结果确定待检测应用程序包的SDK权限检测结果。
在一些实施例中,结果确定模块404使用第一SDK的静态权限表和第一SDK发起的权限请求对第一SDK进行权限检测,获得第一SDK的第一结果,包括:判断第一SDK发起的权限请求是否存在于第一SDK的静态权限表中;若是,则确定第一SDK的第一结果为正常;若否,则确定第一SDK的第一结果为异常。
在一些实施例中,结果确定模块404基于第二SDK发起的权限请求对第二SDK进行权限检测,获得第二SDK的第二结果,包括:通过训练好的权限分类模型处理第二SDK发起的权限请求,获得第二SDK发起的权限请求的分类结果;其中,分类结果为异常请求或正常请求;判断第二SDK发起的动态权限的分类结果中是否存在异常请求;若否,则确定第二SDK的第二结果为正常;若是,则确定第二SDK的第二结果为异常。
在一些实施例中,权限检测装置400还包括存储模块405,存储模块405用于:在确定待检测应用程序包的SDK权限检测结果后,将第二SDK及其发起的分类结果为正常请求的权限请求对应存储至SDK权限数据库中,以对SDK权限数据库进行更新。
在一些实施例中,待检测应用程序包中还包含具有防护功能的防护SDK,防护SDK中包括训练好的权限预测模型;其中,在通过训练好的权限预测模型处理第二SDK发起的权限请求之前,结果确定模块404还用于:调用防护SDK中的训练好的权限预测模型;以及,权限检测装置400还包括拦截模块406,用于通过防护SDK对预测结果为异常请求的权限请求进行拦截。
在一些实施例中,在确定待检测应用程序包的SDK权限检测结果之后,获取模块401还用于:获取待检测应用程序包的散列值;存储模块405用于:将散列值和SDK权限检测结果关联存储至检测数据库中。
在一些实施例中,在确定待检测应用程序包中的静态SDK集之前,获取模块401还用于:计算待检测应用程序包的散列值;调用检测数据库,判断散列值是否存在于检测数据库中;若散列值不存在于检测数据库中,则静态确定模块402执行确定待检测应用程序包中的静态SDK集的步骤;若散列值存在于检测数据库中,则获取模块401从检测数据库中获取与散列值对应的目标SDK权限检测结果,以作为待检测应用程序包的SDK权限检测结果。
图4实施例的其它内容可以参照上述其它实施例。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
图5示出本公开实施例中一种权限检测计算机设备的结构框图。需要说明的是,图示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
下面参照图5来描述根据本发明的这种实施方式的电子设备500。图5显示的电子设备500仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,电子设备500以通用计算设备的形式表现。电子设备500的组件可以包括但不限于:上述至少一个处理单元510、上述至少一个存储单元520、连接不同系统组件(包括存储单元520和处理单元510)的总线530。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元510执行,使得所述处理单元510执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元510可以执行如图2中所示的方法。
存储单元520可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)5201和/或高速缓存存储单元5202,还可以进一步包括只读存储单元(ROM)5203。
存储单元520还可以包括具有一组(至少一个)程序模块5205的程序/实用工具5204,这样的程序模块5205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线530可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备500也可以与一个或多个外部设备600(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备500交互的设备通信,和/或与使得该电子设备500能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口550进行。并且,电子设备500还可以通过网络适配器560与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器560通过总线530与电子设备500的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备500使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
根据本发明实施方式的用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
根据本公开的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例的各种可选实现方式中提供的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。
Claims (11)
1.一种权限检测方法,其特征在于,包括:
获取待检测应用程序包;
确定所述待检测应用程序包中的静态软件开发工具包SDK集,并查询SDK权限数据库以获得所述静态SDK集中各静态SDK的静态权限表;
将所述待检测应用程序包运行在沙箱环境中,确定所述待检测应用程序包运行时调用的待检测SDK及所述待检测SDK发起的权限请求;
根据所述静态SDK的静态权限表和所述待检测SDK发起的权限请求,确定所述待检测应用程序包的SDK权限检测结果。
2.根据权利要求1所述的方法,其特征在于,根据所述静态SDK的静态权限表和所述待检测SDK发起的权限请求,确定所述待检测应用程序包的SDK权限检测结果,包括:
若所述待检测SDK属于所述静态SDK集,将所述待检测SDK确定为第一SDK,使用所述第一SDK的静态权限表和所述第一SDK发起的权限请求对所述第一SDK进行权限检测,获得所述第一SDK的第一结果;
若所述待检测SDK不属于所述静态SDK集,将所述待检测SDK确定为第二SDK,基于所述第二SDK发起的权限请求对所述第二SDK进行权限检测,获得所述第二SDK的第二结果;
若所述静态SDK集中存在未在所述待检测应用程序包运行时被调用的静态SDK,将所述静态SDK确定为第三SDK,并获取预设结果作为所述第三SDK的第三结果;
根据所述第一结果、所述第二结果和所述第三结果确定所述待检测应用程序包的SDK权限检测结果。
3.根据权利要求2所述的方法,其特征在于,使用所述第一SDK的静态权限表和所述第一SDK发起的权限请求对所述第一SDK进行权限检测,获得所述第一SDK的第一结果,包括:
判断所述第一SDK发起的权限请求是否存在于所述第一SDK的静态权限表中;
若是,则确定所述第一SDK的第一结果为正常;若否,则确定所述第一SDK的第一结果为异常。
4.根据权利要求2所述的方法,其特征在于,基于所述第二SDK发起的权限请求对所述第二SDK进行权限检测,获得所述第二SDK的第二结果,包括:
通过训练好的权限分类模型处理所述第二SDK发起的权限请求,获得所述第二SDK发起的权限请求的分类结果;其中,所述分类结果为异常请求或正常请求;
判断所述第二SDK发起的动态权限的分类结果中是否存在异常请求;
若否,则确定所述第二SDK的第二结果为正常;若是,则确定所述第二SDK的第二结果为异常。
5.根据权利要求4所述的方法,其特征在于,在确定所述待检测应用程序包的SDK权限检测结果后,所述方法还包括:
将所述第二SDK及其发起的分类结果为正常请求的权限请求对应存储至所述SDK权限数据库中,以对所述SDK权限数据库进行更新。
6.根据权利要求4所述的方法,其特征在于,所述待检测应用程序包中还包含具有防护功能的防护SDK,所述防护SDK中包括所述训练好的权限预测模型;
其中,在通过训练好的权限预测模型处理所述第二SDK发起的权限请求之前,还包括:调用所述防护SDK中的所述训练好的权限预测模型;以及,
所述方法还包括:通过所述防护SDK对预测结果为异常请求的权限请求进行拦截。
7.根据权利要求1-6任一所述的方法,其特征在于,在确定所述待检测应用程序包的SDK权限检测结果之后,所述方法还包括:
获取所述待检测应用程序包的散列值;
将所述散列值和所述SDK权限检测结果关联存储至检测数据库中。
8.根据权利要求1-6任一所述的方法,其特征在于,在确定所述待检测应用程序包中的静态SDK集之前,所述方法还包括:
计算所述待检测应用程序包的散列值;
调用检测数据库,判断所述散列值是否存在于所述检测数据库中;
若所述散列值不存在于所述检测数据库中,则执行确定所述待检测应用程序包中的静态SDK集的步骤;
若所述散列值存在于所述检测数据库中,则从所述检测数据库中获取与所述散列值对应的目标SDK权限检测结果,以作为所述待检测应用程序包的SDK权限检测结果。
9.一种权限检测装置,其特征在于,包括:
获取模块,用于获取待检测应用程序包;
静态确定模块,用于确定所述待检测应用程序包中的静态软件开发工具包SDK集,并查询SDK权限数据库以获得所述静态SDK集中各静态SDK的静态权限表;
动态确定模块,用于将所述待检测应用程序包运行在沙箱环境中,确定所述待检测应用程序包运行时调用的待检测SDK及所述待检测SDK发起的权限请求;
结果确定模块,用于根据所述静态SDK的静态权限表和所述待检测SDK发起的权限请求,确定所述待检测应用程序包的SDK权限检测结果。
10.一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如权利要求1至8任一项所述的权限检测方法。
11.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至8任一项所述的权限检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211599983.6A CN116028917A (zh) | 2022-12-12 | 2022-12-12 | 权限检测方法及装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211599983.6A CN116028917A (zh) | 2022-12-12 | 2022-12-12 | 权限检测方法及装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116028917A true CN116028917A (zh) | 2023-04-28 |
Family
ID=86076824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211599983.6A Pending CN116028917A (zh) | 2022-12-12 | 2022-12-12 | 权限检测方法及装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116028917A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117473556A (zh) * | 2023-12-15 | 2024-01-30 | 荣耀终端有限公司 | Sdk的管理方法、设备及存储介质 |
-
2022
- 2022-12-12 CN CN202211599983.6A patent/CN116028917A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117473556A (zh) * | 2023-12-15 | 2024-01-30 | 荣耀终端有限公司 | Sdk的管理方法、设备及存储介质 |
CN117473556B (zh) * | 2023-12-15 | 2024-05-24 | 荣耀终端有限公司 | Sdk的管理方法、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022121221A1 (zh) | 基于令牌的应用程序访问方法、装置、计算机设备和介质 | |
US9177129B2 (en) | Devices, systems, and methods for monitoring and asserting trust level using persistent trust log | |
US10356101B2 (en) | Utilizing transport layer security (TLS) fingerprints to determine agents and operating systems | |
US11522885B1 (en) | System and method for information gain for malware detection | |
CN109995523B (zh) | 激活码管理方法及装置、激活码生成方法及装置 | |
CN110888838A (zh) | 基于对象存储的请求处理方法、装置、设备及存储介质 | |
CN111563015A (zh) | 数据监控方法及装置、计算机可读介质及终端设备 | |
CN116303290A (zh) | 一种office文档检测方法及装置、设备及介质 | |
CN115544558A (zh) | 敏感信息检测方法、装置、计算机设备及存储介质 | |
CN116028917A (zh) | 权限检测方法及装置、存储介质及电子设备 | |
CN114726633A (zh) | 流量数据处理方法及装置、存储介质及电子设备 | |
CN114205156A (zh) | 面向切面技术的报文检测方法、装置、电子设备及介质 | |
CN114154153A (zh) | 恶意代码检测方法及装置、电子设备、存储介质 | |
US20190236269A1 (en) | Detecting third party software elements | |
CN109522683A (zh) | 软件溯源方法、系统、计算机设备及存储介质 | |
CN112000491A (zh) | 一种应用程序接口调用方法、装置、设备和存储介质 | |
US10831883B1 (en) | Preventing application installation using system-level messages | |
CN116595523A (zh) | 基于动态编排的多引擎文件检测方法、系统、设备及介质 | |
US11662927B2 (en) | Redirecting access requests between access engines of respective disk management devices | |
CN115643094A (zh) | 一种威胁情报融合方法、装置、电子设备及存储介质 | |
CN117675242A (zh) | 业务请求处理方法、装置、电子设备及存储介质 | |
CN114978646A (zh) | 一种访问权限确定方法、装置、设备和存储介质 | |
CN114710354B (zh) | 异常事件检测方法及装置、存储介质及电子设备 | |
CN115861456A (zh) | 应用程序处理方法及装置、存储介质及电子设备 | |
US12081685B2 (en) | Systems and methods for selectively indexing blockchain operations based on identifying unindexed parameters |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |