首页 / 应用逻辑漏洞检测方法

应用逻辑漏洞检测方法实质审查 发明

技术领域

[0001] 本申请涉及智能检测领域,且更为具体地,涉及一种应用逻辑漏洞检测方法。

相关背景技术

[0002] 随着信息技术的发展,软件系统变得日益复杂,其安全性也越来越受到人们的重视。应用程序中的逻辑漏洞是指由于设计或者实现上的缺陷导致的不符合预期的行为模式,这类漏洞往往会被恶意用户利用来进行未授权的操作,如数据篡改、权限提升等,从而对系统的安全性造成严重威胁。
[0003] 目前,对于应用程序的安全性测试主要依赖于代码审查、动态测试(如渗透测试)和静态分析等方式。代码审查主要依赖于人工对代码进行逐行检查,虽然准确率高,但效率低下且易受人为因素影响;动态测试虽然能够发现运行时的问题,但是耗时较长且难以覆盖所有可能的攻击路径,对逻辑漏洞的检测效果有限;而静态代码分析则是在不执行代码的情况下,通过扫描源代码来识别潜在的安全问题,具有自动化程度高、检测速度快等优点。然而,传统的静态分析方法虽然能够在一定程度上提高效率,但由于其主要依靠规则匹配的方式进行漏洞检测,往往难以准确捕捉复杂的业务逻辑错误和源代码中的全局上下文关联信息,容易出现误报和漏报的情况。
[0004] 因此,期待一种优化的应用逻辑漏洞检测方法。

具体实施方式

