CN113626826A - 智能合约安全检测方法、***、设备、终端及应用 - Google Patents

智能合约安全检测方法、***、设备、终端及应用 Download PDF

Info

Publication number
CN113626826A
CN113626826A CN202110862067.6A CN202110862067A CN113626826A CN 113626826 A CN113626826 A CN 113626826A CN 202110862067 A CN202110862067 A CN 202110862067A CN 113626826 A CN113626826 A CN 113626826A
Authority
CN
China
Prior art keywords
graph
intelligent contract
model
converting
training
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110862067.6A
Other languages
English (en)
Inventor
董学文
田文生
沈玉龙
丛雅倩
张志为
佟威
张涛
冶英杰
李光夏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN202110862067.6A priority Critical patent/CN113626826A/zh
Publication of CN113626826A publication Critical patent/CN113626826A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Mathematical Physics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Databases & Information Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明属于区块链安全技术领域,公开了一种智能合约安全检测方法、***、设备、终端及应用,所述智能合约安全检测方法包括:使用开源代码训练word2vec模型;按照智能合约语法将开源代码封装成智能合约函数;将封装好的函数转化为抽象语法树,并提取数据流和控制流信息;将智能合约的数据流和控制流信息转化为图模型;使用已训练的word2vec模型将图节点转化成向量;使用图神经网络对图模型进行训练;读出所有节点信息,将智能合约函数图模型转化成向量;使用分类模型判断函数向量是否包含智能合约漏洞信息。本发明提升了智能合约安全检测效率,并取得了较好的效果。

Description

