本发明属于计算机安全领域,涉及一种检测方法,具体涉及一种注意力机制和多特征融合的智能合约漏洞检测方法。
背景技术:
1、智能合约的不可变性和公开性使其安全性尤为重要。传统的检测方法包括静态分析、动态分析和形式化验证,尽管这些方法在漏洞检测中取得了一定的成效,但仍存在诸多局限性。具体来说,这些方法的自动化程度较低,特征提取困难。此外,静态分析方法往往会产生大量误报,增加了安全审计的工作量。
2、近年来,图神经网络(gnn)因其在处理结构化数据方面的优势而被应用于智能合约漏洞检测领域。研究者们提出了多种基于gnn的模型和算法来检测智能合约漏洞,包括基于图卷积网络、图注意力网络等,这些模型通过学习智能合约图表示去识别合约中存在的漏洞,提高了漏洞检测的自动化程度。
3、同时为了进一步提高漏洞检测的准确率,一些研究将专家模式与模型提取的图特征进行融合。这种融合策略不仅结合了专家的丰富经验和专业知识,还充分利用了gnn在特征提取方面的优势。通过两者的相互补充和协同作用,漏洞检测模型能够更精准地提取关键特征,从而更准确地识别出智能合约中的漏洞。
4、尽管当前的研究已经显著改善了传统智能合约漏洞检测方法的局限,但在应用图注意力网络(gat)模型时,它的注意力系数计算依赖于共享的权重矩阵,忽略了节点间的个性化关系,限制了其捕捉图中节点间动态变化关系的能力。这种缺乏灵活性的注意力机制可能导致gat无法深入理解智能合约图的结构和复杂性,从而影响图特征提取和漏洞检测性能。此外,现有的研究将专家模式与图特征融合的方法多采用简单拼接,未能充分利用特征间的复杂关系,可能导致关键信息的丢失或弱化,降低了模型的检测能力。
技术实现思路
1、针对现有技术中的上述不足,本发明提供的一种注意力机制和多特征融合的智能合约漏洞检测方法,解决了现有技术对智能合约中安全漏洞检测精度低的问题。
2、为了达到上述发明目的,本发明采用的技术方案为:一种注意力机制和多特征融合的智能合约漏洞检测方法,包括如下步骤:
3、s1、获取智能合约代码中的控制流和数据流,并将控制流和数据流转化为合约图;
4、合约图中包括节点和边;
5、节点包括漏洞节点、关联节点和回退节点;
6、边包括控制流边、数据流边和回退边;
7、s2、根据合约图中节点造成的漏洞类型,利用漏洞专家模式确定合约图的合约代码的安全模式;
8、s3、使用graph2vec方法对合约图的节点和边特征进行处理,得到合约图的图向量;
9、s4、将图向量输入基于动态注意力机制的图神经模型中进行特征提取,得到合约图的图特征;
10、s5、使用基于多维特征融合与深度提取技术的特征融合模型将图特征和安全模式的模式特征进行融合,得到融合特征;
11、s6、对融合特征进行处理,确定智能合约存在安全漏洞的预测概率值。
12、上述方案的有益效果是:
13、(1)本发明将智能合约代码转换为图的形式输入到神经网络模型中,这种形式能够更好地提取合约特征,同时保留了代码中的运行逻辑以及数据流;将图注意力网络与漏洞检测相结合,提高了合约漏洞检测效率以及漏洞检测的准确率。
14、(2)本发明运用基于动态注意力机制的图神经模型对合约图特征进行提取,允许模型在每次迭代中根据当前的节点特征和上下文动态调整注意力权重,从而更准确地捕捉节点间的关系;在特征融合阶段使用多维特征融合与深度提取技术,不仅在维度上将整体特征与模式特征进行拼接,而且还采用了多头注意力机制和多层感知器层,使得模型能够更全面地保留和利用输入特征的信息,显著增强了模型对复杂特征模式的表达和识别能力。
15、进一步地,步骤s2,具体包括:
16、s21、提取漏洞类型;
17、s22、利用漏洞专家模式提取漏洞类型的漏洞特征;
18、s23、将漏洞特征作为安全模式。
19、上述进一步方案的有益效果是:根据专家对智能合约存在漏洞的定义规则去提取被测合约中存在的漏洞特征,可以更好地根据经验对漏洞的特征进行分析,得到的安全模式也更为准确。
20、进一步地,步骤s3中,使用graph2vec方法对合约图的节点和边特征进行处理,具体包括:
21、s31、使用graph2vec方法对合约图的代码进行解析,识别关键变量、函数调用、函数调用关系、关键变量的修改和访问;
22、s32、将关键变量和函数调用映射为合约图的节点,并根据函数调用关系、关键变量的修改和访问,构造合约图的边。
23、上述进一步方案的有益效果是:使用graph2vec方法能够提取智能合约图中的节点和边特征,并将它们转化为低维向量,从而捕捉图的全局特征,优化模型性能。
24、进一步地,步骤s4中,基于动态注意力机制的图神经模型包括依次连接的dropout层、注意力层和特征聚合层;
25、dropout层用于对图向量进行正则化;
26、注意力层包括并行的至少两个gatv2层,用于计算注意力分数;
27、特征聚合层用于使用归一化的注意力分数对邻居节点的特征进行加权求和,以更新每个节点的特征表示。
28、进一步地,计算注意力分数eij使用的公式为:
29、eij=atleakyrelu(w·[hi||hj])
30、其中,hi、hj分别表示节点i、j的特征矩阵,w表示权重矩阵,a表示可学习的权重矩阵,hi||hj表示将i、j的特征进行拼接后与权重矩阵进行相乘;
31、更新每个节点的特征表示hi'使用的公式为:
32、hi'=σ(∑j∈n(i)αijwhj)
33、其中,σ是非线性激活函数,n(i)是节点i的邻居节点的集合,αij表示对注意力分数eij使用softmax函数进行归一化的得到的注意力权重,w表示权重矩阵,hj表示节点j的特征矩阵。
34、上述进一步方案的有益效果是:基于动态注意力机制的图神经模型允许模型在每次迭代中根据当前节点特征和上下文动态调整注意力权重,从而更准确地捕捉节点间的复杂关系。
35、进一步地,步骤s5中,特征融合模型包括拼接层、多头注意力层、mlp层和残差层;
36、拼接层用于对图特征和模式特征进行拼接;
37、多头注意力层用于计算多头注意力权重,并应用随机深度丢弃;
38、mlp层用于对归一化后的多头注意力权重进行特征变换;
39、残差层用于保留原始提取的合约特征信息。
40、进一步地,对图特征和模式特征进行拼接使用的公式为:
41、x'=cat(x,pattern)
42、其中,x表示图特征,pattern表示模式特征,x'表示拼接得到的输入特征矩阵;
43、计算多头注意力权重attention(x')使用的公式为:
44、
45、其中,q表示通过输入节点特征的线性变化得到的查询向量,用于衡量当前节点对其邻居节点的关注程度,k表示通过输入节点特征的线性变化得到的键向量,用于计算与查询向量的相似性,帮助确定邻居节点的重要性,v表示通过输入节点特征的线性变化得到的值向量,用于加权求和得到新的节点特征,qkt表示查询矩阵和键矩阵的点积,用于表示每个查询与键之间的相似性,表示缩放因子,用于防止点积结果过大,导致梯度消失问题;
46、对归一化后的多头注意力权重进行特征变换使用的公式为:
47、mlp(x”)=linear(relu(linear(x”)))
48、其中,x”表示归一化后的多头注意力权重,mlp(x”)表示特征变换的结果;
49、残差层使用的计算公式为:
50、x=x+droppath(attention(x'))
51、x=x+dropath(mlp(x”))
52、其中,x表示图特征,attention(x')表示计算多头注意力权重,mlp(x”)表示特征变换的结果。
53、上述进一步方案的有益效果是:特征融合模型不仅在维度上将整体特征与模式特征进行拼接,而且还采用了多头注意力机制和多层感知器(mlp)层,对拼接后的特征进行逐层的精细处理和深度融合,从而可以全面捕捉局部和全局信息,使得最终的分类结果更为准确。
1.一种注意力机制和多特征融合的智能合约漏洞检测方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述步骤s2,具体包括:
3.根据权利要求1所述的方法,其特征在于,所述步骤s3中,所述使用graph2vec方法对所述合约图的节点和边特征进行处理,具体包括:
4.根据权利要求1所述的方法,其特征在于,所述步骤s4中,所述基于动态注意力机制的图神经模型包括依次连接的dropout层、注意力层和特征聚合层;
5.根据权利要求4所述的方法,其特征在于,所述计算注意力分数eij使用的公式为:
6.根据权利要求1所述的方法,其特征在于,所述步骤s5中,所述特征融合模型包括拼接层、多头注意力层、mlp层和残差层;
7.根据权利要求6所述的方法,其特征在于,所述对所述图特征和所述模式特征进行拼接使用的公式为: