接口的漏洞检测方法、装置、存储介质及设备转让专利

申请号 : CN202310302169.1

文献号 : CN116028941B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李扬董传族

申请人 : 天聚地合(苏州)科技股份有限公司

摘要 :

本申请公开了一种接口的漏洞检测方法、装置、存储介质及设备,属于计算机技术领域。所述方法包括:利用卷积神经网络对接口的调用数据进行分析,得到第一分析结果;利用静态切片模型和迭代数据流分析模型对接口的控制流图进行分析,得到第二分析结果;利用反向数据流分析模型和稳定性分析模型对调用数据和控制流图进行分析,得到第三分析结果;利用稳定性分析模型对控制流图和接口的数据流图进行分析,得到第四分析结果;对四种分析结果进行计算得到漏洞检测结果。本申请的调用数据、控制流图和数据流图能体现整个会话的数据流和业务逻辑,不仅能检测出整个会话的数据流和业务逻辑的漏洞,还能检测出未出现过的漏洞,提高漏洞检测的准确性。

权利要求 :

1.一种接口的漏洞检测方法,其特征在于,所述方法包括:

获取待检测的接口的调用数据,生成所述接口的控制流图和数据流图;

利用卷积神经网络对所述调用数据进行分析,得到第一分析结果;

利用静态切片模型和迭代数据流分析模型对所述控制流图进行分析,得到第二分析结果;

利用反向数据流分析模型和稳定性分析模型对所述调用数据和所述控制流图进行分析,得到第三分析结果;

利用所述稳定性分析模型对所述控制流图和所述数据流图进行分析,得到第四分析结果;

对所述第一分析结果、所述第二分析结果、所述第三分析结果和所述第四分析结果进行计算,得到所述接口的漏洞检测结果;

所述利用静态切片模型和迭代数据流分析模型对所述控制流图进行分析,得到第二分析结果,包括:利用所述静态切片模型对所述控制流图进行静态切片,得到所述接口的多个代码片段,每个代码片段对应于所述接口的代码中的一个函数;利用所述迭代数据流分析模型对所述多个代码片段进行迭代数据流分析,得到每个代码片段的输入变量和输出变量,将所述输入变量和所述输出变量确定为第二分析结果;

所述利用反向数据流分析模型和稳定性分析模型对所述调用数据和所述控制流图进行分析,得到第三分析结果,包括:将所述调用数据中的输入变量标记为污点变量;利用所述反向数据流分析模型,基于所述控制流图从所述接口的调用处开始对所述污点变量进行反向遍历,得到每个污点变量的取值范围和依赖关系;利用所述稳定性分析模型根据所述取值范围和所述依赖关系计算每个污点变量的稳定性分值;根据所述稳定性分值生成每个输入变量的第三分析结果,所述第三分析结果用于指示有被攻击风险的输入变量的攻击方式和风险级别;

所述利用所述稳定性分析模型对所述控制流图和所述数据流图进行分析,得到第四分析结果,包括:利用所述稳定性分析模型根据所述控制流图和所述数据流图生成程序图,所述程序图中的节点表示所述控制流图或所述数据流图中的元素,所述程序图中的边表示所述节点之间的状态转换;利用所述稳定性分析模型分析所述程序图中各个节点之间的控制关系,得到控制流信息;利用所述稳定性分析模型分析所述程序图中各个节点之间对程序变量的引用关系,得到数据流信息;对所述控制流信息和所述数据流信息进行分析,得到系统的稳定性,将所述稳定性确定为所述第四分析结果;

所述对所述第一分析结果、所述第二分析结果、所述第三分析结果和所述第四分析结果进行计算,得到所述接口的漏洞检测结果,包括:对所述第一分析结果、所述第二分析结果、所述第三分析结果和所述第四分析结果计算梯度值;若所述梯度值大于或等于预定阈值,则生成用于指示所述接口存在漏洞的漏洞检测结果;若所述梯度值小于预定阈值,则生成用于指示所述接口不存在漏洞的漏洞检测结果。

2.根据权利要求1所述的接口的漏洞检测方法,其特征在于,所述对所述第一分析结果、所述第二分析结果、所述第三分析结果和所述第四分析结果计算梯度值,包括:将所述第一分析结果、所述第二分析结果、所述第三分析结果和所述第四分析结果转换成相同类型的四种数据;