智能合约安全检测方法、***、设备、终端及应用
技术领域
本发明属于区块链安全技术领域,尤其涉及一种智能合约安全检测方法、***、设备、终端及应用。
背景技术
目前,区块链平台上的智能合约大都涉及数字资产或加密货币的交易和处理,因此智能合约中的漏洞可能被利用而使用户遭受恶意攻击。正因如此,近年来,越来越多的研究人员开始对针对智能合约安全检测方法进行研究,但是现有的研究主要是围绕以太坊平台开展,对Hyperledger Fabric为代表的联盟链平台的智能合约安全检测却缺少针对性的检测方法。主要原因如下:
(1)Fabric平台上的智能合约主要部署在组织内部,难以获取;
(2)以太坊和Fabric具有不同平台特性,两个平台的安全检测工具和方法无法直接互用;
(3)Fabric平台公开的智能合约较少,无法进行规模化的分析研究。
智能合约是一段运行在区块链***上的软件,同其它软件***一样,越早发现智能合约中的问题,修正时所投入的人力物力越少。随着在Fabric平台托管的资产越来越多,一旦运行在Fabric平台上的智能合约出现问题,对企业业务产生影响的同时,势必也会造成资金损失,因此针对Fabric智能合约的安全研究尤为迫切和必要。
通过上述分析,现有技术存在的问题及缺陷为:
(1)现有的研究主要是围绕以太坊平台开展,对Hyperledger Fabric为代表的联盟链平台的智能合约安全检测却缺少针对性的检测方法。
(2)Fabric平台上的智能合约主要部署在组织内部,难以获取;Fabric平台公开的智能合约较少,无法进行规模化的分析研究。
(3)以太坊和Fabric具有不同平台特性,两个平台的安全检测工具和方法无法直接互用。
解决以上问题及缺陷的难度为:
一方面,由于Fabric平台公开的智能合约代码较少,对于图神经网络来说,可利用的数据集不足,训练数据的缺乏限制机器学***台合约安全检测工具主要是针对以太坊平台的,无法直接用于Fabric平台,而且可供参考的有关Fabric合约漏洞检测资料极度缺乏,进一步增加了方案具体实施的难度。
解决以上问题及缺陷的意义为:
随着区块链技术的不断深入发展并逐渐落地使用,区块链与生活之间的关系越来越密切,智能合约的安全检测愈发重要,本发明针对Hyperledger Fabric平台特点,***完整地分析了Fabric平台智能合约面临的安全问题和潜在风险,对智能合约进行全面的安全评估,提升Fabric区块链***整体的安全性,对企业资金因合约安全漏洞遭到损失起到了一定的预防作用,极大的降低了企业资金损失风险。
发明内容
针对现有技术存在的问题,本发明提供了一种智能合约安全检测方法、***、设备、终端及应用,尤其涉及一种基于图神经网络的智能合约安全检测方法、***、设备、终端及应用。
本发明是这样实现的,一种智能合约安全检测方法,所述智能合约安全检测方法包括以下步骤:
步骤一,使用Github上的开源Go代码训练word2vec模型,实现程序图结点初始化,获取每个源代码的图表示中每个结点的初始向量;
步骤二,按照智能合约语法,将开源Github代码封装成智能合约函数,作为数据集主要来源;
步骤三,将封装好的函数转化为抽象语法树,并提取数据流和控制流信息,用于构造关系图;
步骤四,将智能合约的数据流和控制流信息转化为图模型,图模型可以保留和推理更多控制和数据流信息,以捕获更多智能合约漏洞的结构信息作为图神经网络的输入;
步骤五,使用已训练的word2vec模型将图节点转化成向量,目的是构造一个向量空间,使源代码中上下文关系紧密的词,在向量空间中彼此紧邻;
步骤六,使用图神经网络对图模型进行训练,得到一组模型的参数,最后使用采用这些参数的模型来完成本发明的分类任务;
步骤七,读出所有节点信息,将智能合约函数图模型转化成一个向量,通过代码嵌入,将代码嵌入向量传递到下游神经网络以进行预测;
步骤八,使用分类模型判断函数向量是否包含智能合约漏洞信息,最终实现本发明的分类任务。
进一步,所述智能合约安全检测方法,还包括:
(1)使用开源代码训练word2vec模型,将开源代码封装成智能合约函数,并通过人工标注建立训练数据集;
(2)将数据集按8:1:1进行整理,划分为训练集、验证集和测试集;
(3)利用Go语言开发的AST分析工具,对源代码文件进行处理,生成源文件的AST图结构;
(4)将生成的图结构保存到文件中,生成的程序图结构文件和源文件对应;
(5)使用word2vec算法对步骤(4)的图结构文件进行训练;
(6)训练图神经网络漏洞检测模型,以完成分类检测。
进一步,步骤(4)中,所述程序图由AST中的语法节点和语法标记构建而成;标准AST节点只有一个边,用于表示两个AST节点之间的父子关系;模型向AST添加保护边、跳转以及最后字典在内的多条边,使用邻接矩阵来记录每个关系图的边,用于获取额外的语法、数据和控制信息;对于每一条边,在额外添加一条后向边,用于在关系图中传播信息;其中,所述AST中的语法节点语言语法中的非终端,包括if语句或函数声明的AST节点;所述语法标记为终端,包括标识符名称和常数值。
进一步,步骤(5)中,所述使用word2vec算法对图结构文件进行训练通过调用Gensim库实现;所述word2vec网络将每个程序图的节点和标记映射到一个向量中,使源代码中上下文关系紧密的词在向量空间中彼此紧邻。
将源代码文件以函数为单位分割,用训练好的word2vec模型逐个对函数进行处理,实现每个函数图结点向量的初始化,并创建数据流、控制流图,并将函数的图结点和图结构单独保存到文件中,文件用0和1标注函数是否包含漏洞,这些文件将作为图神经网络的输入数据。
进一步,步骤(6)中,所述训练图神经网络漏洞检测模型,包括:
使用邻域聚合算法进行多关系图的学习,GGNN模型将关系图的每个节点表示成一个包含100个特征的向量,通过邻域聚合方案更新节点的嵌入;图节点v的100维嵌入向量hv是由嵌入层通过递归聚合和变换其相邻节点的表示向量而计算的;节点通过将其当前状态,即嵌入向量作为消息发送给沿边缘的所有邻居来交换信息;在每个节点处,消息被汇总,用于在下一个嵌入层,即下一个迭代更新关联的节点表示;在重复此过程以固定数量的迭代更新节点状态后,使用读出函数将图状体聚合到单个嵌入向量。
本发明的另一目的在于提供一种应用所述的智能合约安全检测方法的智能合约安全检测***,所述智能合约安全检测***包括:
word2vec模型训练模块,用于使用Github上的开源Go代码训练word2vec模型;
合约函数封装模块,用于按照智能合约语法,将开源Github代码封装成智能合约函数;
转化提取模块,用于将封装好的函数转化为抽象语法树,并提取数据流和控制流信息;
信息转化模块,用于将智能合约的数据流和控制流信息转化为图模型;
图节点转化模块,用于使用已训练的word2vec模型将图节点转化成向量;
图模型训练模块,用于使用图神经网络对图模型进行训练;
图模型转化模块,用于读出所有节点信息,将智能合约函数图模型转化成一个向量;
合约漏洞判断模块,用于使用分类模型判断函数向量是否包含智能合约漏洞信息。
本发明的另一目的在于提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
使用Github上的开源Go代码训练word2vec模型;按照智能合约语法,将开源Github代码封装成智能合约函数;将封装好的函数转化为抽象语法树,并提取数据流和控制流信息;将智能合约的数据流和控制流信息转化为图模型;
使用已训练的word2vec模型将图节点转化成向量;使用图神经网络对图模型进行训练;读出所有节点信息,将智能合约函数图模型转化成一个向量;使用分类模型判断函数向量是否包含智能合约漏洞信息。
本发明的另一目的在于提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:
使用Github上的开源Go代码训练word2vec模型;按照智能合约语法,将开源Github代码封装成智能合约函数;将封装好的函数转化为抽象语法树,并提取数据流和控制流信息;将智能合约的数据流和控制流信息转化为图模型;
使用已训练的word2vec模型将图节点转化成向量;使用图神经网络对图模型进行训练;读出所有节点信息,将智能合约函数图模型转化成一个向量;使用分类模型判断函数向量是否包含智能合约漏洞信息。
本发明的另一目的在于提供一种信息数据处理终端,所述信息数据处理终端用于实现所述的智能合约安全检测***。
本发明的另一目的在于提供一种所述的智能合约安全检测***在HyperledgerFabric智能合约漏洞检测中的应用。
结合上述的所有技术方案,本发明所具备的优点及积极效果为:本发明提供的智能合约安全检测***,该***实现了对Hyperledger Fabric智能合约进行漏洞检测。
本发明提供的基于Fabric的智能合约漏洞检测***和方法,应用图神经网络结合的方法,较现有的智能合约漏洞检测***有如下优势:
(1)减轻了人类专家手动定义功能的繁琐,提升了智能合约安全检测效率;
(2)通过图神经网络对智能合约进行学习,模型可以保留和推理更多控制和数据流信息,以捕获更多智能合约漏洞的结构信息;
(3)使用开源项目中的源代码进行标注,解决了Fabric智能合约数据集不足的问题,通过对开源项目中的源代码进行标注,将标注好的源代码进行训练,并取得了较好的效果。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的智能合约安全检测方法的流程图。
图2是本发明实施例提供的智能合约安全检测方法的原理图。
图3是本发明实施例提供的智能合约安全检测***的结构框图;
图中:1、word2vec模型训练模块;2、合约函数封装模块;3、转化提取模块;4、信息转化模块;5、图节点转化模块;6、图模型训练模块;7、图模型转化模块;8、合约漏洞判断模块。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例1
1)实验使用TensorFlow-2.1.0实现Fabric智能合约安全检测模型。
2)借助Go语言ast包构造源代码的AST图,并从中提取不同的边缘关系。即遍历所有源代码的AST节点。遍历时,对所有节点进行顺序编号,并根据特定规则获得不同边之间的关系,并使用统一的命名方案重写变量名。这一步确保了程序中变量名之类的语义差异,不会影响令牌(token)嵌入的选择。
3)创建目录,然后创建train.py训练文件。
4)在该文件内编写GGNN模型训练代码。代码以以下包载入代码开头。
Figure BDA0003186123730000071
5)在同一目录下,创建test.py测试文件。
6)在该文件内编写GGNN模型测试代码。代码以以下包载入代码开头。
import json
import os
import random
import re
import sys
import psutil
import time
from typing import Dict,Optional,Callable,Any
import nni
import jsonlines
import numpy as np
import tensorflow as tf
from tensorflow.python.training.tracking impor tdata_structuresas tf_data_structures
from dpu_utils.utils import RichPath
from tensorflow_core.python.keras import Sequential
from tensorflow_core.python.keras.layers import Dense
7)在配备GPU:1*v100NV32,CPU:8核64GiB的华为云服务器上进行训练和测试。
8)根据漏洞类型,把训练样本分成多批,分别训练GGNN模型,其中每批样本都由正样本和负样本组成。
9)为了最小化预测值和真实值两个概率分布之间的距离,选择交叉熵损失作为目标函数。
10)本模型使用最小批量随机梯度下降(SGD)和Adam算法,学习率为0.001。当损失小于0.005或达到最大100个训练时期时,训练将终止。
11)使用五重交叉验证来评估其各自数据集上的所有方法。该标准方法用于评估预测模型的泛化能力。
12)选择以下四个标准指标作为评估指标:
准确性(Accuracy):正确标记的案例与测试案例总数的比率。
精度(Precision):正确预测的样本与预测具有特定标签的样本总数之比。
召回率(Recall):正确预测的样本与属于一个类别的测试样本总数的比率。
F1分数:Precision和Recall的平均值,计算公式为:2×(Recall×Precision)/(Recall+Precision)。该指标方便测试漏洞类型分布。
13)为了验证基于门控图神经网络的模型准确性,本发明在测试过程中,设计了一个不包含控制流和数据流的图嵌入模型与本实施例模型进行对比测试。本实施例模型用GGNN-CP表示,不包含控制流和数据流的模型用GGNN-noCP表示。针对个评估指标测试结果如下表:
Figure BDA0003186123730000091
由测试结果来看,GGNN-CP模型在精确度和对负样本的区分能力方面都要高于GGNN-noCP模型,说明GGNN-CP在源代码的表示能力方面比GGNN-noCP要好,GGNN-CP能表示更多的源代码内部关系。
14)使用t-SNE的(t-Distributed Stochastic Neighbor Embedding),对样本检测结果进行可视化,可以看出GGNN-CP的检测效果明显优于GGNN-noCP。
针对现有技术存在的问题,本发明提供了一种智能合约安全检测方法、***、设备、终端及应用,下面结合附图对本发明作详细的描述。
如图1所示,本发明实施例提供的智能合约安全检测方法包括以下步骤:
S101,使用Github上的开源Go代码训练word2vec模型;
S102,按照智能合约语法,将开源Github代码封装成智能合约函数;
S103,将封装好的函数转化为抽象语法树,并提取数据流和控制流信息;
S104,将智能合约的数据流和控制流信息转化为图模型;
S105,使用已训练的word2vec模型将图节点转化成向量;
S106,使用图神经网络对图模型进行训练;
S107,读出所有节点信息,将智能合约函数图模型转化成一个向量;
S108,使用分类模型判断函数向量是否包含智能合约漏洞信息。
本发明实施例提供的智能合约安全检测方法的原理图如图2所示。
如图3所示,本发明实施例提供的智能合约安全检测***包括:
word2vec模型训练模块1,用于使用Github上的开源Go代码训练word2vec模型;
合约函数封装模块2,用于按照智能合约语法,将开源Github代码封装成智能合约函数;
转化提取模块3,用于将封装好的函数转化为抽象语法树,并提取数据流和控制流信息;
信息转化模块4,用于将智能合约的数据流和控制流信息转化为图模型;
图节点转化模块5,用于使用已训练的word2vec模型将图节点转化成向量;
图模型训练模块6,用于使用图神经网络对图模型进行训练;
图模型转化模块7,用于读出所有节点信息,将智能合约函数图模型转化成一个向量;
合约漏洞判断模块8,用于使用分类模型判断函数向量是否包含智能合约漏洞信息。
下面结合实施例对本发明的技术方案作进一步描述。
本发明的目的在于提出一种基于图神经网络Hyperledger Fabric智能合约安全检测***,该***实现了对Hyperledger Fabric智能合约进行漏洞检测。
本发明实施例提供的基于图神经网络漏洞应用于Hyperledger Fabric检测方法,包括以下步骤:
第一步,模型首先使用开源代码训练一个word2vec模型,然后把开源代码分装成智能合约函数,并同通过人工标注建立训练数据集。
第二步,对步骤一数据集按8:1:1进行整理,划分为训练集、验证集、测试集;
第三步,利用Go语言开发的AST分析工具,对源代码文件进行处理,生成源文件的AST图结构;
第四步,将步骤三生成的图结构并保存到文件中,生成的程序图结构文件和源文件一一对应。程序图由AST中的语法节点(即语言语法中的非终端,例如if语句或函数声明的AST节点)和语法标记(终端,如标识符名称和常数值)构建而成。标准AST节点只有一个边,用来表示两个AST节点之间的父子关系。为了获取额外的语法、数据和控制信息,模型向AST添加了保护边、跳转、最后字典等多条边,使用邻接矩阵来记录每个关系图的边,对于每一条边,在额外添加一条后向边,这些后向边有助于在关系图中传播信息。
第五步,使用word2vec算法对步骤四图结构文件进行训练,本发明通过调用Gensim库实现。word2vec网络将每个程序图的节点和标记映射到一个向量中,使源代码中上下文关系紧密的词在向量空间中彼此紧邻。本实施例中,本发明把源代码文件以函数为单位分割,用训练好的word2vec模型逐个对函数进行处理,实现每个函数图结点向量的初始化,并创建数据流,控制流图,并将函数的图结点和图结构单独保存到文件中,文件用0和1标注函数是否包含漏洞,这些文件将作为图神经网络的输入数据。
第六步,训练图神经网络漏洞检测模型,以完成分类检测。本发明使用邻域聚合算法进行多关系图的学习,GGNN模型将关系图的每个节点表示成一个包含100个特征的向量,通过邻域聚合方案更新节点的嵌入。图节点v的100维嵌入向量hv是由嵌入层通过递归聚合和变换其相邻节点的表示向量而计算的。节点通过将其当前状态(即嵌入向量)作为消息发送给沿边缘的所有邻居来交换信息。在每个节点处,消息被汇总,然后用于在下一个嵌入层(即下一个迭代)更新关联的节点表示。在重复此过程以固定数量的迭代更新节点状态后,使用读出函数将图状体聚合到单个嵌入向量。
本发明实施例的基于Fabric的智能合约漏洞检测***和方法,应用图神经网络结合的方法,较现有的智能合约漏洞检测***有如下优势:
1.减轻了人类专家手动定义功能的繁琐,提升了智能合约安全检测效率;
2.通过图神经网络对智能合约进行学习,模型可以保留和推理更多控制和数据流信息,以捕获更多智能合约漏洞的结构信息;
3.使用开源项目中的源代码进行标注,解决了Fabric智能合约数据集不足的问题,通过对开源项目中的源代码进行标注,将标注好的源代码进行训练,并取得了较好的效果。
本发明的图嵌入模型准确性达0.942,精度为0.893,召回率为1,F1分数为0.943,而不包含控制流和数据流的图嵌入模型准确性为0.915,精度为0.846,召回率为1,F1分数为0.917。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘SolidState Disk(SSD))等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。

