1.本发明涉及智能合约漏洞检测技术领域,具体涉及一种基于静态特征全栈层次融合的智能合约漏洞检测系统及方法。
背景技术:2.随着区块链技术的日益普及和发展,引起了学术界和产业界的广泛关注,然而区块链作为一种分布式账本技术,仍然面临着一些安全和隐私问题,这些问题可以抽象为四类,分别是应用层,数据层,共识层和通信层的安全和隐私问题。其中,应用层从用户的角度负责保护区块链可用服务集的安全,保证面向合约语言的安全以及智能合约的常规执行,最后为诚实节点提供安全、公平的激励协议;数据层的目的是保证身份、事务匿名和假名,以及保证分布式数据库存储的一致性;共识层的重点是迫使诚实的多数节点同意一个决定,而恶意修改世界状态的一致性需要付出一定代价。然而,这样的代价取决于手头的业务应用程序,取决于共识机制的具体实现,对应共识协议都有其安全性和隐私问题;通信层主要涉及网络分区攻击。
3.现有智能合约漏洞挖掘和安全分析包括三种检测方法,分别是静态分析,动态分析和动态符号执行。
4.静态分析现有静态分析中包含了基于源代码和二进制的工作,它的优势是不需要运行程序的执行,检测的速度会比较快。缺点是抽象级别不好把控,缺少执行程序时的语义信息。例如,sri系统实验室(苏黎世联邦理工学院)开发的,通过解析并反编译evm字节码的securify,运用正式验证来检测合约的正确性;evm字节码的反汇编没有识别程序是否脆弱的能力,结合了无监督学习的eth2vec克服了代码重写,从而可以识别出脆弱的智能合约。
5.动态执行包括使用随机输入的fuzzing,污点跟踪,符号分析和基于源代码和高级表示。优点是可以根据某些特定的输入观察程序的执行轨迹。缺点是需要执行的代码来分析其行为,检测会比较慢,定理求解不能评估所有表达式,检测一些漏洞依赖于智能契约的调用深度。
6.动态符号执行是基于源代码和基于高级代码表示(在使用反编译器的情况下),它是静态分析和动态分析的结合。优点是使用符号分析和具体执行来解决符号分析中定理求解器的不完全性,并找出导致程序某些特定错误的所有类型的输入,对无限循环具有的弹性。缺点是需要执行代码,只提供一些特定类型的输入系统遇到错误。
7.本发明属于静态分析方法,具有静态分析方法不需要执行程序和分析速度快的特点。由上述现有工作中发现现有基于静态特征的智能合约漏洞检测方法存在以下问题:
8.1.严重依赖基于专家的规则,导致可扩展性差,准确率较低的问题。
9.2.依赖于手动地对智能合约进行特征融合,使得合约检测存在自动化程度不高的问题
技术实现要素:10.本发明的目的在于提供基于静态特征全栈层次融合的智能合约漏洞检测稀有及方法,以解决上述背景技术中提出的问题。
11.为实现上述目的,本发明提供如下技术方案:
12.一种基于静态特征全栈层次融合的智能合约漏洞检测系统,其包括源代码层、基于构建层、字节码层,所述源代码层、基于构建层、字节码层结合在一起形成了一个完整的堆栈,所述完整堆栈的每一层关联到一个模态,应用于完整堆栈中各层对应的层次,根据上述的p(s)非空子集的组合,在神经网络中进行自动模态内和跨模态汇集特征融合,就可以完成智能合约全栈层次的特征融合,全栈层次的特征融合可以提高智能合约漏洞检测的性能,而不需要任何基于专家的规则。
13.一种采用上述系统的基于静态特征全栈层次融合的智能合约漏洞检测方法,其包括以下步骤:
14.s1:首先对智能合约源代码进行解析,解析为一系列的源代码函数;这里解析为函数时表示本发明以函数作为分析粒度级别,原因是智能合约源代码面向对象的语言特性和合约在虚拟机里执行时是以函数作为单位来调用的,因此选择函数作为分析颗粒度最为合理。
15.s2:使用预训练的词嵌入技术对源代码函数进行编码和向量化,为输入机器学习和深度学习模型做准备;因为本发明采用最先进的机器学习和深度学习模型对智能合约进行分析,因此需要对源代码进行编码和向量化后才能输入到模型中进行检测和安全分析;本发明采用了至今为止表现最好的向量编码模型,word2vec和bert,特别是在智能合约漏洞分析领域目前还没有方案采用bert编码器对合约源代码进行分析。
16.s3:将每个词嵌入特征向量分别提供给文本卷积神经网络(textcnn)和随机森林(rf)神经网络,并分别选出在对应词嵌入特征向量上表现最好的模型,进行下一步模态内特征融合。
17.s4:进行模态内特征融合,在步骤s3的基础上,采用空间金字塔池化技术(spp)和交叉注意力机制(cross-attention)对输入的两种特征进行特征融合,融合后输入双向lstm和自注意力机制(self-attention)模型进行训练,同时考虑条件随机场(crf)对检测性能的影响,最后确定出性能表现最好的模型组合作为源代码层的分析框架。
18.所述的基于静态特征全栈层次融合的智能合约漏洞检测方法,其还包括合约静态特征全栈层次融合的基于构建层bb工作流程,具体包括以下步骤:
19.b1:首先输入合约源代码,使用静态分析工具在源代码编译的过程中提取出函数控制流图(cfg)和智能合约静态单赋值(ssa);采用这两种特征图作为基于构建层的特征输入,可以表现出智能合约源代码在编译和构建过程中的语法特性和本质,并为后续模型训练做准备。
20.b2:将b1中提取的各种函数的多个控制流图(cfg)输入到图卷积神经网络(gcn)和自注意力机制(self-attention)中进行训练,由于不同的函数有不同的控制流图的大小,并且全连接层有固定的尺寸要求,采用空间金字塔池化技术(spp)和交叉注意力机制(cross-attention)对输入的函数的控制流图进行融合,并确定出两种融合方式中表现更好的模型。
21.b3:将b1中提取的智能合约静态单赋值(ssa)输入到卷积神经网络(ccn)、自注意力机制(self-attention)和嵌入层中进行训练。
22.b4:将b2和b3得到的两种图特征,进行模态内特征融合,采用空间金字塔池化技术(spp)和交叉注意力机制(cross-attention)对输入的两种图特征进行融合,融合后输入双向lstm和自注意力机制(self-attention)模型进行训练,同时考虑条件随机场(crf)对检测性能的影响,最后确定出性能表现最好的模型组合作为基于构建层的分析框架。
23.所述的基于静态特征全栈层次融合的智能合约漏洞检测方法,其还包括合约静态特征全栈层次融合的字节码层工作流程,具体包括以下步骤:
24.c1:将智能合约源代码通过合约编译器进行编译,得到合约字节码;合约字节码更接近与机器语言,能体现计算机底层的执行和运作规律。
25.c2:利用反编译工具,提取合约字节码的函数控制流图;采用合约字节码的函数控制流图作为字节码层的特征输入。
26.c3:将c2中提取的各种函数的多个控制流图(cfg)输入到图卷积神经网络(gcn)和自注意力机制(self-attention)中进行训练,由于不同的函数有不同的控制流图的大小,并且全连接层有固定的尺寸要求,采用空间金字塔池化技术(spp)和交叉注意力机制(cross-attention)对输入的函数的控制流图进行融合,并确定出两种融合方式中表现更好的模型。
27.c4:在c3的基础上,将特征图输入双向lstm和自注意力机制(self-attention)模型进行训练,同时考虑条件随机场(crf)对检测性能的影响,最后确定出性能表现最好的模型组合作为字节码层的分析框架。
28.所述的基于静态特征全栈层次融合的智能合约漏洞检测方法,其特征在于,其还包括合约静态特征全栈层次融合的分层多模态融合方法流程,具体包括以下步骤:
29.d1:将源代码层和基于构建层合并,两个层级对应的模态进行模态间特征融合,神经网络的模型部署相应叠加,对特征进行训练和检测分析;融合核函数延续模态内特征融合的方法,也采用空间金字塔池化技术(spp)和交叉注意力机制(cross-attention)对模态间特征进行融合,并确定出两种融合方式中表现更好的模型;在此基础上,将两个层对应的模态特征输入双向lstm和自注意力机制(self-attention)模型进行训练,同时考虑条件随机场(crf)对检测性能的影响,最后确定出性能表现最好的模型组合作为源代码层和基于构建层模态间融合的分析框架。
30.d2:将源代码层和字节码层放在一起,进行模态间特征融合,神经网络的模型部署根据单层确定的模型,把它们放在一起;采用空间金字塔池化技术(spp)和交叉注意力机制(cross-attention)对模态间特征进行融合,并确定出两种融合方式中表现更好的模型;在此基础上,将两个层对应的模态特征输入双向lstm和自注意力机制(self-attention)模型进行训练,同时考虑条件随机场(crf)对检测性能的影响,最后确定出性能表现最好的模型组合作为源代码层和字节码层模态间融合的分析框架。
31.d3:将基于构建层和字节码层关联在一起,进行跨模态特征融合,神经网络的模型部署根据单层确定的模型叠加;采用空间金字塔池化技术(spp)和交叉注意力机制(cross-attention)对模态间特征进行融合,并确定出两种融合方式中表现更好的模型;在此基础上,将两个层对应的模态特征输入双向lstm和自注意力机制(self-attention)模型进行训
练,同时考虑条件随机场(crf)对检测性能的影响,最后确定出性能表现最好的模型组合作为基于构建层和字节码层模态间融合的分析框架。
32.d4:最后,将源代码层,基于构建层和字节码层进行全模态特征融合,神经网络的模型部署根据单层确定的最优模型叠加进行,采用空间金字塔池化技术(spp)和交叉注意力机制(cross-attention)对三层模态特征进行全栈融合,并确定出两种融合方式中表现更好的模型;在此基础上,将三个层对应的模态特征输入双向lstm和自注意力机制(self-attention)模型进行训练,同时考虑条件随机场(crf)对检测性能的影响,最后确定出性能表现最好的模型组合作为三层全模态融合的分析框架。
33.与现有技术相比,本发明的有益效果是:
34.该基于静态特征全栈层次融合的智能合约漏洞检测系统及方法,通过研究基于静态特征全栈层次融合的智能合约分析框架,从源代码层、基于构建层和字节码层三个层次来关联模态,通过构建完备的模态内和模态间的全栈层次分析体系,采用最先进机器学习和深度学习的人工智能神经网络方法,对智能合约代码静态特征进行融合和全面分析,从而实现智能合约的自动化特征融合,提高现有智能合约漏洞检测性能。
附图说明
35.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
36.图1为本发明实施例的智能合约静态特征全栈层次融合框架图;
37.图2为本发明实施例的智能合约静态特征全栈层次融合的源代码层(sc)架构;
38.图3为本发明实施例的智能合约静态特征全栈层次融合的基于构建层(bb)架构图;
39.图4为本发明实施例的智能合约静态特征全栈层次融合的字节码层(vmb)架构图;
40.图5为本发明实施例的智能合约静态特征全栈层次融合的分层多模态融合方法流程图。
具体实施方式
41.下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
42.实施例
43.如图1-5所示,本发明提供的基于静态特征全栈层次融合的智能合约漏洞检测系统,其包括源代码层、基于构建层、字节码层,所述源代码层、基于构建层、字节码层结合在一起形成了一个完整的堆栈,所述完整堆栈的每一层关联到一个模态,应用于完整堆栈中各层对应的层次,根据上述的p(s)非空子集的组合,在神经网络中进行自动模态内和跨模态汇集特征融合,就可以完成智能合约全栈层次的特征融合,全栈层次的特征融合可以提
高智能合约漏洞检测的性能,而不需要任何基于专家的规则。
44.一个完整的堆栈结构包括三种模式,即源代码层、基于构建层、字节码层,将整个堆栈的每一层关联到一个模态,并采用模态内和跨模态特征向量融合:首先,在源代码层将文本卷积神经网络(textcnn)和随机森林模型应用于预先训练的word2vec和来自bert的双向编码器表示,将相应的词嵌入模型应用到函数源代码中得到的嵌入向量。在基于构建层,还将图卷积神经网络(gcn)应用于基于构建的特征之一,即各种控制流图(cfg),每个图对应一个特定的函数,在解析过程中,利用经典的带有嵌入层的卷积神经网络(cnn)从函数源代码的单一静态赋值(ssa)形式中提取特征向量。在基于字节码层,通过分解智能合约字节码,生成类似图的特征,重点关注字节码中每个已识别的函数的控制流图(cfgs),并使用一个gcn为各种cfgs提取特征向量。
45.其次,在同一层中进行模态内融合,即自动融合同一层中同一形态但通过不同模型的特征向量,例如在源代码层中将同一智能合约源代码,通过word2vec和bert的特征向量进行模态内自动融合。通过在每一层进行模态内融合后,会确定最优的效果最好的模型,进而对任意两层和全部三层进行跨模态融合,最终得出智能合约静态特征全栈层次融合的检测模型框架。
46.在本发明中,将全栈的源代码层表示为sc,将基于构建的层表示为bb,将字节码层表示为vmb,全栈本身表示为s。因此有s={sc,bb,vmb},推出p(s)={{sc},{bb},{vmb},{sc,bb},{sc,vmb},{bb,vmb},{sc,bb,vmb},{}}。在本发明中,将全栈的每一层视为一种模态,并将各种最先进的机器学习和深度学习算法应用于除空集{}之外的每个p(s)子集的分类。此外,根据p(s)中的子集进行分层多模态特征融合。最后,对p(s)的非空子集的组合提出了确定和决策,以产生最高的漏洞检测性能。
47.下面结合图1智能合约静态特征全栈层次融合框架图做进一步的详细说明。本发明通过对智能合约源代码和字节码进行数据处理,以函数级别作为分析粒度级别,输出得到三种层次信息,分别是源代码层,基于构建层和字节码层,具体使用的层内信息如下,源代码层包括函数源代码信息,基于构建层包括基于代码编译过程中提取的控制流图(cfg),以及静态单赋值(ssa)两种信息,基于字节码层包括合约字节码反汇编和反编译过程中提取的控制流图(cfg)信息。
48.源代码层、基于构建层、字节码层结合在一起形成了一个完整的堆栈。完整堆栈的每一层关联到一个模态,应用于完整堆栈中各层对应的层次,根据上述的p(s)非空子集的组合,在神经网络中进行自动模态内和跨模态汇集特征融合,就可以完成智能合约全栈层次的特征融合。全栈层次的特征融合可以提高智能合约漏洞检测的性能,而不需要任何基于专家的规则。
49.本发明还提供了采用上述系统的基于静态特征全栈层次融合的智能合约漏洞检测方法,下面结合图2智能合约静态特征全栈层次融合的源代码层(sc)架构图,具体介绍在源代码层的分析方法和工作流程,其包括如下步骤:
50.s1:首先对智能合约源代码进行解析,解析为一系列的源代码函数。这里解析为函数时表示本发明以函数作为分析粒度级别,原因是智能合约源代码面向对象的语言特性和合约在虚拟机里执行时是以函数作为单位来调用的,因此选择函数作为分析颗粒度最为合理。
51.s2:使用预训练的词嵌入技术对源代码函数进行编码和向量化,为输入机器学习和深度学习模型做准备。因为本发明采用最先进的机器学习和深度学习模型对智能合约进行分析,因此需要对源代码进行编码和向量化后才能输入到模型中进行检测和安全分析。本发明采用了至今为止表现最好的向量编码模型,word2vec和bert,特别是在智能合约漏洞分析领域目前还没有方案采用bert编码器对合约源代码进行分析。
52.s3:将每个词嵌入特征向量分别提供给文本卷积神经网络(textcnn)和随机森林(rf)神经网络,并分别选出在对应词嵌入特征向量上表现最好的模型,进行下一步模态内特征融合。
53.s4:进行模态内特征融合,在步骤s3的基础上,采用空间金字塔池化技术(spp)和交叉注意力机制(cross-attention)对输入的两种特征进行特征融合,融合后输入双向lstm和自注意力机制(self-attention)模型进行训练,同时考虑条件随机场(crf)对检测性能的影响,最后确定出性能表现最好的模型组合作为源代码层的分析框架。
54.下面结合图3智能合约静态特征全栈层次融合的基于构建层(bb)架构图,具体介绍在基于构建层的分析方法和工作流程,其包括如下步骤:
55.b1:首先输入合约源代码,使用静态分析工具在源代码编译的过程中提取出函数控制流图(cfg)和智能合约静态单赋值(ssa)。采用这两种特征图作为基于构建层的特征输入,可以表现出智能合约源代码在编译和构建过程中的语法特性和本质,并为后续模型训练做准备。
56.b2:将b1中提取的各种函数的多个控制流图(cfg)输入到图卷积神经网络(gcn)和自注意力机制(self-attention)中进行训练,由于不同的函数有不同的控制流图的大小,并且全连接层有固定的尺寸要求,采用空间金字塔池化技术(spp)和交叉注意力机制(cross-attention)对输入的函数的控制流图进行融合,并确定出两种融合方式中表现更好的模型。
57.b3:将b1中提取的智能合约静态单赋值(ssa)输入到卷积神经网络(ccn)、自注意力机制(self-attention)和嵌入层中进行训练。
58.b4:将b2和b3得到的两种图特征,进行模态内特征融合,采用空间金字塔池化技术(spp)和交叉注意力机制(cross-attention)对输入的两种图特征进行融合,融合后输入双向lstm和自注意力机制(self-attention)模型进行训练,同时考虑条件随机场(crf)对检测性能的影响,最后确定出性能表现最好的模型组合作为基于构建层的分析框架。
59.下面结合图4智能合约静态特征全栈层次融合的字节码层(vmb)架构图,具体介绍在字节码层的分析方法和工作流程,具体包括如下步骤:
60.c1:将智能合约源代码通过合约编译器进行编译,得到合约字节码。合约字节码更接近与机器语言,能体现计算机底层的执行和运作规律。
61.c2:利用反编译工具,提取合约字节码的函数控制流图。采用合约字节码的函数控制流图作为字节码层的特征输入。
62.c3:将c2中提取的各种函数的多个控制流图(cfg)输入到图卷积神经网络(gcn)和自注意力机制(self-attention)中进行训练,由于不同的函数有不同的控制流图的大小,并且全连接层有固定的尺寸要求,采用空间金字塔池化技术(spp)和交叉注意力机制(cross-attention)对输入的函数的控制流图进行融合,并确定出两种融合方式中表现更
好的模型。
63.c4:在c3的基础上,将特征图输入双向lstm和自注意力机制(self-attention)模型进行训练,同时考虑条件随机场(crf)对检测性能的影响,最后确定出性能表现最好的模型组合作为字节码层的分析框架。
64.下面结合图5-智能合约静态特征全栈层次融合的分层多模态融合方法流程图,具体介绍在确定了源代码层,基于构建层和字节码层的单层检测模型架构后,基于全栈层次的分析方法,即分层多模态融合方法,具体步骤如下:
65.d1:将源代码层和基于构建层合并,两个层级对应的模态进行模态间特征融合,神经网络的模型部署相应叠加,对特征进行训练和检测分析。融合核函数延续模态内特征融合的方法,也采用空间金字塔池化技术(spp)和交叉注意力机制(cross-attention)对模态间特征进行融合,并确定出两种融合方式中表现更好的模型。在此基础上,将两个层对应的模态特征输入双向lstm和自注意力机制(self-attention)模型进行训练,同时考虑条件随机场(crf)对检测性能的影响,最后确定出性能表现最好的模型组合作为源代码层和基于构建层模态间融合的分析框架。
66.d2:将源代码层和字节码层放在一起,进行模态间特征融合,神经网络的模型部署根据单层确定的模型,把它们放在一起。采用空间金字塔池化技术(spp)和交叉注意力机制(cross-attention)对模态间特征进行融合,并确定出两种融合方式中表现更好的模型。在此基础上,将两个层对应的模态特征输入双向lstm和自注意力机制(self-attention)模型进行训练,同时考虑条件随机场(crf)对检测性能的影响,最后确定出性能表现最好的模型组合作为源代码层和字节码层模态间融合的分析框架。
67.d3:将基于构建层和字节码层关联在一起,进行跨模态特征融合,神经网络的模型部署根据单层确定的模型叠加。采用空间金字塔池化技术(spp)和交叉注意力机制(cross-attention)对模态间特征进行融合,并确定出两种融合方式中表现更好的模型。在此基础上,将两个层对应的模态特征输入双向lstm和自注意力机制(self-attention)模型进行训练,同时考虑条件随机场(crf)对检测性能的影响,最后确定出性能表现最好的模型组合作为基于构建层和字节码层模态间融合的分析框架。
68.d4:最后,将源代码层,基于构建层和字节码层进行全模态特征融合,神经网络的模型部署根据单层确定的最优模型叠加进行,采用空间金字塔池化技术(spp)和交叉注意力机制(cross-attention)对三层模态特征进行全栈融合,并确定出两种融合方式中表现更好的模型。在此基础上,将三个层对应的模态特征输入双向lstm和自注意力机制(self-attention)模型进行训练,同时考虑条件随机场(crf)对检测性能的影响,最后确定出性能表现最好的模型组合作为三层全模态融合的分析框架。
69.本发明实施例提供的基于静态特征全栈层次融合的智能合约漏洞检测系统与方法,基于静态特征全栈层次融合的智能合约分析框架,从源代码层、基于构建层和字节码层三个层次来关联模态,通过构建完备的模态内和模态间的全栈层次分析体系,采用最先进机器学习和深度学习的人工智能神经网络方法,对智能合约代码静态特征进行融合和全面分析,实现智能合约的自动化特征融合,提高现有智能合约漏洞检测性能。
70.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换
和变型,本发明的范围由所附权利要求及其等同物限定。
技术特征:1.一种基于静态特征全栈层次融合的智能合约漏洞检测系统,其特征在于,其包括源代码层、基于构建层、字节码层,所述源代码层、基于构建层、字节码层结合在一起形成了一个完整的堆栈,所述完整堆栈的每一层关联到一个模态,应用于完整堆栈中各层对应的层次,根据上述的p(s)非空子集的组合,在神经网络中进行自动模态内和跨模态汇集特征融合,就可以完成智能合约全栈层次的特征融合,全栈层次的特征融合可以提高智能合约漏洞检测的性能,不需要任何基于专家的规则。2.一种采用权利要求1所述系统的基于静态特征全栈层次融合的智能合约漏洞检测方法,其特征在于,其包括智能合约静态特征全栈层次融合的源代码层sc工作流程,具体包括以下步骤:s1:首先对智能合约源代码进行解析;s2:使用预训练的词嵌入技术对源代码函数进行编码和向量化,为输入机器学习和深度学习模型做准备;s3:将每个词嵌入特征向量分别提供给文本卷积神经网络textcnn和随机森林rf神经网络,并分别选出在对应词嵌入特征向量上表现最好的模型,进行下一步模态内特征融合;s4:进行模态内特征融合,在步骤s3的基础上,采用空间金字塔池化技术spp和交叉注意力机制cross-attention对输入的两种特征进行特征融合,融合后输入双向lstm和自注意力机制self-attention模型进行训练,同时考虑条件随机场crf对检测性能的影响,最后确定出性能表现最好的模型组合作为源代码层的分析框架。3.根据权利要求2所述的基于静态特征全栈层次融合的智能合约漏洞检测方法,其特征在于,其还包括合约静态特征全栈层次融合的基于构建层bb工作流程,具体包括以下步骤:b1:首先输入合约源代码,使用静态分析工具在源代码编译的过程中提取出函数控制流图cfg和智能合约静态单赋值ssa;b2:将b1中提取的各种函数的多个控制流图cfg输入到图卷积神经网络(gcn)和自注意力机制中进行训练,由于不同的函数有不同的控制流图的大小,并且全连接层有固定的尺寸要求,采用空间金字塔池化技术spp和交叉注意力机制对输入的函数的控制流图进行融合,并确定出两种融合方式中表现更好的模型;b3:将步骤b1中提取的智能合约静态单赋值输入到卷积神经网络、自注意力机制和嵌入层中进行训练;b4:将步骤b2和b3得到的两种图特征,进行模态内特征融合,采用空间金字塔池化技术和交叉注意力机制对输入的两种图特征进行融合,融合后输入双向lstm和自注意力机制模型进行训练,同时考虑条件随机场对检测性能的影响,最后确定出性能表现最好的模型组合作为基于构建层的分析框架。4.根据权利要求2所述的基于静态特征全栈层次融合的智能合约漏洞检测方法,其特征在于,其还包括合约静态特征全栈层次融合的字节码层工作流程,具体包括以下步骤:c1:将智能合约源代码通过合约编译器进行编译,得到合约字节码;c2:利用反编译工具,提取合约字节码的函数控制流图;c3:将步骤c2中提取的各种函数的多个控制流图输入到图卷积神经网络和自注意力机制中进行训练,由于不同的函数有不同的控制流图的大小,并且全连接层有固定的尺寸要
求,采用空间金字塔池化技术和交叉注意力机制对输入的函数的控制流图进行融合,并确定出两种融合方式中表现更好的模型;c4:在步骤c3的基础上,将特征图输入双向lstm和自注意力机制模型进行训练,同时考虑条件随机场对检测性能的影响,最后确定出性能表现最好的模型组合作为字节码层的分析框架。5.根据权利要求2所述的基于静态特征全栈层次融合的智能合约漏洞检测方法,其特征在于,其还包括合约静态特征全栈层次融合的分层多模态融合方法流程,具体包括以下步骤:d1:将源代码层和基于构建层合并,两个层级对应的模态进行模态间特征融合,神经网络的模型部署相应叠加,对特征进行训练和检测分析;d2:将源代码层和字节码层放在一起,进行模态间特征融合,神经网络的模型部署根据单层确定的模型,把它们放在一起,采用空间金字塔池化技术和交叉注意力机制对模态间特征进行融合,并确定出两种融合方式中表现更好的模型;d3:将基于构建层和字节码层关联在一起,进行跨模态特征融合,神经网络的模型部署根据单层确定的模型叠加,采用空间金字塔池化技术和交叉注意力机制对模态间特征进行融合,并确定出两种融合方式中表现更好的模型;d4:最后,将源代码层,基于构建层和字节码层进行全模态特征融合,神经网络的模型部署根据单层确定的最优模型叠加进行,采用空间金字塔池化技术和交叉注意力机制对三层模态特征进行全栈融合,并确定出两种融合方式中表现更好的模型。
技术总结本发明涉及智能合约漏洞检测技术领域,公开了一种基于静态特征全栈层次融合的智能合约漏洞检测系统及方法,该系统包括源代码层、基于构建层、字节码层,所述源代码层、基于构建层、字节码层结合在一起形成了一个完整的堆栈,所述完整堆栈的每一层关联到一个模态。本发明基于静态特征全栈层次融合的智能合约漏洞检测系统及方法,基于静态特征全栈层次融合的智能合约分析框架,从源代码层、基于构建层和字节码层三个层次来关联模态,通过构建完备的模态内和模态间的全栈层次分析体系,采用机器学习和深度学习的人工智能神经网络方法,对智能合约代码静态特征进行融合和全面分析,实现智能合约的自动化特征融合,提高现有智能合约漏洞检测性能。约漏洞检测性能。约漏洞检测性能。
技术研发人员:李进 揭晚晴 黄腾 陈祺 黄鹏飞
受保护的技术使用者:广州大学
技术研发日:2022.06.13
技术公布日:2022/11/1