分别对所述四种数据分配融合权重;

根据所述四种数据和对应的融合权重进行融合,并对融合结果计算梯度值。

3.根据权利要求1或2所述的接口的漏洞检测方法,其特征在于,所述方法还包括:

当所述调用数据中包括请求次数、请求时间和响应时间时,对所述请求次数、所述请求时间和所述响应时间中的至少一个进行异常分析,得到异常分析结果;

若所述异常分析结果指示所述接口的调用存在异常,则触发执行所述生成所述接口的控制流图和数据流图的步骤。

4.一种接口的漏洞检测装置,其特征在于,所述装置包括:

获取模块,用于获取待检测的接口的调用数据,生成所述接口的控制流图和数据流图;

分析模块,用于利用卷积神经网络对所述调用数据进行分析,得到第一分析结果;

所述分析模块,还用于利用静态切片模型和迭代数据流分析模型对所述控制流图进行分析,得到第二分析结果;

所述分析模块,还用于利用反向数据流分析模型和稳定性分析模型对所述调用数据和所述控制流图进行分析,得到第三分析结果;

所述分析模块,还用于利用所述稳定性分析模型对所述控制流图和所述数据流图进行分析,得到第四分析结果;

检测模块,用于对所述第一分析结果、所述第二分析结果、所述第三分析结果和所述第四分析结果进行计算,得到所述接口的漏洞检测结果;

所述分析模块,还用于:利用所述静态切片模型对所述控制流图进行静态切片,得到所述接口的多个代码片段,每个代码片段对应于所述接口的代码中的一个函数;利用所述迭代数据流分析模型对所述多个代码片段进行迭代数据流分析,得到每个代码片段的输入变量和输出变量,将所述输入变量和所述输出变量确定为第二分析结果;

所述分析模块,还用于:将所述调用数据中的输入变量标记为污点变量;利用所述反向数据流分析模型,基于所述控制流图从所述接口的调用处开始对所述污点变量进行反向遍历,得到每个污点变量的取值范围和依赖关系;利用所述稳定性分析模型根据所述取值范围和所述依赖关系计算每个污点变量的稳定性分值;根据所述稳定性分值生成每个输入变量的第三分析结果,所述第三分析结果用于指示有被攻击风险的输入变量的攻击方式和风险级别;

所述分析模块,还用于:利用所述稳定性分析模型根据所述控制流图和所述数据流图生成程序图,所述程序图中的节点表示所述控制流图或所述数据流图中的元素,所述程序图中的边表示所述节点之间的状态转换;利用所述稳定性分析模型分析所述程序图中各个节点之间的控制关系,得到控制流信息;利用所述稳定性分析模型分析所述程序图中各个节点之间对程序变量的引用关系,得到数据流信息;对所述控制流信息和所述数据流信息进行分析,得到系统的稳定性,将所述稳定性确定为所述第四分析结果;

所述检测模块,还用于:对所述第一分析结果、所述第二分析结果、所述第三分析结果和所述第四分析结果计算梯度值;若所述梯度值大于或等于预定阈值,则生成用于指示所述接口存在漏洞的漏洞检测结果;若所述梯度值小于预定阈值,则生成用于指示所述接口不存在漏洞的漏洞检测结果。

5.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如权利要求1至3任一所述的接口的漏洞检测方法。

6.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至3任一所述的接口的漏洞检测方法。

说明书 :

接口的漏洞检测方法、装置、存储介质及设备

技术领域

[0001] 本申请涉及计算机技术领域,特别涉及一种接口的漏洞检测方法、装置、存储介质及设备。

背景技术

[0002] 在对接口进行漏洞检测时,通常是采用漏洞检测应用对接口进行漏洞扫描,并将扫描到的特征与漏洞库中已经出现过的漏洞的特征进行比较,若确定扫描到的特征与漏洞库中某一漏洞的特征较为相似,则确定该接口存在漏洞。
[0003] 漏洞库中收集的都是已经出现过的漏洞,所以,通过漏洞检测应用无法检测出还未出现过的漏洞;并且,漏洞检测应用通常只能检测到接口的单个请求与响应之间的数据流,无法检测出整个会话的数据流以及业务逻辑的漏洞。