Claims (10)

1.一种智能合约安全检测方法,其特征在于,所述智能合约安全检测方法包括以下步骤:
步骤一,使用Github上的开源Go代码训练word2vec模型;
步骤二,按照智能合约语法,将开源Github代码封装成智能合约函数;
步骤三,将封装好的函数转化为抽象语法树,并提取数据流和控制流信息;
步骤四,将智能合约的数据流和控制流信息转化为图模型;
步骤五,使用已训练的word2vec模型将图节点转化成向量;
步骤六,使用图神经网络对图模型进行训练;
步骤七,读出所有节点信息,将智能合约函数图模型转化成一个向量;
步骤八,使用分类模型判断函数向量是否包含智能合约漏洞信息。
2.如权利要求1所述的智能合约安全检测方法,其特征在于,所述智能合约安全检测方法,还包括:
(1)使用开源代码训练word2vec模型,将开源代码封装成智能合约函数,并通过人工标注建立训练数据集;
(2)将数据集按8:1:1进行整理,划分为训练集、验证集和测试集;
(3)利用Go语言开发的AST分析工具,对源代码文件进行处理,生成源文件的AST图结构;
(4)将生成的图结构保存到文件中,生成的程序图结构文件和源文件对应;
(5)使用word2vec算法对步骤(4)的图结构文件进行训练;
(6)训练图神经网络漏洞检测模型,以完成分类检测。
3.如权利要求2所述的智能合约安全检测方法,其特征在于,步骤(4)中,所述程序图由AST中的语法节点和语法标记构建而成;标准AST节点只有一个边,用于表示两个AST节点之间的父子关系;模型向AST添加保护边、跳转以及最后字典在内的多条边,使用邻接矩阵来记录每个关系图的边,用于获取额外的语法、数据和控制信息;对于每一条边,在额外添加一条后向边,用于在关系图中传播信息;其中,所述AST中的语法节点语言语法中的非终端,包括if语句或函数声明的AST节点;所述语法标记为终端,包括标识符名称和常数值。
4.如权利要求2所述的智能合约安全检测方法,其特征在于,步骤(5)中,所述使用word2vec算法对图结构文件进行训练通过调用Gensim库实现;所述word2vec网络将每个程序图的节点和标记映射到一个向量中,使源代码中上下文关系紧密的词在向量空间中彼此紧邻;
将源代码文件以函数为单位分割,用训练好的word2vec模型逐个对函数进行处理,实现每个函数图结点向量的初始化,并创建数据流、控制流图,并将函数的图结点和图结构单独保存到文件中,文件用0和1标注函数是否包含漏洞,这些文件将作为图神经网络的输入数据。
5.如权利要求2所述的智能合约安全检测方法,其特征在于,步骤(6)中,所述训练图神经网络漏洞检测模型,包括:
使用邻域聚合算法进行多关系图的学习,GGNN模型将关系图的每个节点表示成一个包含100个特征的向量,通过邻域聚合方案更新节点的嵌入;图节点v的100维嵌入向量hv是由嵌入层通过递归聚合和变换其相邻节点的表示向量而计算的;节点通过将其当前状态,即嵌入向量作为消息发送给沿边缘的所有邻居来交换信息;在每个节点处,消息被汇总,用于在下一个嵌入层,即下一个迭代更新关联的节点表示;在重复此过程以固定数量的迭代更新节点状态后,使用读出函数将图状体聚合到单个嵌入向量。
6.一种实施权利要求1~5任意一项所述的智能合约安全检测方法的智能合约安全检测***,其特征在于,所述智能合约安全检测***包括:
word2vec模型训练模块,用于使用Github上的开源Go代码训练word2vec模型;
合约函数封装模块,用于按照智能合约语法,将开源Github代码封装成智能合约函数;
转化提取模块,用于将封装好的函数转化为抽象语法树,并提取数据流和控制流信息;
信息转化模块,用于将智能合约的数据流和控制流信息转化为图模型;
图节点转化模块,用于使用已训练的word2vec模型将图节点转化成向量;
图模型训练模块,用于使用图神经网络对图模型进行训练;
图模型转化模块,用于读出所有节点信息,将智能合约函数图模型转化成一个向量;
合约漏洞判断模块,用于使用分类模型判断函数向量是否包含智能合约漏洞信息。
7.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
使用Github上的开源Go代码训练word2vec模型;按照智能合约语法,将开源Github代码封装成智能合约函数;将封装好的函数转化为抽象语法树,并提取数据流和控制流信息;将智能合约的数据流和控制流信息转化为图模型;
使用已训练的word2vec模型将图节点转化成向量;使用图神经网络对图模型进行训练;读出所有节点信息,将智能合约函数图模型转化成一个向量;使用分类模型判断函数向量是否包含智能合约漏洞信息。
8.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:
使用Github上的开源Go代码训练word2vec模型;按照智能合约语法,将开源Github代码封装成智能合约函数;将封装好的函数转化为抽象语法树,并提取数据流和控制流信息;将智能合约的数据流和控制流信息转化为图模型;
使用已训练的word2vec模型将图节点转化成向量;使用图神经网络对图模型进行训练;读出所有节点信息,将智能合约函数图模型转化成一个向量;使用分类模型判断函数向量是否包含智能合约漏洞信息。
9.一种信息数据处理终端,其特征在于,所述信息数据处理终端用于实现如权利要求6所述的智能合约安全检测***。
10.一种如权利要求6所述的智能合约安全检测***在HyperledgerFabric智能合约漏洞检测中的应用。
CN202110862067.6A 2021-07-29 2021-07-29 智能合约安全检测方法、***、设备、终端及应用 Pending CN113626826A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110862067.6A CN113626826A (zh) 2021-07-29 2021-07-29 智能合约安全检测方法、***、设备、终端及应用

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110862067.6A CN113626826A (zh) 2021-07-29 2021-07-29 智能合约安全检测方法、***、设备、终端及应用