[0018] 下面,将参考附图详细地描述根据本申请的示例实施例。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是本申请的全部实施例,应理解,本申请不受这里描述的示例实施例的限制。
[0019] 如本申请和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的步骤或元素。
[0020] 虽然本申请对根据本申请的实施例的系统中的某些模块做出了各种引用,然而,任何数量的不同模块可以被使用并运行在用户终端和/或服务器上。所述模块仅是说明性的,并且所述系统和方法的不同方面可以使用不同模块。
[0021] 本申请中使用了流程图用来说明根据本申请的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,根据需要,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
[0022] 下面,将参考附图详细地描述根据本申请的示例实施例。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是本申请的全部实施例,应理解,本申请不受这里描述的示例实施例的限制。
[0023] 目前,对于应用程序的安全性测试主要依赖于代码审查、动态测试(如渗透测试)和静态分析等方式。代码审查主要依赖于人工对代码进行逐行检查,虽然准确率高,但效率低下且易受人为因素影响;动态测试虽然能够发现运行时的问题,但是耗时较长且难以覆盖所有可能的攻击路径,对逻辑漏洞的检测效果有限;而静态代码分析则是在不执行代码的情况下,通过扫描源代码来识别潜在的安全问题,具有自动化程度高、检测速度快等优点。然而,传统的静态分析方法虽然能够在一定程度上提高效率,但由于其主要依靠规则匹配的方式进行漏洞检测,往往难以准确捕捉复杂的业务逻辑错误和源代码中的全局上下文关联信息,容易出现误报和漏报的情况。因此,期待一种优化的应用逻辑漏洞检测方法。
[0024] 在本申请的技术方案中,提出了一种应用逻辑漏洞检测方法。图1为根据本申请实施例的应用逻辑漏洞检测方法的流程图。图2为根据本申请实施例的应用逻辑漏洞检测方法的数据流动示意图。如图1和图2所示,根据本申请的实施例的应用逻辑漏洞检测方法,包括步骤:S1,获取被检测应用程序的源代码;S2,基于所述被检测应用程序的源代码,构造所述被检测应用程序的业务流程图;S3,对所述被检测应用程序的业务流程图进行流程结构特征提取以得到应用程序业务流程结构特征图;S4,对所述应用程序业务流程结构特征图进行特征解耦和特征关联优化以得到应用程序业务流程优化局部结构特征向量的序列;S5,基于所述应用程序业务流程优化局部结构特征向量的序列的全局上下文语义关联特征,确定是否存在安全漏洞。
[0025] 特别地,所述S1,获取被检测应用程序的源代码。应可以理解,源代码是应用程序最基础、最直接的表现形式,包含了程序的所有逻辑、结构和数据处理方式。通过对源代码进行语义分析,可以准确地理解应用程序的运作机制,包括其业务逻辑、数据处理流程、模块间的交互关系等,有助于识别其中潜在的安全漏洞。
[0026] 特别地,所述S2,基于所述被检测应用程序的源代码,构造所述被检测应用程序的业务流程图。为了更好地理解应用程序的业务逻辑和数据处理流程,在本申请的技术方案中,进一步基于所述被检测应用程序的源代码,构造其业务流程图,以便于更清晰地展示各个业务模块之间的调用关系和数据流动。也就是,通过分析源代码中的函数调用、数据流向和模块间交互,将应用程序的业务逻辑抽象为一个有向图,其中节点代表业务流程中的各个操作或模块,边则表示模块间的调用关系或数据流向。通过这种方式,可以将复杂的业务逻辑转换为可视化图形表示,从而为后续的漏洞检测提供更为直观的基础数据。
[0027] 特别地,所述S3,对所述被检测应用程序的业务流程图进行流程结构特征提取以得到应用程序业务流程结构特征图。在本申请的一个具体实例中,将所述被检测应用程序的业务流程图输入GRCNN模型以得到所述应用程序业务流程结构特征图。为了适应所述业务流程图的图结构数据形式,从中有效地提取出业务流程的结构信息,本申请采用了GRCNN(Graph Convolutional Neural Network)模型来对所述被检测应用程序的业务流程图进行处理。GRCNN模型是一种专门针对图结构数据的深度学习模型,能够有效识别流程图中的节点和边,例如流程图中的开始节点、结束节点、条件判断节点、循环节点以及各个节点之间的箭头、连线等连接关系,并能够通过图卷积操作捕捉到节点和边之间的复杂关联,将每个节点及其相关的边编码为具有丰富语义信息的特征向量,进而组合成应用程序业务流程结构特征图。
[0028] 特别地,所述S4,对所述应用程序业务流程结构特征图进行特征解耦和特征关联优化以得到应用程序业务流程优化局部结构特征向量的序列。特别地,在本申请的一个具体示例中,如图3所示,所述S4,包括:S41,对所述应用程序业务流程结构特征图进行特征解耦以得到应用程序业务流程局部结构特征向量的序列;S42,将所述应用程序业务流程局部结构特征向量的序列输入基于分布内关联性感知的特征关联优化网络以得到所述应用程序业务流程优化局部结构特征向量的序列。
[0029] 具体地,所述S41,对所述应用程序业务流程结构特征图进行特征解耦以得到应用程序业务流程局部结构特征向量的序列。考虑到所述应用程序业务流程结构特征图中包含了大量的节点特征和边特征,这些特征之间可能存在冗余和相关性。为了进一步提取和优化应用程序业务流程结构的特征表示,本申请采用了特征解耦技术对所述应用程序业务流程结构特征图进行处理,将其分解为应用程序业务流程局部结构特征向量的序列,从而有效地分离出业务流程图的各个节点和边的特征,有助于更细致地分析和理解业务流程中的局部结构特征。值得一提的是,特征解耦是指将一个复杂特征分解为多个更简单、更独立的特征的过程,其目的是将复杂特征分解为一组更简单的基本特征,这些基本特征相互独立或松散耦合。在机器学习和深度学习中,特征解耦是一个重要的概念,因为它可以提高模型的可解释性、鲁棒性和性能。
[0030] 具体地,所述S42,将所述应用程序业务流程局部结构特征向量的序列输入基于分布内关联性感知的特征关联优化网络以得到所述应用程序业务流程优化局部结构特征向量的序列。由于所述各个应用程序业务流程局部结构特征向量是针对业务流程图中节点或边的特征表示,其中存在着内在的关联性。为了有效地挖掘和利用这种关联性来优化各个局部结构特征向量的表示形式,使其更加准确地反映其在业务流程中的实际意义,从而提高后续分析的精度,本申请引入了基于分布内关联性感知的特征关联优化网络对所述应用程序业务流程局部结构特征向量的序列进行优化处理。具体地,该网络首先通过计算任意两个应用程序业务流程局部结构特征向量之间的语义关联来量化其相似性或差异性,以理解序列内部的语义结构,生成语义关联得分向量的集合。接着,以语义关联得分向量的集合的聚合信息作为整体上下文信息,计算各个应用程序业务流程局部结构特征向量的关联优化因子,量化描述各个业务流程局部结构特征与序列整体语义结构的一致性或偏差,以此来作为特征关联优化的指导。进而,对关联优化因子进行归一化处理后,将其作为权重系数对所述应用程序业务流程局部结构特征向量的序列进行加权优化,以得到应用程序业务流程优化局部结构特征向量的序列,从而提高了特征表示的准确性和相关性。
[0031] 在本申请的实施例中,将所述应用程序业务流程局部结构特征向量的序列输入基于分布内关联性感知的特征关联优化网络以得到所述应用程序业务流程优化局部结构特征向量的序列,包括:计算所述应用程序业务流程局部结构特征向量的序列中任意两个应用程序业务流程局部结构特征向量之间的语义关联得分向量以得到应用程序业务流程局部结构语义关联得分向量的序列;基于所述应用程序业务流程局部结构语义关联得分向量的序列,计算序列内生相关性全局表示向量;基于所述序列内生相关性全局表示向量,计算所述应用程序业务流程局部结构特征向量的序列中的各个应用程序业务流程局部结构特征向量的关联优化因子以得到关联优化因子的序列;将所述关联优化因子的序列输入Softmax激活函数以得到关联优化权重因子的序列;以所述关联优化权重因子的序列中的各个关联优化权重因子作为权重,分别对所述应用程序业务流程局部结构特征向量的序列中的各个应用程序业务流程局部结构特征向量进行加权以得到所述应用程序业务流程优化局部结构特征向量的序列。
[0032] 其中,计算所述应用程序业务流程局部结构特征向量的序列中任意两个应用程序业务流程局部结构特征向量之间的语义关联得分向量以得到应用程序业务流程局部结构语义关联得分向量的序列的过程包括:将所述应用程序业务流程局部结构特征向量的序列中任意两个应用程序业务流程局部结构特征向量进行级联后乘以权重系数矩阵,再和偏置向量进行点加以得到所述应用程序业务流程局部结构语义关联得分向量。
[0033] 更具体地,基于所述应用程序业务流程局部结构语义关联得分向量的序列,计算序列内生相关性全局表示向量的过程包括:计算所述应用程序业务流程局部结构语义关联得分向量的序列的均值向量以得到所述序列内生相关性全局表示向量。
[0034] 更具体地,基于所述序列内生相关性全局表示向量,计算所述应用程序业务流程局部结构特征向量的序列中的各个应用程序业务流程局部结构特征向量的关联优化因子以得到关联优化因子的序列的过程包括:将所述应用程序业务流程局部结构特征向量和所述序列内生相关性全局表示向量分别乘以不同的权重系数向量后进行加法运算以得到语义关联系数;将所述语义关联系数加上偏置参数后通过sigmoid激活函数以得到所述关联优化因子。
[0035] 综上,在上述实施例中,将所述应用程序业务流程局部结构特征向量的序列输入基于分布内关联性感知的特征关联优化网络以得到所述应用程序业务流程优化局部结构特征向量的序列,包括:以如下语义特征关联优化公式对所述应用程序业务流程局部结构特征向量的序列进行处理以得到所述应用程序业务流程优化局部结构特征向量的序列,其中,所述语义特征关联优化公式为:
[0036] X={x1,x2,...,xm}
[0037] rh=Wh[xi;xj]+bh
[0038]
[0039] Gi=Softmax[Sigmoid(MmR+Hmxi+bm)]
[0040] {x′i}={Gi·xi}
[0041] 其中,X表示所述应用程序业务流程局部结构特征向量的序列,x1、x2、xi、xj和xm分别表示所述应用程序业务流程局部结构特征向量的序列中的第一个、第二个、第i个、第j个和第m个应用程序业务流程局部结构特征向量,m的值为所述应用程序业务流程局部结构特征向量的序列中特征向量的个数,[·,·]表示级联操作,Wh为权重系数矩阵,bh为偏置向量,rh为所述应用程序业务流程局部结构语义关联得分向量的序列中的第h个应用程序业务流程局部结构语义关联得分向量,T的值为所述应用程序业务流程局部结构语义关联得分向量的序列中向量的个数,R为所述序列内生相关性全局表示向量,Mm和Hm分别表示不同的权重系数向量,bm为偏置参数,Sigmoid为sigmoid激活函数,Softmax为归一化指数函数,Gi为第i个关联优化因子,x′i表示第i个应用程序业务流程优化局部结构特征向量。
[0042] 值得一提的是,在本申请的其他具体示例中,还可以通过其他方式对所述应用程序业务流程结构特征图进行特征解耦和特征关联优化以得到应用程序业务流程优化局部结构特征向量的序列,例如:首先,使用独立成分分析(ICA)、主成分分析(PCA)、自动编码器或变分自编码器(VAE)等技术,将业务流程结构特征图分解为多个独立或松散耦合的特征;其中,这些解耦的特征代表了业务流程中更简单的基本特征,例如活动、数据流和决策点。
接着,使用相关性分析、信息增益或互信息等技术来量化特征之间的关联性,根据关联性,对特征进行重新组织和分组,以优化特征之间的关联性。随后将优化后的特征关联结构表示为应用程序业务流程优化局部结构特征向量的序列,以得到所述应用程序业务流程优化局部结构特征向量的序列。
[0043] 特别地,所述S5,基于所述应用程序业务流程优化局部结构特征向量的序列的全局上下文语义关联特征,确定是否存在安全漏洞。特别地,在本申请的一个具体示例中,如图4所示,所述S5,包括:S51,对所述应用程序业务流程优化局部结构特征向量的序列进行全局上下文语义关联编码以得到应用程序业务流程上下文语义编码特征向量;S52,将所述应用程序业务流程上下文语义编码特征向量输入基于分类器的安全漏洞检测模块以得到检测结果,所述检测结果用于表示是否存在安全漏洞。
[0044] 具体地,所述S51,对所述应用程序业务流程优化局部结构特征向量的序列进行全局上下文语义关联编码以得到应用程序业务流程上下文语义编码特征向量。在本申请的一个具体示例中,将所述应用程序业务流程优化局部结构特征向量的序列输入基于转换器结构的应用程序业务流程全局上下文语义关联编码器以得到所述应用程序业务流程上下文语义编码特征向量。为了实现对整个业务流程的完整理解,需要综合考虑业务流程图的整体上下文关联信息。为此,本申请进一步采用了基于转换器结构的应用程序业务流程全局上下文语义关联编码器对所述应用程序业务流程优化局部结构特征向量的序列进行关联编码。本领域普通技术人员应知晓,转换器(Transformer)结构是一种基于自注意力机制的深度学习模型,能够有效地捕捉序列内各个元素之间的长距离依赖关系,实现全局上下文信息的提取,从而能够有效挖掘出业务流程图中各个局部结构特征之间的全局性关联,生成综合全局上下文信息的特征表示,即应用程序业务流程上下文语义编码特征向量。
[0045] 具体地,所述S52,将所述应用程序业务流程上下文语义编码特征向量输入基于分类器的安全漏洞检测模块以得到检测结果,所述检测结果用于表示是否存在安全漏洞。在本申请的一个具体示例中,首先,使用所述分类器的多个全连接层对所述应用程序业务流程上下文语义编码特征向量进行全连接编码以得到编码分类特征向量;以及,再将所述编码分类特征向量通过所述分类器的Softmax分类函数以得到所述检测结果。
[0046] 也就是,在本申请的技术方案中,所述分类器的标签包括存在安全漏洞(第一标签),以及,不存在安全漏洞(第二标签),其中,所述分类器通过软最大值函数来确定所述应用程序业务流程上下文语义编码特征向量属于哪个分类标签。值得注意的是,这里的所述第一标签p1和所述第二标签p2并不包含人为设定的概念,实际上在训练过程当中,计算机模型并没有“是否存在安全漏洞”这种概念,其只是有两种分类标签且输出特征在这两个分类标签下的概率,即p1和p2之和为一。因此,是否存在安全漏洞的分类结果实际上是通过分类标签转化为符合自然规律的二分类的类概率分布,实质上用到的是标签的自然概率分布的物理意义,而不是“是否存在安全漏洞”的语言文本意义。
[0047] 值得一提的是,分类器是指一种机器学习模型或算法,用于将输入数据分为不同的类别或标签。分类器是监督学习的一部分,它通过学习从输入数据到输出类别的映射关系来进行分类任务。全连接层是神经网络中常见的一种层类型。在全连接层中,每个神经元都与上一层的所有神经元相连接,每个连接都有一个权重。这意味着全连接层中的每个神经元都接收来自上一层所有神经元的输入,并通过权重对这些输入进行加权求和,然后将结果传递给下一层。Softmax分类函数是一种常用的激活函数,用于多分类问题。它将输入向量的每个元素转化为一个介于0和1之间的概率值,并且这些概率值的和等于1。Softmax函数常用于神经网络的输出层,特别适用于多分类问题,因为它能够将网络输出映射为各个类别的概率分布。在训练过程中,Softmax函数的输出可以用于计算损失函数,并通过反向传播算法来更新网络参数。值得注意的是,Softmax函数的输出并不会改变元素之间的相对大小关系,只是对其进行了归一化处理。因此,Softmax函数并不改变输入向量的特性,只是将其转化为概率分布形式。
[0048] 优选地,在本申请的技术方案中,所述应用程序业务流程局部结构特征向量的序列表示被检测应用程序的业务流程图的节点特征向量或边特征向量。在将所述应用程序业务流程局部结构特征向量的序列输入基于序列内生相关性度量的特征关联优化网络时,所述基于序列内生相关性度量的特征关联优化网络通过量化度量所述应用程序业务流程局部结构特征向量的序列中各个应用程序业务流程局部结构特征向量之间的语义关联来提升各个节点特征向量或边特征向量的特征表达语义关联精准度,但是这也会使得所述应用程序业务流程优化局部结构特征向量的序列中的各个应用程序业务流程优化局部结构特征向量存在特征表达信息溢出。由此,在将所述应用程序业务流程优化局部结构特征向量的序列输入基于转换器结构的应用程序业务流程全局上下文语义关联编码器时,会由于所述应用程序业务流程优化局部结构特征向量的序列中的各个应用程序业务流程优化局部结构特征向量存在特征表达信息溢出而使得语义聚合关键信息丢失,影响所述应用程序业务流程上下文语义编码特征向量的表达效果。
[0049] 基于此,在所述优选示例中,在将所述应用程序业务流程上下文语义编码特征向量输入基于分类器的安全漏洞检测模块以得到检测结果时,对所述应用程序业务流程上下文语义编码特征向量进行优化,具体地,优化过程包括以下步骤:
[0050] 计算所述应用程序业务流程上下文语义编码特征向量的各个特征值的绝对值之和以得到第一应用程序业务流程上下文语义编码特征和调制值,并计算所述应用程序业务流程上下文语义编码特征向量的各个特征值的平方和的平方根以得到第二应用程序业务流程上下文语义编码特征和调制值;
[0051] 将所述应用程序业务流程上下文语义编码特征向量与所述第二应用程序业务流程上下文语义编码特征和调制值进行点减后,分别与所述应用程序业务流程上下文语义编码特征向量的特征值数目和所述第一应用程序业务流程上下文语义编码特征和调制值的倒数进行点乘,并取每个特征值的倒数以获得第一应用程序业务流程上下文语义编码特征相位转换向量;
[0052] 将所述应用程序业务流程上下文语义编码特征向量与所述第一应用程序业务流程上下文语义编码特征和调制值进行点减后,分别与所述应用程序业务流程上下文语义编码特征向量的特征值数目的平方根和所述第二应用程序业务流程上下文语义编码特征和调制值的倒数进行点乘,并取每个特征值的倒数以获得第二应用程序业务流程上下文语义编码特征相位转换向量;
[0053] 将所述第一应用程序业务流程上下文语义编码特征相位转换向量点减所述第二应用程序业务流程上下文语义编码特征相位转换向量与所述加权超参数的点乘向量以获得优化的应用程序业务流程上下文语义编码特征向量。最后,将所述优化的应用程序业务流程上下文语义编码特征向量输入基于分类器的安全漏洞检测模块以得到检测结果。
[0054] 这里,所述应用程序业务流程上下文语义编码特征向量,记为V的优化表示为:
[0055]
[0056] vi∈V∈Rn
[0057] 其中,V为所述应用程序业务流程上下文语义编码特征向量,R表示实数集,vi表示所述应用程序业务流程上下文语义编码特征向量的第i个位置的特征值,n表示所述应用程序业务流程上下文语义编码特征向量的特征值数目,α表示第一应用程序业务流程上下文语义编码特征和调制值,β表示第二应用程序业务流程上下文语义编码特征和调制值,⊙表⊙‑1示按位置点乘, 表示按位置相减,[·] 为取向量中每个特征值的倒数,V1表示第一应用程序业务流程上下文语义编码特征相位转换向量,V2表示第二应用程序业务流程上下文语义编码特征相位转换向量,ω表示加权超参数,V'表示优化的应用程序业务流程上下文语义编码特征向量。
[0058] 因此,在所述优选示例中,将所述应用程序业务流程上下文语义编码特征向量的特征值相对于所述应用程序业务流程上下文语义编码特征向量的向量整体的特征集合的不同和调制表示的差分来作为语义变化强度信息,并通过不同和调制表示形式来进行与基于位置的强度调制对应的类相位转换,以通过在所述应用程序业务流程上下文语义编码特征向量的向量集合尺度均衡下进行基于交替堆叠的空间平移操作,来使得语义变化相位感知的聚合增强能够沿特征聚合方向提升轴向聚合感受野,从而提升所述应用程序业务流程上下文语义编码特征向量的聚合语义对于细节语义变化的感知效果,从而改进所述应用程序业务流程上下文语义编码特征向量输入基于分类器的安全漏洞检测模块得到的检测结果的准确性。
[0059] 值得一提的是,在本申请的其他具体示例中,还可以通过其他方式基于所述应用程序业务流程优化局部结构特征向量的序列的全局上下文语义关联特征,确定是否存在安全漏洞,例如:首先,使用自然语言处理(NLP)技术,例如词嵌入、主题建模或图神经网络,从序列中提取全局语义关联特征;使用机器学习或深度学习模型对全局语义关联特征进行分类,以确定是否存在安全漏洞。
[0060] 综上,根据本申请实施例的应用逻辑漏洞检测方法被阐明,其通过对应用程序的源代码进行静态分析,基于应用程序的各个业务模块及其相互间的调用关系,构造出应用程序的业务流程图,并采用基于深度学习的人工智能技术对应用程序的业务流程图进行流程结构特征提取,捕捉到业务流程图中节点和边之间的深层次语义关联,挖掘出业务流程图的全局上下文关联信息,以此来智能识别应用程序是否存在安全漏洞。通过这种方式,可以有效提高应用逻辑漏洞检测的准确性和效率,降低误报和漏报的概率。
[0061] 以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

当前第1页 第1页 第2页 第3页