发明内容

[0004] 本申请提供了一种接口的漏洞检测方法、装置、存储介质及设备,用于解决采用漏洞检测应用检测接口的漏洞时,无法检测出未出现过的漏洞,且无法检测出整个会话的数据流以及业务逻辑的漏洞的问题。所述技术方案如下:
[0005] 一方面,提供了一种接口的漏洞检测方法,所述方法包括:
[0006] 获取待检测的接口的调用数据,生成所述接口的控制流图和数据流图;
[0007] 利用卷积神经网络对所述调用数据进行分析,得到第一分析结果;
[0008] 利用静态切片模型和迭代数据流分析模型对所述控制流图进行分析,得到第二分析结果;
[0009] 利用反向数据流分析模型和稳定性分析模型对所述调用数据和所述控制流图进行分析,得到第三分析结果;
[0010] 利用所述稳定性分析模型对所述控制流图和所述数据流图进行分析,得到第四分析结果;
[0011] 对所述第一分析结果、所述第二分析结果、所述第三分析结果和所述第四分析结果进行计算,得到所述接口的漏洞检测结果。
[0012] 在一种可能的实现方式中,所述对所述第一分析结果、所述第二分析结果、所述第三分析结果和所述第四分析结果进行计算,得到所述接口的漏洞检测结果,包括:
[0013] 对所述第一分析结果、所述第二分析结果、所述第三分析结果和所述第四分析结果计算梯度值;
[0014] 若所述梯度值大于或等于预定阈值,则生成用于指示所述接口存在漏洞的漏洞检测结果;
[0015] 若所述梯度值小于预定阈值,则生成用于指示所述接口不存在漏洞的漏洞检测结果。
[0016] 在一种可能的实现方式中,所述对所述第一分析结果、所述第二分析结果、所述第三分析结果和所述第四分析结果计算梯度值,包括:
[0017] 将所述第一分析结果、所述第二分析结果、所述第三分析结果和所述第四分析结果转换成相同类型的四种数据;
[0018] 分别对所述四种数据分配融合权重;
[0019] 根据所述四种数据和对应的融合权重进行融合,并对融合结果计算梯度值。
[0020] 在一种可能的实现方式中,所述利用反向数据流分析模型和稳定性分析模型对所述调用数据和所述控制流图进行分析,得到第三分析结果,包括:
[0021] 将所述调用数据中的输入变量标记为污点变量;
[0022] 利用所述反向数据流分析模型,从所述接口的调用处开始对所述污点变量进行反向遍历,得到每个污点变量的取值范围和依赖关系;
[0023] 利用所述稳定性分析模型根据所述取值范围和所述依赖关系计算每个污点变量的稳定性分值;
[0024] 根据所述稳定性分值生成每个输入变量的第三分析结果,所述第三分析结果用于指示有被攻击风险的输入变量的攻击方式和风险级别。
[0025] 在一种可能的实现方式中,所述利用所述稳定性分析模型对所述控制流图和所述数据流图进行分析,得到第四分析结果,包括:
[0026] 利用所述稳定性模型根据所述控制流图和所述数据流图生成程序图,所述程序图中的节点表示所述控制流图或所述数据流图中的元素,所述程序图中的边表示所述节点之间的状态转换;
[0027] 利用所述稳定性模型分析所述程序图中各个节点之间的控制关系,得到控制流信息;
[0028] 利用所述稳定性模型分析所述程序图中各个节点之间对程序变量的引用关系,得到数据流信息;
[0029] 对所述控制流信息和所述数据流信息进行分析,得到系统的稳定性,将所述稳定性确定为所述第四分析结果。
[0030] 在一种可能的实现方式中,所述利用静态切片模型和迭代数据流分析模型对所述控制流图进行分析,得到第二分析结果,包括:
[0031] 利用所述静态切片模型对所述控制流图进行静态切片,得到所述接口的多个代码片段,每个代码片段对应于所述接口的代码中的一个函数;
[0032] 利用所述迭代数据流分析模型对所述多个代码片段进行迭代数据流分析,得到每个代码片段的输入变量和输出变量,将所述输入变量和所述输出变量确定为第二分析结果。
[0033] 在一种可能的实现方式中,所述方法还包括:
[0034] 当所述调用数据中包括请求次数、请求时间和响应时间时,对所述请求次数、所述请求时间和所述响应时间中的至少一个进行异常分析,得到异常分析结果;
[0035] 若所述异常分析结果指示所述接口的调用存在异常,则触发执行所述生成所述接口的控制流图和数据流图的步骤。
[0036] 一方面,提供了一种接口的漏洞检测装置,所述装置包括:
[0037] 获取模块,用于获取待检测的接口的调用数据,生成所述接口的控制流图和数据流图;
[0038] 分析模块,用于利用卷积神经网络对所述调用数据进行分析,得到第一分析结果;
[0039] 所述分析模块,还用于利用静态切片模型和迭代数据流分析模型对所述控制流图进行分析,得到第二分析结果;
[0040] 所述分析模块,还用于利用反向数据流分析模型和稳定性分析模型对所述调用数据和所述控制流图进行分析,得到第三分析结果;
[0041] 所述分析模块,还用于利用所述稳定性分析模型对所述控制流图和所述数据流图进行分析,得到第四分析结果;
[0042] 检测模块,用于对所述第一分析结果、所述第二分析结果、所述第三分析结果和所述第四分析结果进行计算,得到所述接口的漏洞检测结果。
[0043] 一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如上所述的接口的漏洞检测方法。
[0044] 一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上所述的接口的漏洞检测方法。
[0045] 本申请提供的技术方案的有益效果至少包括:
[0046] 通过利用卷积神经网络对接口的调用数据进行分析,得到第一分析结果;利用静态切片模型和迭代数据流分析模型对控制流图进行分析,得到第二分析结果;利用反向数据流分析模型和稳定性分析模型对调用数据和控制流图进行分析,得到第三分析结果;利用稳定性分析模型对控制流图和数据流图进行分析,得到第四分析结果;然后,可以对第一分析结果、第二分析结果、第三分析结果和第四分析结果进行计算,得到接口的漏洞检测结果。由于调用数据、控制流图和数据流图可以体现接口的整个会话的数据流以及业务逻辑,所以,不仅能检测出整个会话的数据流以及业务逻辑的漏洞,还能检测出还未出现过的漏洞,提高了漏洞检测的准确性。