Publications (1)

Publication Number Publication Date
CN113626826A true CN113626826A (zh) 2021-11-09

Family

ID=78381463

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110862067.6A Pending CN113626826A (zh) 2021-07-29 2021-07-29 智能合约安全检测方法、***、设备、终端及应用

Country Status (1)

Country Link
CN (1) CN113626826A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114465887A (zh) * 2021-12-23 2022-05-10 杭州溪塔科技有限公司 一种基于git的区块链配置管理方法和装置

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109697162A (zh) * 2018-11-15 2019-04-30 西北大学 一种基于开源代码库的软件缺陷自动检测方法
CN110674503A (zh) * 2019-09-24 2020-01-10 杭州云象网络技术有限公司 一种基于图卷积神经网络的智能合约死循环检测方法
CN111259394A (zh) * 2020-01-15 2020-06-09 中山大学 一种基于图神经网络的细粒度源代码漏洞检测方法
CN111488582A (zh) * 2020-04-01 2020-08-04 杭州云象网络技术有限公司 一种基于图神经网络的智能合约重入性漏洞检测的方法
KR20200094618A (ko) * 2019-01-30 2020-08-07 주식회사 린아레나 스마트 컨트랙트 유사도 분석을 이용한 소스 코드 감사 방법 및 그 장치
CN112035842A (zh) * 2020-08-17 2020-12-04 杭州云象网络技术有限公司 一种基于编码解码器的智能合约漏洞检测可解释性方法
CN112035841A (zh) * 2020-08-17 2020-12-04 杭州云象网络技术有限公司 一种基于专家规则与序列化建模的智能合约漏洞检测方法
WO2021037196A1 (zh) * 2019-08-28 2021-03-04 杭州趣链科技有限公司 智能合约代码漏洞检测方法、装置、计算机设备和存储介质
US11036614B1 (en) * 2020-08-12 2021-06-15 Peking University Data control-oriented smart contract static analysis method and system
CN113127933A (zh) * 2021-03-22 2021-07-16 西北大学 一种基于图匹配网络的智能合约庞氏骗局检测方法及***
CN113157723A (zh) * 2021-04-06 2021-07-23 福州大学 一种面向Hyperledger Fabric的SQL访问方法

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109697162A (zh) * 2018-11-15 2019-04-30 西北大学 一种基于开源代码库的软件缺陷自动检测方法
KR20200094618A (ko) * 2019-01-30 2020-08-07 주식회사 린아레나 스마트 컨트랙트 유사도 분석을 이용한 소스 코드 감사 방법 및 그 장치
WO2021037196A1 (zh) * 2019-08-28 2021-03-04 杭州趣链科技有限公司 智能合约代码漏洞检测方法、装置、计算机设备和存储介质
CN110674503A (zh) * 2019-09-24 2020-01-10 杭州云象网络技术有限公司 一种基于图卷积神经网络的智能合约死循环检测方法
CN111259394A (zh) * 2020-01-15 2020-06-09 中山大学 一种基于图神经网络的细粒度源代码漏洞检测方法
CN111488582A (zh) * 2020-04-01 2020-08-04 杭州云象网络技术有限公司 一种基于图神经网络的智能合约重入性漏洞检测的方法
US11036614B1 (en) * 2020-08-12 2021-06-15 Peking University Data control-oriented smart contract static analysis method and system
CN112035842A (zh) * 2020-08-17 2020-12-04 杭州云象网络技术有限公司 一种基于编码解码器的智能合约漏洞检测可解释性方法
CN112035841A (zh) * 2020-08-17 2020-12-04 杭州云象网络技术有限公司 一种基于专家规则与序列化建模的智能合约漏洞检测方法
CN113127933A (zh) * 2021-03-22 2021-07-16 西北大学 一种基于图匹配网络的智能合约庞氏骗局检测方法及***
CN113157723A (zh) * 2021-04-06 2021-07-23 福州大学 一种面向Hyperledger Fabric的SQL访问方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ZHEN YANG ET AL.: "A Multi-Modal Transformer-based Code Summarization Approach for Smart Contracts", 《IEEE XPLORE》, 28 June 2021 (2021-06-28) *
杨晓宙: "基于Fabric区块链的智能合约协同开发***", 《南京信息工程大学学报(自然科学版)》, vol. 11, no. 5, 31 May 2019 (2019-05-31) *
陈肇炫;邹德清;李珍;金海;: "基于抽象语法树的智能化漏洞检测***", 信息安全学报, no. 04, 15 July 2020 (2020-07-15) *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114465887A (zh) * 2021-12-23 2022-05-10 杭州溪塔科技有限公司 一种基于git的区块链配置管理方法和装置
CN114465887B (zh) * 2021-12-23 2024-01-23 杭州溪塔科技有限公司 一种基于git的区块链配置管理方法和装置

