发布信息

一种智能合约漏洞检测方法、系统、存储介质及设备 专利技术说明

作者:admin      2023-07-05 13:35:48     273



计算;推算;计数设备的制造及其应用技术1.本发明涉及区块链技术领域,特别涉及一种智能合约漏洞检测方法、系统、存储介质及设备。背景技术:2.近年来,区块链技术广泛应用于各类场景,智能合约是区块链技术发展的新阶段,是其最重要的应用之一,较之于传统的软件,智能合约绑定着巨量的资产,但由于区块链固有的透明性与分布式等特点,任何人都可以获取部署在区块链上的智能合约,一旦合约本身存在漏洞并被攻击将会造成巨大的经济损失。3.区块链是一个共享数据库,智能合约是运行在区块链平台的共识规则、是数字化的传统合约。依托于区块链平台,智能合约具有“自动运行且去中心化”、“无法篡改”、“执行透明”等特征,是区块链平台运行合作机制的可靠保障。具有广阔的运用前景。4.现有技术当中,智能合约漏洞检测方法大多依赖人工定义的专家规则,通过符号执行、污点分析和形式化验证等技术进行漏洞检测。这些方法存在执行效率低、代码覆盖率低和检测周期长等诸多问题,并且其检测的准确性完全依赖专家规则的定义,对检测到的漏洞定位精度差,可解释性不足。随着智能合约数量呈现爆发式增长,当前基于专家规则和静态分析的漏洞检测方法无法适用于快速变化的智能合约应用和大规模代码的检测。技术实现要素:5.基于此,本发明的目的是提供一种智能合约漏洞检测方法、系统、存储介质及设备,用以解决现有技术中依赖人工定义的专家规则进行智能合约漏洞检测的方式,导致执行效率低、代码覆盖率低和检测周期长的技术问题。6.本发明一方面提供一种智能合约漏洞检测方法,包括:获取待检测智能合约代码并进行规范化及图形化处理以得到待检测智能合约代码token串向量集;获取已知的智能合约典型漏洞并进行特征提取以将提取到的漏洞特征构建模型训练数据集,将提取到的漏洞特征进行规范化及图形化转化以得到智能合约典型漏洞特征token串向量集,所述已知的智能合约典型漏洞包括重入漏洞、时间戳依赖以及无限循环漏洞;将所述智能合约典型漏洞特征token串向量集与所述待检测智能合约代码token串向量集融合并计算提取特征信息再汇入词嵌入矩阵,以在待检测智能合约代码token串对特征信息进行挑选后圈定潜在漏洞区域,将圈定得到的潜在漏洞区域转化为子图以构建潜在漏洞区域图,将构建得到的潜在漏洞区域图输入至图神经网络模型中进行模型训练以得到图神经网络漏洞检测模型;获取目标智能合约代码并进行规范化及图形化处理以得到目标潜在漏洞区域图,将所述目标潜在漏洞区域图输入至所述图神经网络漏洞检测模型中进行检测以根据检测结果判断所述目标智能合约代码是否存在漏洞。7.上述智能合约漏洞检测方法,通过获取待检测智能合约代码以及已知的智能合约典型漏洞进行规范化处理后分别得到待检测智能合约代码token串向量集与智能合约典型漏洞特征token串向量集,再将智能合约典型漏洞特征token串向量集与待检测智能合约代码token串向量集融合并计算提取特征信息再汇入词嵌入矩阵进行模型训练,以得到用于检测的图神经网络漏洞检测模型,当有需要检测的智能合约代码时,将该智能合约代码输入至图神经网络漏洞检测模型中进行检测以根据检测结果判断目标智能合约代码是否存在漏洞,通过系统定义规则的方式替换了现有依赖人工定义的专家规则的方式,提高了漏洞检测的准确率和效率,降低了漏报率和误报率,使得检测结果更加精确。8.另外,根据本发明上述的智能合约漏洞检测方法,还可以具有如下附加的技术特征:进一步地,获取待检测智能合约代码并进行规范化及图形化处理以得到待检测智能合约代码token串向量集的步骤包括:获取待检测智能合约代码并将其转换为结构化数据以建立代码的抽象模型,根据建立代码的抽象模型捕获代码上下文、程序依赖信息、控制流及数据流,并导出语法和语义;获取待检测智能合约代码并将其转换为抽象语法树;将所述抽象语法树和代码上下文、程序依赖信息、控制流及数据流进行汇总以组成语法语义信息,将所述语法语义信息转换为代码属性图;根据所述代码属性图将所述待检测智能合约代码中的每个语句行进行向量化表示进行汇总以得到待检测智能合约代码token串向量集。9.进一步地,将提取到的漏洞特征进行规范化及图形化转化以得到智能合约典型漏洞特征token串向量集的步骤包括:将提取到的漏洞特征进行规范化以将提取到的漏洞特征转化为相应的漏洞token串;根据向量转化工具将每一漏洞token串进行向量表示以将提取到的所有漏洞特征转化为智能合约典型漏洞特征token串向量集。10.进一步地,将所述智能合约典型漏洞特征token串向量集与所述待检测智能合约代码token串向量集融合并计算提取特征信息再汇入词嵌入矩阵,以在待检测智能合约代码token串对特征信息进行挑选后圈定潜在漏洞区域,将圈定得到的潜在漏洞区域转化为子图以构建潜在漏洞区域图的步骤包括:基于连续词袋体系结构,综合典型漏洞特征token串周边代码token,训练word2vec模型,并进行潜在漏洞区域图构建。11.进一步地,将所述智能合约典型漏洞特征token串向量集与所述待检测智能合约代码token串向量集融合并计算提取特征信息再汇入词嵌入矩阵,以在待检测智能合约代码token串对特征信息进行挑选后圈定潜在漏洞区域,将圈定得到的潜在漏洞区域转化为子图以构建潜在漏洞区域图的步骤还包括:基于连续词袋体系结构将潜在漏洞区域表示为潜在漏洞区域子图,所述潜在漏洞区域子图表示与漏洞相关联的漏洞区域候选图,从代码属性图导出潜在漏洞区域子图作为漏洞缺陷样本;将生成的潜在漏洞区域子图转换生成节点类型和代码概念矩阵,以将节点类型和代码概念矩阵与word2vec模型生成的语义向量融合成漏洞缺陷向量。12.本发明另一方面提供一种智能合约漏洞检测系统,包括:获取模块,用于获取待检测智能合约代码并进行规范化及图形化处理以得到待检测智能合约代码token串向量集;转化模块,用于获取已知的智能合约典型漏洞并进行特征提取以将提取到的漏洞特征构建模型训练数据集,将提取到的漏洞特征进行规范化及图形化转化以得到智能合约典型漏洞特征token串向量集,所述已知的智能合约典型漏洞包括重入漏洞、时间戳依赖以及无限循环漏洞;模型训练模块,用于将所述智能合约典型漏洞特征token串向量集与所述待检测智能合约代码token串向量集融合并计算提取特征信息再汇入词嵌入矩阵,以在待检测智能合约代码token串对特征信息进行挑选后圈定潜在漏洞区域,将圈定得到的潜在漏洞区域转化为子图以构建潜在漏洞区域图,将构建得到的潜在漏洞区域图输入至图神经网络模型中进行模型训练以得到图神经网络漏洞检测模型;检测模块,用于获取目标智能合约代码并进行规范化及图形化处理以得到目标潜在漏洞区域图,将所述目标潜在漏洞区域图输入至所述图神经网络漏洞检测模型中进行检测以根据检测结果判断所述目标智能合约代码是否存在漏洞。13.本发明另一方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述的智能合约漏洞检测方法。14.本发明另一方面还提供一种数据处理设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述的智能合约漏洞检测方法。附图说明15.图1为本发明智能合约漏洞检测图神经网络训练架构图;图2为本发明第一实施例中智能合约漏洞检测方法的流程图;图3为本发明智能合约漏洞检测图神经网络内部结构图;图4为本发明第三实施例中智能合约漏洞检测系统的系统框图。16.如下具体实施方式将结合上述附图进一步说明本发明。具体实施方式17.为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的若干实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。18.除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。19.为了解决现有技术中依赖人工定义的专家规则进行智能合约漏洞检测的方式,导致执行效率低、代码覆盖率低和检测周期长的技术问题,本技术提供了一种智能合约漏洞检测方法、系统、存储介质及设备,如图1所示,本技术通过获取漏洞特征向量在图神经网络中进行聚合得到深度特征,在将得到的深度特征进行类别归纳,以检测漏洞。具体的,通过获取待检测智能合约代码以及已知的智能合约典型漏洞进行规范化处理后分别得到待检测智能合约代码token串向量集与智能合约典型漏洞特征token串向量集,再将智能合约典型漏洞特征token串向量集与待检测智能合约代码token串向量集融合并计算提取特征信息再汇入词嵌入矩阵,对特征信息进行挑选后进行模型训练以得到用于检测的图神经网络漏洞检测模型,当有需要检测的智能合约代码时,将该智能合约代码输入至图神经网络漏洞检测模型中进行检测以根据检测结果判断目标智能合约代码是否存在漏洞,通过系统定义规则的方式替换了现有依赖人工定义的专家规则的方式,提高了漏洞检测的准确率和效率,降低了漏报率和误报率,使得检测结果更加精确。20.具体地,本技术的智能合约漏洞检测方法,包括获取智能合约源代码数据并进行预处理,将待检测智能合约源代码规范化;将智能合约源代码规范化后得到的智能合约代码的语法、语义和上下文特征及抽象语法树,按照相应的形式化准则融合构建智能合约的代码属性图;将已知智能合约典型漏洞特征向量化及结构化表示;将表示待检测智能合约行代码token串转化成向量表示;智能合约代码典型漏洞特征token串向量集与待检测智能合约代码token串向量集融合,计算提取特征信息,汇入词嵌入矩阵,对特征信息进行挑选后在待检测智能合约代码token串中圈定潜在漏洞区域并转化成子图;智能合约漏洞数据模型化。将需检测的智能合约按照本文相关方法处理输入模型,检测得到智能合约漏洞,具体请参阅。通过本发明的技术方案,提高了相关漏洞检测的准确率和效率,降低了漏报率和误报率,检测结果更加精确。以尽早发现漏洞并及时采取补救措施。21.为了便于理解本发明,下面将给出了本发明的若干实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。22.实施例一请参阅图2,所示为本发明第一实施例中的智能合约漏洞检测方法,所述方法包括步骤s101至s104:s101、获取待检测智能合约代码并进行规范化及图形化处理以得到待检测智能合约代码token串向量集。23.在本技术中的检测方法,分别包括智能合约的规范化、形式化、结构化、符号化、模型化。对智能合约进行以上分步处理,找出智能合约漏洞的特征,进行符号化处理,而后训练图神经网络模型,得到智能合约行漏洞图神经网络高效检测模型,进而检测出存在漏洞的智能合约代码行,精准定位实现智能合约漏洞行检测。24.在上述步骤中,对待检测智能合约源代码进行规范化处理。具体的,搜集智能合约源代码数据(例如,通过以太坊等收集),智能合约源代码规范化是将智能合约源代码按照相应的规则进行规范化的预处理,获取合约源代码的语法、语义和上下文特征,解析源代码行为一串代码token,整个源代码文件被解析为代码token串的集合。25.其次,对待检测智能合约语义流与特征结构的图形化处理。具体的,智能合约语义流与特征的图形化是将智能合约源代码规范化后得到的智能合约代码的语法、语义和上下文特征及抽象语法树,按照相应的形式化准则融合构建智能合约的代码属性图。26.作为一个具体示例,在对待检测智能合约语义流与特征结构的图形化的过程中,智能合约语义流与特征的图形化是将智能合约源代码规范化后得到的待检测智能合约代码逐句分析出语法、语义、控制流、程序依赖流和上下文特征及抽象语法树,具体包括步骤s21-s23:s21、生成抽象语法树:首先需要生成代码的抽象语法树,可使用antlr等工具。抽象语法树用于表示代码的语法结构,包括代码中的语句、表达式、变量、函数等元素。27.s22、生成程序依赖图:接着需要从抽象语法树生成代码的程序依赖图。程序依赖图表示代码中的控制依赖关系、数据依赖关系和数据流关系等。生成程序依赖图通常需要进行数据流分析和控制流分析。28.s23、生成控制流图:然后需要从抽象语法树生成代码的控制流图。控制流图表示代码中的控制结构和控制流程,通常通过抽象语法树的遍历和分析生成。29.按照相应的形式化准则构建对应的抽象语法树边、控制边、程序依赖边、调用边及其他信息边从而融合构建智能合约代码属性图。进行图消融,简化代码属性图,以防止增加显著噪声和冗余,从整个图形中提取高度丰富缺陷特征信息的子区域的目的不是为了降低图形处理的难度,而是为了消除冗余结构,以防止小缺陷结构淹没在由整个文件生成的图形中。30.s102、获取已知的智能合约典型漏洞并进行特征提取以将提取到的漏洞特征构建模型训练数据集,将提取到的漏洞特征进行规范化及图形化转化以得到智能合约典型漏洞特征token串向量集,已知的智能合约典型漏洞包括重入漏洞、时间戳依赖以及无限循环漏洞。31.在上述步骤中,对已知智能合约典型漏洞特征向量化及结构化表示。具体的,对已知的智能合约典型漏洞,包括重入漏洞、时间戳依赖、无限循环漏洞进行特征提取,并构建用于模型训练的漏洞数据集,将漏洞特征按照上述的规范化方法转化为相应的漏洞token串,然后使用工具word2vec将漏洞token串转化为向量表示。32.进一步地,对待检测智能合约代码token串向量化及结构化表示。具体的,将表示待检测智能合约行代码token串转化成向量表示。使用工具word2vec将源代码对应的代码属性图上的每个节点,即源代码的每个语句行,转换为向量表示。33.s103、将智能合约典型漏洞特征token串向量集与待检测智能合约代码token串向量集融合并计算提取特征信息再汇入词嵌入矩阵,以在待检测智能合约代码token串对特征信息进行挑选后圈定潜在漏洞区域,将圈定得到的潜在漏洞区域转化为子图以构建潜在漏洞区域图,将构建得到的潜在漏洞区域图输入至图神经网络模型中进行模型训练以得到图神经网络漏洞检测模型。34.在上述步骤中,具体请参阅图3,智能合约代码典型漏洞特征token串向量集与待检测智能合约代码token串向量集融合,计算提取特征信息再汇入词嵌入矩阵,继续在待检测智能合约代码token串中对特征信息进行挑选后圈定潜在漏洞区域并转化成子图。35.其次,对智能合约漏洞数据模型化得到图神经网络漏洞检测模型。具体的,引入上述中的词嵌入矩阵构建图神经网络漏洞检测模型。它包括一个输入层,一个图形卷积层、一个图形池层和一个输出层。36.在本实施例中,智能合约代码典型漏洞特征token串向量集与待检测智能合约代码token串向量集融合,计算提取特征信息再汇入词嵌入矩阵,继续对特征信息进行挑选后在代码属性图中圈定潜在漏洞区域并转化成子图。潜在漏洞区域被定义为满足特定规则并由潜在漏洞区域表示的区域;潜在漏洞区域gvrc(graph of vulnerability region candidates)是一种有向无环图结构,表示与漏洞相关联的漏洞区域候选图。然后,使用从代码属性图中导出潜在漏洞区域子图作为漏洞缺陷样本,这些子图被认为与可能的漏洞缺陷节点相关联。将代码属性图构建成潜在漏洞区域图,可以遵循步骤s31-s35:s31、将代码属性图转化为基于节点的图形数据结构,其中每个节点表示程序中的一个语句或表达式。节点之间的连边分别表示数据依赖关系、控制流程和语法结构。可以使用现有的代码分析工具和库构建这些图形数据结构。37.s32、在每个图形中,标记与已知漏洞相关的节点和连边。这些节点和连边可以通过手动标注或使用现有的漏洞代码数据集进行标记。38.s33、将代码属性图转化为一个综合的图形数据结构,并按照与漏洞相关性进行筛选和排序。将节点之间的边映射到权重上,以体现节点之间的关系强度。可以使用基于语义相似度的方法来计算节点之间的边权重。可以使用机器学习或深度学习方法,从代码属性图代码属性图中提取有意义的特征,例如节点类型、边类型、节点属性、边权重等,以构建潜在漏洞区域图。与漏洞修复相关的变量、函数调用、控制流等节点可以被筛选出来,并按照与漏洞相关性的程度排序,以作为漏洞区域的候选。39.s34、对潜在漏洞区域图进行进一步的处理,例如去除不必要的节点和连边、合并相邻的节点和连边、进行图形压缩,以及建立候选节点之间的连接。可以使用基于相似度的方法,对候选节点之间的相似性进行度量,建立候选节点之间的连接关系。例如,使用余弦相似度计算节点之间的相似性,建立节点之间的边。这可以使得潜在漏洞区域图更加紧凑和有效。40.s35、将潜在漏洞区域图保存为图形数据文件,以便于后续的图神经网络模型训练。41.s104、获取目标智能合约代码并进行规范化及图形化处理以得到目标潜在漏洞区域图,将目标潜在漏洞区域图输入至图神经网络漏洞检测模型中进行检测以根据检测结果判断目标智能合约代码是否存在漏洞。42.在上述步骤中,将需要检测的目标智能合约代码先进行规范化处理以将目标智能合约代码解析为代码token串的集合,再对目标智能合约的语义流与特征结构进行图形化处理,生成潜在漏洞区域图,输入到训练好的图神经网络漏洞检测模型中检测是否存在漏洞。43.综上,本发明上述实施例当中的智能合约漏洞检测方法,通过获取待检测智能合约代码以及已知的智能合约典型漏洞进行规范化处理后分别得到待检测智能合约代码token串向量集与智能合约典型漏洞特征token串向量集,再将智能合约典型漏洞特征token串向量集与待检测智能合约代码token串向量集融合并计算提取特征信息再汇入词嵌入矩阵进行模型训练,以得到用于检测的图神经网络漏洞检测模型,当有需要检测的智能合约代码时,将该智能合约代码输入至图神经网络漏洞检测模型中进行检测以根据检测结果判断目标智能合约代码是否存在漏洞,通过系统定义规则的方式替换了现有依赖人工定义的专家规则的方式,提高了漏洞检测的准确率和效率,降低了漏报率和误报率,使得检测结果更加精确。44.实施例二本发明第二实施例中的智能合约漏洞检测方法,包括步骤s201至s204:s201、获取待检测智能合约代码并进行规范化及图形化处理以得到待检测智能合约代码token串向量集。45.在上述步骤中,获取待检测智能合约代码并将其转换为结构化数据以建立代码的抽象模型,根据建立代码的抽象模型捕获捕获代码上下文、程序依赖信息、控制流及数据流,并导出语法和语义;获取待检测智能合约代码并将其转换为抽象语法树;将所述抽象语法树和代码上下文、程序依赖信息、控制流及数据流进行汇总以组成语法语义信息,将所述语法语义信息转换为代码属性图;根据所述代码属性图将所述待检测智能合约代码中的每个语句行进行向量化表示进行汇总以得到待检测智能合约代码token串向量集。46.具体的,待检测智能合约源代码规范化包括如下步骤:s11、获取待测试智能合约源代码。47.具体的,通过google数据库检索以太坊上的智能合约地址,基于合约地址在etherscan平台获取对应的智能合约源代码,作为待检测智能合约。48.s12、对智能合约源代码进行预处理。49.源代码预处理步骤的目标是提取智能合约代码的句法、语义和上下文代码特征。对于每个源代码文件,使用抽象语法树来生成token流,并通过提取句法信息来确定其token类型。50.s13、删除源代码中与程序语义无关的注释。51.s14、以一对一的方式将用户定义的变量映射到符号名称。52.具体的,将用户定义的变量映射为var+序号。53.s15、以一对一的方式将用户定义的函数映射到符号名称。54.具体的,将用户定义的变量映射为fun+序号。55.s16、用《num》标记代替整数、实数、指数符号和十六进制数字。56.s17、用《str》标记代替常量字符串。57.消除特殊字符标记给预测模型带来的噪音,即删除特殊字符。特殊字符包括“{}”、“()”、“(空格)”、“!”等。58.s18、用《unk》来替换那些存在于测试集但不存在于训练集的标记,即所谓的词汇外问题。59.需要进一步说明的是,在上述步骤中,忽略空行。60.进一步地,对待检测智能合约语义流与特征结构的进行图形化包括如下步骤:s21、将待检测智能合约源代码转换为结构化数据,并建立代码的抽象模型,以捕获代码上下文、程序依赖信息、控制流和数据流,并导出语法和语义。61.s22、将待检测智能合约源代码转化为抽象语法树。62.s23、将抽象语法树和代码上下文、程序依赖信息、控制流和数据流组成的语法语义信息转换成富语义的代码属性图。63.s24、进行图消融,简化代码属性图,以防止增加显著噪声和冗余,从整个图形中提取高度丰富缺陷特征信息的子区域的目的不是为了降低图形处理的难度,而是为了消除冗余结构,以防止小缺陷结构淹没在由整个文件生成的图形中。64.s202、获取已知的智能合约典型漏洞并进行特征提取以将提取到的漏洞特征构建模型训练数据集,将提取到的漏洞特征进行规范化及图形化转化以得到智能合约典型漏洞特征token串向量集,已知的智能合约典型漏洞包括重入漏洞、时间戳依赖以及无限循环漏洞。65.将提取到的漏洞特征进行规范化及图形化转化以得到智能合约典型漏洞特征token串向量集的步骤包括:将提取到的漏洞特征进行规范化以将提取到的漏洞特征转化为相应的漏洞token串;根据向量转化工具将每一漏洞token串进行向量表示以将提取到的所有漏洞特征转化为智能合约典型漏洞特征token串向量集。66.进一步地,搜集智能合约典型漏洞特征数据,形成相应数据集;将搜集的智能合约典型漏洞特征数据转化成token串;使用word2vec得到每一个智能合约典型漏洞token的向量表示。67.再进一步地,对待检测智能合约代码token串向量化及结构化表示具体包括:s41、将待检测智能合约代码形成相应数据集。68.s42、将待检测智能合约代码转换成token串。69.s43、使用word2vec得到待检测智能合约代码token的向量表示。70.s44、对待检测智能合约代码语义进行定义提取,将潜在漏洞区域图转换为可学习的张量数据,包括节点属性矩阵和邻接矩阵,用于存储节点连接关系,软件缺陷影响软件的语法和结构及其语义和上下文。即使相同的代码在不同的上下文中也可能有不同的缺陷倾向。代码概念得到了增强,并细分为语义和结构概念。71.s45、使用word2vec将源代码的每个语句(即代码属性图上的每个节点)的标记转换为向量表示,word2vec模型基于分布式假设构建了一个神经网络,以提供同义词的相同表示。该方法利用单词嵌入技术提取每个节点的语义并生成向量。72.s203、将智能合约典型漏洞特征token串向量集与待检测智能合约代码token串向量集融合并计算提取特征信息再汇入词嵌入矩阵,以在待检测智能合约代码token串对特征信息进行挑选后圈定潜在漏洞区域,将圈定得到的潜在漏洞区域转化为子图以构建潜在漏洞区域图,将构建得到的潜在漏洞区域图输入至图神经网络模型中进行模型训练以得到图神经网络漏洞检测模型。73.基于连续词袋体系结构,综合典型漏洞特征token串周边代码token,训练word2vec模型,并进行潜在漏洞区域图构建。具体的,基于连续词袋体系结构将潜在漏洞区域表示为潜在漏洞区域子图,所述潜在漏洞区域子图表示与漏洞相关联的漏洞区域候选图,从代码属性图中导出潜在漏洞区域子图作为漏洞缺陷样本;将生成的潜在漏洞区域子图转换生成节点类型和代码概念矩阵,以将节点类型和代码概念矩阵与word2vec模型生成的语义向量融合成漏洞缺陷向量。74.在上述步骤中,具体包括:s51、智能合约代码典型漏洞特征token串向量集与待检测智能合约代码token串向量表示计算提取特征信息再汇入词嵌入矩阵,形成集合。75.s52、构建潜在漏洞区域图。76.基于连续词袋体系结构,综合典型漏洞特征token串周边代码token,训练word2vec模型,并进行潜在漏洞区域图构建。77.s53、潜在漏洞区域被定义为满足特定规则并由潜在漏洞区域图表示的区域。78.潜在漏洞区域图是一种有向无环图结构,表示与漏洞相关联的漏洞区域候选图。然后,使用从代码属性图中导出潜在漏洞区域子图作为漏洞缺陷样本,这些子图被认为与可能的漏洞缺陷节点相关联。79.s54、将生成的潜在漏洞区域图转换生成节点类型和代码概念矩阵。80.s55、将潜在漏洞区域图转换生成的节点类型和代码概念矩阵与word2vec生成的语义向量融合成漏洞缺陷向量。81.s204、获取目标智能合约代码并进行规范化及图形化处理以得到目标潜在漏洞区域图,将目标潜在漏洞区域图输入至图神经网络漏洞检测模型中进行检测以根据检测结果判断目标智能合约代码是否存在漏洞。82.具体的,预处理待漏洞检测的目标智能合约源代码,即将待漏洞检测的智能合约源代码进行规范化、形式化、符号化,得到对应的向量集;再将向量化数据输入图神经网络模型,输出得到所述智能合约源代码的漏洞检测结果。83.需要指出的是,本发明第二实施例所提供的方法,其实现原理及产生的一些技术效果和第一实施例相同,为简要描述,本实施例未提及之处,可参考第一实施例中相应内容。84.综上,本发明上述实施例当中的智能合约漏洞检测方法,通过获取待检测智能合约代码以及已知的智能合约典型漏洞进行规范化处理后分别得到待检测智能合约代码token串向量集与智能合约典型漏洞特征token串向量集,再将智能合约典型漏洞特征token串向量集与待检测智能合约代码token串向量集融合并计算提取特征信息再汇入词嵌入矩阵进行模型训练,以得到用于检测的图神经网络漏洞检测模型,当有需要检测的智能合约代码时,将该智能合约代码输入至图神经网络漏洞检测模型中进行检测以根据检测结果判断目标智能合约代码是否存在漏洞,通过系统定义规则的方式替换了现有依赖人工定义的专家规则的方式,提高了漏洞检测的准确率和效率,降低了漏报率和误报率,使得检测结果更加精确。85.实施例三请参阅图4,所示为本发明第三实施例中的智能合约漏洞检测系统,包括:获取模块,用于获取待检测智能合约代码并进行规范化及图形化处理以得到待检测智能合约代码token串向量集;转化模块,用于获取已知的智能合约典型漏洞并进行特征提取以将提取到的漏洞特征构建模型训练数据集,将提取到的漏洞特征进行规范化及图形化转化以得到智能合约典型漏洞特征token串向量集,所述已知的智能合约典型漏洞包括重入漏洞、时间戳依赖以及无限循环漏洞;模型训练模块,用于将所述智能合约典型漏洞特征token串向量集与所述待检测智能合约代码token串向量集融合并计算提取特征信息再汇入词嵌入矩阵,以在待检测智能合约代码token串对特征信息进行挑选后圈定潜在漏洞区域,将圈定得到的潜在漏洞区域转化为子图以构建潜在漏洞区域图,将构建得到的潜在漏洞区域图输入至图神经网络模型中进行模型训练以得到图神经网络漏洞检测模型;检测模块,用于获取目标智能合约代码并进行规范化及图形化处理以得到目标潜在漏洞区域图,将所述目标潜在漏洞区域图输入至所述图神经网络漏洞检测模型中进行检测以根据检测结果判断所述目标智能合约代码是否存在漏洞。86.综上,本发明上述实施例当中的智能合约漏洞检测系统,通过获取待检测智能合约代码以及已知的智能合约典型漏洞进行规范化处理后分别得到待检测智能合约代码token串向量集与智能合约典型漏洞特征token串向量集,再将智能合约典型漏洞特征token串向量集与待检测智能合约代码token串向量集融合并计算提取特征信息再汇入词嵌入矩阵进行模型训练,以得到用于检测的图神经网络漏洞检测模型,当有需要检测的智能合约代码时,将该智能合约代码输入至图神经网络漏洞检测模型中进行检测以根据检测结果判断目标智能合约代码是否存在漏洞,通过系统定义规则的方式替换了现有依赖人工定义的专家规则的方式,提高了漏洞检测的准确率和效率,降低了漏报率和误报率,使得检测结果更加精确。87.此外,本发明的实施例还提出一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例中方法的步骤。88.此外,本发明的实施例还提出一种数据处理设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现上述实施例中方法的步骤。89.在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。90.计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在计算机存储器中。91.应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。92.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、ꢀ“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。93.尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部