附图说明

[0047] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0048] 图1是本申请一个实施例提供的接口的漏洞检测方法的方法流程图;
[0049] 图2是本申请另一实施例提供的接口的漏洞检测方法的方法流程图;
[0050] 图3是本申请再一实施例提供的接口的漏洞检测装置的结构框图。

具体实施方式

[0051] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
[0052] 请参考图1,其示出了本申请一个实施例提供的接口的漏洞检测方法的方法流程图,该接口的漏洞检测方法可以应用于计算机设备中。该接口的漏洞检测方法,可以包括:
[0053] 步骤101,获取待检测的接口的调用数据,生成接口的控制流图和数据流图。
[0054] 计算机设备需要收集用户对接口的调用数据。其中,调用数据包括但不限于请求次数、请求时间、响应时间、请求参数。
[0055] 本实施例中,计算机设备可以采用Spark Streaming从多个数据源(如网站、移动应用程序等)收集调用数据。然后,计算机设备可以使用Spark SQL将采集的调用数据存储到数据仓库中,以便以后进行数据分析。可选的,计算机设备还可以使用SparkDataFrame API对采集的调用数据进行清洗、整理和转换,以准备进行数据分析。
[0056] 控制流图是用在编译器中的一个抽象数据结构,由编译器在内部维护,代表了一个程序执行过程中会遍历到的所有路径。控制流图可以用图的形式表示一个过程内所有基本块执行的可能流向, 也能反映一个过程的实时执行过程。
[0057] 数据流图是从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。
[0058] 步骤102,利用卷积神经网络对调用数据进行分析,得到第一分析结果。
[0059] 卷积神经网络(Convolutional Neural Network,CNN)是一种经典的深度学习神经网络模型,广泛应用于计算机视觉领域的图像识别、分类、分割等任务。
[0060] 卷积神经网络通常包含卷积层、池化层和全连接层三部分。在卷积层中,通过卷积核与输入的特征图之间的卷积操作提取出特征图中的局部特征,实现了对输入数据的特征提取。具体的,可以控制卷积核在特征图上滑动,每次计算出一个局部特征,并将其映射到下一层特征图中。在池化层中,通过对特征图进行下采样或上采样等操作来降低数据维度、压缩特征信息量,同时保留关键的特征信息,增强了网络的鲁棒性和泛化能力。在全连接层中,通过将经过卷积和池化处理后的特征图展开成一维向量,并通过多个全连接层实现特征的高级表征和分类。
[0061] 具体的,计算机设备先将调用数据转换为适合卷积神经网络处理的张量形式,即将调用数据转换为二维或三维数组形式;使用卷积层和池化层对形式转换后的调用数据进行特征提取,其中,卷积层通过卷积核提取输入数据的特征,而池化层通过降采样将数据量减小,保留主要特征;将提取出来的特征数据扁平化成一维数据;将扁平化的特征数据输入到全连接层中,用于最终分类;根据分类结果和真实标签计算损失函数;通过反向传播算法计算梯度值,更新权重参数;重复以上步骤,直到达到预设的迭代次数或损失函数值满足条件。通过以上分析过程,卷积神经网络可以对调用数据进行分类,得到的第一分析结果用于判断其是否存在安全漏洞。
[0062] 步骤103,利用静态切片模型和迭代数据流分析模型对控制流图进行分析,得到第二分析结果。
[0063] 静态切片(Static Slicing)是一种程序分析技术,其可以在程序的控制流和数据流之间提取相关的语句和变量,以便更容易地理解和调试程序。静态切片模型可以帮助程序员快速定位程序中的错误或异常,并减少调试时间和成本。
[0064] 迭代数据流分析(Iterative Data Flow Analysis)是一种程序分析技术,其通过迭代计算程序的数据流信息以确定程序的行为和性能。迭代数据流分析模型通常使用数据流方程(Data Flow Equations)来表示程序的数据流信息,然后通过迭代计算来求解这些方程。
[0065] 步骤104,利用反向数据流分析模型和稳定性分析模型对调用数据和控制流图进行分析,得到第三分析结果。
[0066] 反向数据流分析(Backward Data Flow Analysis)是一种程序分析技术,其与正向数据流分析相反,从程序的出口开始追踪数据流,以确定程序的控制流和数据流。反向数据流分析模型通常用于检测程序中的错误或漏洞,例如,未初始化的变量或不良的内存访问。
[0067] 稳定性分析(Stability Analysis)是一种程序分析技术,它可以确定程序的稳定性和鲁棒性,即程序在面对异常情况时的表现。稳定性分析模型通常通过模拟程序的执行过程来确定程序的性能和可靠性,并在必要时提供修复建议。
[0068] 步骤105,利用稳定性分析模型对控制流图和数据流图进行分析,得到第四分析结果。
[0069] 步骤106,对第一分析结果、第二分析结果、第三分析结果和第四分析结果进行计算,得到接口的漏洞检测结果。
[0070] 计算机设备可以通过预设的融合算法对第一分析结果、第二分析结果、第三分析结果和第四分析结果进行计算,得到漏洞检测结果。其中,漏洞检测结果有两种,一种用于指示接口存在漏洞,另一种用于指示接口不存在漏洞。
[0071] 综上所述,本申请实施例提供的接口的漏洞检测方法,通过利用卷积神经网络对接口的调用数据进行分析,得到第一分析结果;利用静态切片模型和迭代数据流分析模型对控制流图进行分析,得到第二分析结果;利用反向数据流分析模型和稳定性分析模型对调用数据和控制流图进行分析,得到第三分析结果;利用稳定性分析模型对控制流图和数据流图进行分析,得到第四分析结果;然后,可以对第一分析结果、第二分析结果、第三分析结果和第四分析结果进行计算,得到接口的漏洞检测结果。由于调用数据、控制流图和数据流图可以体现接口的整个会话的数据流以及业务逻辑,所以,不仅能检测出整个会话的数据流以及业务逻辑的漏洞,还能检测出还未出现过的漏洞,提高了漏洞检测的准确性。
[0072] 请参考图2,其示出了本申请一个实施例提供的接口的漏洞检测方法的方法流程图,该接口的漏洞检测方法可以应用于计算机设备中。该接口的漏洞检测方法,可以包括:
[0073] 步骤201,获取待检测的接口的调用数据,生成接口的控制流图和数据流图。
[0074] 计算机设备需要收集用户对接口的调用数据。其中,调用数据包括但不限于请求次数、请求时间、响应时间、请求参数。
[0075] 本实施例中,计算机设备可以采用Spark Streaming从多个数据源(如网站、移动应用程序等)收集调用数据。然后,计算机设备可以使用Spark SQL将采集的调用数据存储到数据仓库中,以便以后进行数据分析。可选的,计算机设备还可以使用SparkDataFrame API对采集的调用数据进行清洗、整理和转换,以准备进行数据分析。
[0076] 当调用数据中包括请求次数、请求时间和响应时间时,对请求次数、请求时间和响应时间中的至少一个进行异常分析,得到异常分析结果;若异常分析结果指示接口的调用存在异常,则触发执行生成接口的控制流图和数据流图的步骤。
[0077] 具体的,计算机设备可以计算当天内预定时段的调用数据与历史预定时段的平均调用数据的偏差,若该偏差超过预定阈值,则确定接口的调用存在异常;若该偏差未超过预定阈值,则确定接口的调用不存在异常。比如,当天内预定时段为当天晚上8‑9点,且请求次数为10000,历史预定时段为一个月之内的晚上8‑9点,且平均请求次数为20次,则确定接口的调用存在异常。
[0078] 在确定接口的调用存在异常时,计算机设备可以生成接口的控制流图和数据流图,以便对接口的调用流程进行分析。
[0079] 步骤202,利用卷积神经网络对调用数据进行分析,得到第一分析结果。
[0080] 具体的,计算机设备先将调用数据转换为适合卷积神经网络处理的张量形式,即将调用数据转换为二维或三维数组形式;使用卷积层和池化层对形式转换后的调用数据进行特征提取,其中,卷积层通过卷积核提取输入数据的特征,而池化层通过降采样将数据量减小,保留主要特征;将提取出来的特征数据扁平化成一维数据;将扁平化的特征数据输入到全连接层中,用于最终分类;根据分类结果和真实标签计算损失函数;通过反向传播算法计算梯度值,更新权重参数;重复以上步骤,直到达到预设的迭代次数或损失函数值满足条件。通过以上分析过程,卷积神经网络可以对调用数据进行分类,得到的第一分析结果用于判断其是否存在安全漏洞。
[0081] 步骤203,利用静态切片模型和迭代数据流分析模型对控制流图进行分析,得到第二分析结果。
[0082] 具体的,利用静态切片模型和迭代数据流分析模型对控制流图进行分析,得到第二分析结果,可以包括:利用静态切片模型对控制流图进行静态切片,得到接口的多个代码片段,每个代码片段对应于接口的代码中的一个函数;利用迭代数据流分析模型对多个代码片段进行迭代数据流分析,得到每个代码片段的输入变量和输出变量,将输入变量和输出变量确定为第二分析结果。即,第二分析结果表示的是输入变量和输出变量的赋值。
[0083] 步骤204,利用反向数据流分析模型和稳定性分析模型对调用数据和控制流图进行分析,得到第三分析结果。
[0084] 具体的,利用反向数据流分析模型和稳定性分析模型对调用数据和控制流图进行分析,得到第三分析结果,可以包括:将调用数据中的输入变量标记为污点变量;利用反向数据流分析模型,从接口的调用处开始对污点变量进行反向遍历,得到每个污点变量的取值范围和依赖关系;利用稳定性分析模型根据取值范围和依赖关系计算每个污点变量的稳定性分值;根据稳定性分值生成每个输入变量的第三分析结果,第三分析结果用于指示有被攻击风险的输入变量的攻击方式和风险级别。
[0085] 在计算污点变量的取值范围的过程中,反向数据流分析模型需要根据程序中的运算符和条件语句来计算变量的取值范围,并在计算过程中记录每个变量的依赖关系。
[0086] 在分析稳定性分值时,稳定性分析模型可以分析程序中哪些变量是最容易受到攻击的,并确定攻击的方式和风险级别。
[0087] 步骤205,利用稳定性分析模型对控制流图和数据流图进行分析,得到第四分析结果。
[0088] 具体的,利用稳定性分析模型对控制流图和数据流图进行分析,得到第四分析结果,可以包括:利用稳定性模型根据控制流图和数据流图生成程序图,程序图中的节点表示控制流图或数据流图中的元素,程序图中的边表示节点之间的状态转换;利用稳定性模型分析程序图中各个节点之间的控制关系,得到控制流信息;利用稳定性模型分析程序图中各个节点之间对程序变量的引用关系,得到数据流信息;对控制流信息和数据流信息进行分析,得到系统的稳定性,将稳定性确定为第四分析结果。其中,稳定性可以包括接口参数的稳定性、返回值的稳定性等。
[0089] 步骤206,对第一分析结果、第二分析结果、第三分析结果和第四分析结果计算梯度值。
[0090] 具体的,对第一分析结果、第二分析结果、第三分析结果和第四分析结果计算梯度值,可以包括:将第一分析结果、第二分析结果、第三分析结果和第四分析结果转换成相同类型的四种数据;分别对四种数据分配融合权重;根据四种数据和对应的融合权重进行融合,并对融合结果计算梯度值。
[0091] 由于不同算法得到的分析结果往往是不同的,可能是不同的数据类型、数值范围或者维度,因此,需要将这些分析结果进行转化和归一化,使它们能够进行比较和融合。比如,可以将分析结果统一转化为概率值,或者,将不同算法得到的结果映射到同一数值范围内等。
[0092] 对于不同算法得到的分析结果,其具有不同的置信度或者可信度,我们需要考虑不同分析结果的权重,并且,我们还需要考虑不同算法结果之间的相关性和差异性,选择合适的融合方式。例如,可以采用简单加权平均、投票、决策树等方式来融合分析结果。
[0093] 为方便用户进行进一步的分析和理解,我们需要对融合后的分析结果进行解释和可视化。比如,可以通过绘制热力图、柱状图或者散点图等方式,展示代码中存在的安全风险或者漏洞。
[0094] 步骤207,若梯度值大于或等于预定阈值,则生成用于指示接口存在漏洞的漏洞检测结果。
[0095] 其中,预定阈值可以根据业务需求设置,本实施例中不限定具体的数值。
[0096] 步骤208,若梯度值小于预定阈值,则生成用于指示接口不存在漏洞的漏洞检测结果。
[0097] 综上所述,本申请实施例提供的接口的漏洞检测方法,通过利用卷积神经网络对接口的调用数据进行分析,得到第一分析结果;利用静态切片模型和迭代数据流分析模型对控制流图进行分析,得到第二分析结果;利用反向数据流分析模型和稳定性分析模型对调用数据和控制流图进行分析,得到第三分析结果;利用稳定性分析模型对控制流图和数据流图进行分析,得到第四分析结果;然后,可以对第一分析结果、第二分析结果、第三分析结果和第四分析结果进行计算,得到接口的漏洞检测结果。由于调用数据、控制流图和数据流图可以体现接口的整个会话的数据流以及业务逻辑,所以,不仅能检测出整个会话的数据流以及业务逻辑的漏洞,还能检测出还未出现过的漏洞,提高了漏洞检测的准确性。
[0098] 请参考图3,其示出了本申请一个实施例提供的接口的漏洞检测装置的结构框图,该接口的漏洞检测装置可以应用于计算机设备中。该接口的漏洞检测装置,可以包括:
[0099] 获取模块310,用于获取待检测的接口的调用数据,生成接口的控制流图和数据流图;
[0100] 分析模块320,用于利用卷积神经网络对调用数据进行分析,得到第一分析结果;
[0101] 分析模块320,还用于利用静态切片模型和迭代数据流分析模型对控制流图进行分析,得到第二分析结果;
[0102] 分析模块320,还用于利用反向数据流分析模型和稳定性分析模型对调用数据和控制流图进行分析,得到第三分析结果;
[0103] 分析模块320,还用于利用稳定性分析模型对控制流图和数据流图进行分析,得到第四分析结果;
[0104] 检测模块330,用于对第一分析结果、第二分析结果、第三分析结果和第四分析结果进行计算,得到接口的漏洞检测结果。
[0105] 在一个可选的实施例中,检测模块330,还用于:
[0106] 对第一分析结果、第二分析结果、第三分析结果和第四分析结果计算梯度值;
[0107] 若梯度值大于或等于预定阈值,则生成用于指示接口存在漏洞的漏洞检测结果;
[0108] 若梯度值小于预定阈值,则生成用于指示接口不存在漏洞的漏洞检测结果。
[0109] 在一个可选的实施例中,检测模块330,还用于:
[0110] 将第一分析结果、第二分析结果、第三分析结果和第四分析结果转换成相同类型的四种数据;
[0111] 分别对四种数据分配融合权重;
[0112] 根据四种数据和对应的融合权重进行融合,并对融合结果计算梯度值。
[0113] 在一个可选的实施例中,分析模块320,还用于:
[0114] 将调用数据中的输入变量标记为污点变量;
[0115] 利用反向数据流分析模型,从接口的调用处开始对污点变量进行反向遍历,得到每个污点变量的取值范围和依赖关系;
[0116] 利用稳定性分析模型根据取值范围和依赖关系计算每个污点变量的稳定性分值;
[0117] 根据稳定性分值生成每个输入变量的第三分析结果,第三分析结果用于指示有被攻击风险的输入变量的攻击方式和风险级别。
[0118] 在一个可选的实施例中,分析模块320,还用于:
[0119] 利用稳定性模型根据控制流图和数据流图生成程序图,程序图中的节点表示控制流图或数据流图中的元素,程序图中的边表示节点之间的状态转换;
[0120] 利用稳定性模型分析程序图中各个节点之间的控制关系,得到控制流信息;
[0121] 利用稳定性模型分析程序图中各个节点之间对程序变量的引用关系,得到数据流信息;
[0122] 对控制流信息和数据流信息进行分析,得到系统的稳定性,将稳定性确定为第四分析结果。
[0123] 在一个可选的实施例中,分析模块320,还用于:
[0124] 利用静态切片模型对控制流图进行静态切片,得到接口的多个代码片段,每个代码片段对应于接口的代码中的一个函数;
[0125] 利用迭代数据流分析模型对多个代码片段进行迭代数据流分析,得到每个代码片段的输入变量和输出变量,将输入变量和输出变量确定为第二分析结果。
[0126] 在一个可选的实施例中,分析模块320,还用于:
[0127] 当调用数据中包括请求次数、请求时间和响应时间时,对请求次数、请求时间和响应时间中的至少一个进行异常分析,得到异常分析结果;
[0128] 若异常分析结果指示接口的调用存在异常,则触发执行生成接口的控制流图和数据流图的步骤。
[0129] 综上所述,本申请实施例提供的接口的漏洞检测装置,通过利用卷积神经网络对接口的调用数据进行分析,得到第一分析结果;利用静态切片模型和迭代数据流分析模型对控制流图进行分析,得到第二分析结果;利用反向数据流分析模型和稳定性分析模型对调用数据和控制流图进行分析,得到第三分析结果;利用稳定性分析模型对控制流图和数据流图进行分析,得到第四分析结果;然后,可以对第一分析结果、第二分析结果、第三分析结果和第四分析结果进行计算,得到接口的漏洞检测结果。由于调用数据、控制流图和数据流图可以体现接口的整个会话的数据流以及业务逻辑,所以,不仅能检测出整个会话的数据流以及业务逻辑的漏洞,还能检测出还未出现过的漏洞,提高了漏洞检测的准确性。
[0130] 本申请一个实施例提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如上所述的接口的漏洞检测方法。
[0131] 本申请一个实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上所述的接口的漏洞检测方法。
[0132] 需要说明的是:上述实施例提供的接口的漏洞检测装置在进行接口的漏洞检测时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将接口的漏洞检测装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的接口的漏洞检测装置与接口的漏洞检测方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0133] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0134] 以上所述并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请实施例的保护范围之内。