Similar Documents

Publication Publication Date Title
CN111783100B (zh) 基于图卷积网络对代码图表示学习的源代码漏洞检测方法
CN114610773A (zh) 基于大数据的数据应用场景识别方法及云计算服务器
CN112580328A (zh) 事件信息的抽取方法及装置、存储介质、电子设备
CN112464233B (zh) 一种云平台上基于rnn的恶意软件检测方法
CN113486357A (zh) 一种基于静态分析和深度学习的智能合约安全检测方法
CN115204886A (zh) 账户识别的方法、装置、电子设备和存储介质
CN112925914A (zh) 数据安全分级方法、***、设备及存储介质
CN114676435A (zh) 一种基于知识图谱的软件漏洞可利用性预测方法
CN113626826A (zh) 智能合约安全检测方法、***、设备、终端及应用
CN116992052B (zh) 用于威胁情报领域的长文本摘要方法、装置和电子设备
CN117291722A (zh) 对象管理方法、相关设备及计算机可读介质
CN116663018A (zh) 一种基于代码可执行路径的漏洞检测方法及装置
CN107463578A (zh) 应用下载量统计数据去重方法、装置和终端设备
CN115935358A (zh) 一种恶意软件识别方法、装置、电子设备及存储介质
CN115905293A (zh) 作业执行引擎的切换方法及装置
CN115730221A (zh) 基于溯因推理的虚假新闻识别方法、装置、设备及介质
CN112765236B (zh) 自适应异常设备挖掘方法、存储介质、设备及***
CN114912628A (zh) 特征选择方法、装置、电子设备及计算机可读存储介质
CN115293872A (zh) 建立风险识别模型的方法及对应装置
CN116090538A (zh) 一种模型权重获取方法以及相关***
CN111611498A (zh) 一种基于领域内部语义的网络表示学习方法及***
CN115102852B (zh) 物联网业务开通方法、装置、电子设备及计算机介质
CN113537372B (zh) 一种地址识别方法、装置、设备及存储介质
CN113780518B (zh) 网络架构优化方法、终端设备及计算机可读存储介质
Cheng et al. DLLog: An Online Log Parsing Approach for Large‐Scale System

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination