CN112699375A - 基于网络嵌入相似性的区块链智能合约安全漏洞检测方法 - Google Patents

基于网络嵌入相似性的区块链智能合约安全漏洞检测方法 Download PDF

Info

Publication number
CN112699375A
CN112699375A CN202011596586.4A CN202011596586A CN112699375A CN 112699375 A CN112699375 A CN 112699375A CN 202011596586 A CN202011596586 A CN 202011596586A CN 112699375 A CN112699375 A CN 112699375A
Authority
CN
China
Prior art keywords
model
network
code
intelligent contract
data set
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.)
Granted
Application number
CN202011596586.4A
Other languages
English (en)
Other versions
CN112699375B (zh
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.)
Hangzhou Qulian Technology Co Ltd
Original Assignee
Hangzhou Qulian Technology Co Ltd
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 Hangzhou Qulian Technology Co Ltd filed Critical Hangzhou Qulian Technology Co Ltd
Priority to CN202011596586.4A priority Critical patent/CN112699375B/zh
Priority claimed from CN202011596586.4A external-priority patent/CN112699375B/zh
Publication of CN112699375A publication Critical patent/CN112699375A/zh
Application granted granted Critical
Publication of CN112699375B publication Critical patent/CN112699375B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • G06F16/353Clustering; Classification into predefined classes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2411Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on the proximity to a decision surface, e.g. support vector machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/243Classification techniques relating to the number of classes
    • G06F18/24323Tree-organised classifiers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了基于网络嵌入相似性的区块链智能合约安全漏洞检测方法,包括以下步骤:基于区块链智能合约的智能合约源码,进行信息提取,获得初始数据集;基于初始数据集的段落结构,构建子网络模型,进而构建代码网络模型,基于网络嵌入相似性特征,对代码网络模型进行若干次迭代训练,获得初始区块链智能合约安全漏洞检测模型;基于初始区块链智能合约安全漏洞检测模型和初始数据集,通过逻辑回归模型、随机森林模型以及线性支持向量机模型进行训练,得到目标区块链智能合约安全漏洞检测模型,进而对所述区块链智能合约的安全漏洞进行检测;本发明可以综合检测重入性漏洞、整数溢出漏洞以及逻辑错误漏洞,提高了智能合约代码安全漏洞的检测效率。

Description

基于网络嵌入相似性的区块链智能合约安全漏洞检测方法
技术领域
本发明涉及到网络空间安全技术领域,尤其涉及到基于网络嵌入相似性的智能合约安全漏洞检测方法。
背景技术
智能合约是以太坊的重要技术之一,是一种特殊协议,旨在提供、验证和执行合约。智能合约是区块链被称之为“去中心化的”重要原因,它允许我们在不需要第三方的情况下,执行可追溯、不可逆转和安全的交易。智能合约上包含了交易所需的所有信息。只有在满足条件之后才会产生结果。同时,智能合约是价值传递的实现方式,每一位位于智能合约中的数字都有着巨大的价值。
2018年4月,美链(BEC)合约安全事件导致了大量的代币BEC流入市场,继而海量的BEC代币被抛售。给BEC市场交易带来毁灭性的打击。技术层面上来说,BEC事件就是智能合约技术中的整数溢出 (overflow)安全漏洞。近年来,市场对于智能合约安全漏洞的关注度持续升高。现阶段智能合约安全漏洞检测还是依靠于专业技术专家来实现人工检查,这种检测方式耗时耗力,并且对于各种安全漏洞的准确检测存在着一定的难度。
据专利号为:CN111488582A的《一种基于图神经网络的智能合约重入性漏洞检测方法》的描述。该专利中很好地利用了图神经网络实现对于重入性漏洞的自动检测。但是依旧存在问题。该发明中所构建的图神经网络使用callgraph来实现函数调用关系的网络构建,网络的节点是代码当中所涉及到的各个函数。本发明中构建全连子网络,按照智能合约代码顺序连接而成的大型代码网络。子网络使用的是类似于自然语言的处理方式,分段落进行全连子网络的构建。全连子网络中的各个节点是代码中的有价值的词汇,节点数量明显要多于其他结构的网络。使得子网络中含有更加完备的信息。这种由全连子网络,按照智能合约代码顺序的方式连接而成的代码网络,网络结构更加细致明确,网络规模更大,信息在网络中传递更加的顺畅,无需考虑函数之间的调用关系。并且可以有效地对重入性漏洞、整数溢出漏洞以及逻辑错误漏洞做到综合性检测。适用性更高。
进一步的,对于本发明可以重点识别的几个漏洞来说,各自的特性如下:(1)重入性漏洞:此漏洞一般主要是由于智能合约代码编写过程中的人为疏漏导致的。当合约将以太币发送至未知地址的时候,可能会发生此攻击。攻击者可以在外部地址小心地构建合约,该地址包含fallback函数中的恶意代码。因此,当合约将以太币发送至此地址时,将激活恶意代码。并且,可以重复地进行取款操作直到合约中的gas值为零为止。(2)整数溢出漏洞:在区块链的编程语言 solidity中,变量支持的整数类型步长以8递增,支持从uint8到unit256。一个unit8类型,表示储存范围为:0-(28-1)),也就是[0,256] 之间,而unit256类型表示数字的范围为:0-(2256-1)。
以太坊虚拟机中一个整型变量只能是一定范围内的数字,当超出这一范围的时候就会出现整数溢出的现象。攻击者就是利用这一原理,将合约amount值(转账总金额)溢出。从而达到在不改变转账人的余额条件下,获取大量的以太币。(3)逻辑错误漏洞:这是一系列逻辑有问题的漏洞的合称,此类漏洞出现的原因基本上都是由于合约编写人员以及审查人员的疏忽,导致合约代码出现严重的逻辑问题。
发明内容
根据上述的技术背景可知,目前对于智能合约安全漏洞的自动检测技术尚未有较多的发展。本发明设计一种基于网络嵌入相似性的智能合约安全漏洞检测的方法。通过对于大量的智能合约源码数据的分析,得到检测合约漏洞的网络模型。实现了对于智能合约源码重入性漏洞、整数溢出漏洞以及逻辑错误等漏洞的综合检测。本发明可以以较高的效率和准确度来实现大批量的智能合约源码漏洞检测。
本发明提供基于网络嵌入相似性的区块链智能合约安全漏洞检测方法,包括以下步骤:
S1.1.基于区块链智能合约的智能合约源码,进行信息提取,获得初始数据集;
S1.2.基于所述初始数据集的段落结构,构建子网络模型,通过所述子网络模型,构建代码网络模型,其中,所述代码网络模型,包括网络节点数据集和网络边数据集;
S1.3.基于网络嵌入相似性特征,对所述代码网络模型进行若干次迭代,获得初始区块链智能合约安全漏洞检测模型;
S1.4.基于所述初始区块链智能合约安全漏洞检测模型和初始数据集,通过逻辑回归模型、随机森林模型以及线性支持向量机模型进行训练,得到目标区块链智能合约安全漏洞检测模型,通过所述目标区块链智能合约安全漏洞检测模型,对所述区块链智能合约的安全漏洞进行检测。
优选地,所述信息提取的具体方法为:
S1.1.1.对所述智能合约源码进行预处理,清除所述智能合约源码的注释信息,获得初始智能合约源码,展开所述初始智能合约源码的内部调用函数,生成段落顺序文本数据集;
S1.1.2.对所述段落顺序文本数据集进行筛选,利用正则化表达,去除所述段落顺序文本数据集的函数关键词和标点符号,获得代码语料数据集;
S1.1.3.将所述代码语料数据集,按照8:2的比例分成代码语料训练集和代码语料测试集;
S1.1.4.基于所述代码语料训练集和代码语料测试集,获取所述代码语料数据集的词频与逆向文件频率,构建所述初始数据集。
优选地,所述代码语料数据集包括若干文档,其中,每个文档包括若干类词条,通过某类词条的出现次数和所述某类词条的个数确定所述词频;通过所述若干文档的文档数目,以及,包含所述某类词条的文档数目加一,获得所述逆向文件频率。
优选地,所述S1.2包括以下步骤:
S1.2.1.对所述初始数据集进行分段处理,获得初始分段数据集,所述初始分段数据集包括若干行分段数据集,其中,基于所述初始分段数据集的每五行分段数据集,构建全连子网络;
S1.2.2.基于所述全连子网络,通过所述分段数据集的价值词汇,构建所述网络节点数据集,基于所述网络节点数据集,构建所述网络边数据集;
S1.2.3.基于所述全连子网络,通过所述网络节点数据集和网络边数据集,构建代码网络模型,其中,所述代码网络包括若干全连子网络,基于所述智能合约源码的代码顺序,将每个全连子网络串联在一起,构建所述代码网络模型。
优选地,所述S1.3包括以下步骤:
S1.3.1.初始化所述代码网络模型,基于所述网络节点数据集和网络边数据集,构建代码网络描述数据模型;
S1.3.2.基于所述网络节点数据集,通过所述网络边数据集,计算所述网络节点数据集的加权度中心性,对所述加权度中心性进行归一化处理,得到加权度中心值,基于所述加权度中心值,获得度标签,基于所述加权度中心值,对所述网络节点数据集,打上所述度标签,获得度标签代码网络描述数据模型;
S1.3.3.基于所述度标签代码网络描述数据模型,对所述代码网络模型进行若干次迭代训练,获得代码网络向量;
S1.3.4.基于所述度标签代码网络描述数据模型,通过所述代码网络模型,获得所述初始区块链智能合约安全漏洞检测模型。
优选地,所述加权度中心值在[0-1]之间,所述度标签包括一类标签,二类标签,三类标签;
所述一类标签的取值范围为[0-0.33];
所述二类标签的取值范围为[0.33-0.67];
所述三类标签的取值范围为[0.67-1]。
优选地,所述度标签代码网络描述数据模型,包括第一度标签代码网络模型和第二度标签代码网络模型,
对所述第一度标签代码网络模型进行一次迭代,得到,第一度标签升序排列模型和第一度标签类型次数模型;
基于所述第一度标签升序排列模型和第一度标签类型次数模型,构建第一迭代模型;
对所述第一迭代模型,进行N次迭代,获得第N度标签升序排列模型和第N度标签类型次数模型;
对所述第二度标签代码网络模型进行一次迭代,得到,第二度标签升序排列模型和第二度标签类型次数模型;
基于所述第二度标签升序排列模型和第二度标签类型次数模型,构建第二迭代模型;
对所述第二迭代训练模型,进行M次迭代,获得第M度标签升序排列模型和第M度标签类型次数模型,M=N;
基于所述第一度标签类型次数模型和所述第N标签类型次数模型,构建第一迭代向量模型;
基于所述第二度标签类型次数模型和所述第M标签类型次数模型,构建第二迭代向量模型;
通过所述第一迭代向量模型和第二迭代向量模型,构建NES指标模型;
基于所述NES指标模型,构建所述初始区块链智能合约安全漏洞检测模型。
优选地,所述NES指标模型,用于评价所述第一度标签代码网络模型和第二度标签代码网络模型的模型相似度。
优选地,所述NES指标模型,还包括NES指标阈值;
所述NES指标阈值为0.5;
通过所述NES指标模型与所述NES指标阈值进行比较,确定所述模型相似度。
本发明的积极进步效果在于:
(1)本发明提出了基于网络嵌入相似度的智能合约安全漏洞检测技术。可以实现对于重入性漏洞、整数溢出漏洞以及逻辑错误的多漏洞综合检测。从而提高了智能合约代码安全漏洞的检测效率。
(2)本发明对于智能合约代码实行的代码网络构建方法优于现有的网络构建方式。所得到的代码网络,其要与现有技术中的所构建的callgraph函数调用网络大有不同。规模上,本发明中的代码网络节点数目明显多于callgraph函数调用网络。所以,本发明中的代码网络可以包含更多的信息。也可以使用于其他的智能合约代码分析技术中,提高了智能合约代码分析的适用性。
(3)本发明首次提出基于网络嵌入相似性指标作为特征来训练网络模型实现对于智能合约代码的漏洞检测。并且使用了三种机器学习模型分别实现对于智能合约代码漏洞的识别。三种机器学习模型的识别准确度分别为:逻辑回归:75.4%,随机森林:80.7%以及线性支持向量机:82.0%。各类机器学习模型的识别准确度普遍较高,继而充分证明,本发明所提出的代码网络构建方式能够充分的描述出智能合约代码的信息,并且网络嵌入相似性(NES)可以有效地作为识别智能合约代码漏洞的特征。
附图说明
图1为本发明所述的流程图;
图2为本发明所述的初始化网络图;
图3(a)为本发明所述的迭代一次网络示意图;
图3(b)为本发明所述的迭代一次节点示意图;
图4为本发明所述的网络嵌入相似性的计算示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
本发明中构建全连子网络,按照智能合约代码顺序连接而成的大型代码网络。子网络使用的是类似于自然语言的处理方式,分段落进行全连子网络的构建。全连子网络中的各个节点是代码中的有价值的词汇,节点数量明显要多于其他结构的网络。使得子网络中含有更加完备的信息。这种由全连子网络,按照智能合约代码顺序的方式连接而成的代码网络,网络结构更加细致明确,网络规模更大,信息在网络中传递更加的顺畅,无需考虑函数之间的调用关系。
本发明拟设计一种基于网络嵌入相似性的智能合约安全漏洞检测的方法。通过对于大量的智能合约源码数据的分析,得到检测合约漏洞的网络模型。实现了对于智能合约源码重入性漏洞、整数溢出漏洞以及逻辑错误等漏洞的综合检测。本发明可以以较高的效率和准确度来实现大批量的智能合约源码漏洞检测。
如图1-4所示,本发明提供基于网络嵌入相似性的区块链智能合约安全漏洞检测方法,包括以下步骤:
S1.1.基于区块链智能合约的智能合约源码,进行信息提取,获得初始数据集;
S1.2.基于所述初始数据集的段落结构,构建子网络模型,通过所述子网络模型,构建代码网络模型,其中,所述代码网络模型,包括网络节点数据集和网络边数据集;
S1.3.基于网络嵌入相似性特征,对所述代码网络模型进行若干次迭代,获得初始区块链智能合约安全漏洞检测模型;
S1.4.基于所述初始区块链智能合约安全漏洞检测模型和初始数据集,通过逻辑回归模型、随机森林模型以及线性支持向量机模型进行训练,得到目标区块链智能合约安全漏洞检测模型,通过所述目标区块链智能合约安全漏洞检测模型,对所述区块链智能合约的安全漏洞进行检测。
所述信息提取的具体方法为:
S1.1.1.对所述智能合约源码进行预处理,清除所述智能合约源码的注释信息,获得初始智能合约源码,展开所述初始智能合约源码的内部调用函数,生成段落顺序文本数据集;
S1.1.2.对所述段落顺序文本数据集进行筛选,利用正则化表达,去除所述段落顺序文本数据集的函数关键词和标点符号,获得代码语料数据集;
S1.1.3.将所述代码语料数据集,按照8:2的比例分成代码语料训练集和代码语料测试集;
S1.1.4.基于所述代码语料训练集和代码语料测试集,获取所述代码语料数据集的词频与逆向文件频率,构建所述初始数据集。
所述代码语料数据集包括若干文档,其中,每个文档包括若干类词条,通过某类词条的出现次数和所述某类词条的个数确定所述词频;通过所述若干文档的文档数目,以及,包含所述某类词条的文档数目加一,获得所述逆向文件频率。
所述S1.2包括以下步骤:
S1.2.1.对所述初始数据集进行分段处理,获得初始分段数据集,所述初始分段数据集包括若干行分段数据集,其中,基于所述初始分段数据集的每五行分段数据集,构建全连子网络;
S1.2.2.基于所述全连子网络,通过所述分段数据集的价值词汇,构建所述网络节点数据集,基于所述网络节点数据集,构建所述网络边数据集;
S1.2.3.基于所述全连子网络,通过所述网络节点数据集和网络边数据集,构建代码网络模型,其中,所述代码网络包括若干全连子网络,基于所述智能合约源码的代码顺序,将每个全连子网络串联在一起,构建所述代码网络模型。
所述S1.3包括以下步骤:
S1.3.1.初始化所述代码网络模型,基于所述网络节点数据集和网络边数据集,构建代码网络描述数据模型;
S1.3.2.基于所述网络节点数据集,通过所述网络边数据集,计算所述网络节点数据集的加权度中心性,对所述加权度中心性进行归一化处理,得到加权度中心值,基于所述加权度中心值,获得度标签,基于所述加权度中心值,对所述网络节点数据集,打上所述度标签,获得度标签代码网络描述数据模型;
S1.3.3.基于所述度标签代码网络描述数据模型,对所述代码网络模型进行若干次迭代训练,获得代码网络向量;
S1.3.4.基于所述度标签代码网络描述数据模型,通过所述代码网络模型,获得所述初始区块链智能合约安全漏洞检测模型。
所述加权度中心值在[0-1]之间,所述度标签包括一类标签,二类标签,三类标签;
所述一类标签的取值范围为[0-0.33];
所述二类标签的取值范围为[0.33-0.67];
所述三类标签的取值范围为[0.67-1]。
所述度标签代码网络描述数据模型,包括第一度标签代码网络模型和第二度标签代码网络模型,
对所述第一度标签代码网络模型进行一次迭代,得到,第一度标签升序排列模型和第一度标签类型次数模型;
基于所述第一度标签升序排列模型和第一度标签类型次数模型,构建第一迭代模型;
对所述第一迭代模型,进行N次迭代,获得第N度标签升序排列模型和第N度标签类型次数模型;
对所述第二度标签代码网络模型进行一次迭代,得到,第二度标签升序排列模型和第二度标签类型次数模型;
基于所述第二度标签升序排列模型和第二度标签类型次数模型,构建第二迭代模型;
对所述第二迭代训练模型,进行M次迭代,获得第M度标签升序排列模型和第M度标签类型次数模型,M=N;
基于所述第一度标签类型次数模型和所述第N标签类型次数模型,构建第一迭代向量模型;
基于所述第二度标签类型次数模型和所述第M标签类型次数模型,构建第二迭代向量模型;
通过所述第一迭代向量模型和第二迭代向量模型,构建NES指标模型;
基于所述NES指标模型,构建所述初始区块链智能合约安全漏洞检测模型。
所述NES指标模型,用于评价所述第一度标签代码网络模型和第二度标签代码网络模型的模型相似度。
所述NES指标模型,还包括NES指标阈值;
所述NES指标阈值为0.5;
通过所述NES指标模型与所述NES指标阈值进行比较,确定所述模型相似度。
NES指标模型即Network Embedding Similarity指标模型;
以下通过具体实施步骤,说明本发明的技术原理。
为了实现上述的各类发明目的,本发明通过对于大量的智能合约源码(既包括无已知漏洞的也包括有漏洞的)进行信息的抽取、代码网络构建以及网络嵌入相似性的比较和分析之后,再运用到机器学习的模型上完成对于智能合约代码漏洞的自动检测。上述的基于网络嵌入相似性的区块链智能合约安全漏洞自动检测方法具体包括以下四个步骤:(1)对于智能合约源码的信息提取。(2)根据段落结构进行子网络构建,对于子网络进行代码网络构建。可以获得规模更大的代码网络(3)对于所构建的代码网络使用网络嵌入相似性作为特征多次迭代训练模型。(4)使用逻辑回归、随机森林以及线性支持向量机(SVM)等机器学习模型实现对于智能合约安全漏洞自动检测。
所述步骤(1)对于智能合约漏洞源码的信息提取的具体步骤包括:(1a)智能合约源码的预处理。首先要清除源码当中的注释信息,然后将所有的内部调用的函数全部展开生成段落顺序文本数据。同时在顺序文本的最后使用自动标注BRAT将源码的漏洞标签添加上。标签包括是否含有安全漏洞以及安全漏洞的类型。因为本发明涉及到的智能合约安全漏洞有三类,即重入性漏洞、整数溢出漏洞以及逻辑错误漏洞,所以本发明中代码标签使用四类标签,即:(1*)有重入性漏洞、(2*)有整数溢出漏洞、(3*)有逻辑错误漏洞以及(4*)没有检测到漏洞。其中四类漏洞的标签在训练的时候,使用python keras库中的to_categorical()函数实现对应标签的编码。编码形式为: (1,0,0),(0,1,0),(0,0,1),(0,0,0)。分别对应上诉所提到的四类标签。(1b)对于顺序文本进行筛选:利用正则化表达,将文本中的各类函数关键词以及标点符号去除。只留下具有信息价值的词汇。(1c) 对于上述步骤所生成的代码语料数据,按照8:2的比例分割成训练集和测试集。其中训练集中的代码语料数据为8230条,而测试集中的代码语料数据为2185条。并且尽可能使训练集和测试集中各类标签的语料数量保持均衡。(1d)对所有有信息价值的词汇使用TF-IDF 的方法来统计词频与逆向文件数。并使用词频和逆向文件数作为一项特征在步骤(4)中训练模型。
进一步的,在所述的步骤(1d)中:TF为词频,表示词条在文本中出现的频率,即:
Figure BDA0002870368060000151
进一步的,在所述的步骤(1d)中:IDF为逆向文件频率,即:
Figure BDA0002870368060000152
注:idf公式分母中加一是为了避免出现分母为零的情况。
对于步骤(2)构建代码网络具体包含以下几个步骤:(2a)对于每个筛选过后的源码文本进行分段处理,我们约定,按照源代码的格式每五行代码(除去空行)为一个全连子网络。(2b)节点的构造:将上述步骤(2a)中的每个子网络内的所有有价值的词汇都当做一个节点。虽然这些节点之间可能会出现重叠(相同词汇),但是并不影响本实验。(2c)连边构造:所有子网络内的各个节点之间两两相连。构成全连网络。这样就可以得到大量的全连子网络。然后将所生成的同一个智能合约源码内的所有全连子网络串联,按照源代码的先后顺序联合在一起,构成代码网络。完成代码网络的构建之后,再执行后续的步骤实现对于网络嵌入相似性的分析。
所述步骤(3)对于所构建的各个代码网络利用网络嵌入相似性作为特征多次迭代训练模型具体可以分为以下几个步骤:(3a)首先初始化各个代码网络。使用N=[V,E]来描述智能合约源码代码网络,其中E代表这个上述步骤(2)中的各个节点,V代表上述步骤(2)中所生成的各个节点之间的连边。
(3b)对于网络中的各个节点计算其归一化加权度中心性 (Normalized WeightedDegree Centrality)。度中心性在网络中表示为节点所连的连边数量,也就是说一个节点的连边数量越多代表着这个节点在网络中的重要性越高。由于要考虑到不同网络之间的适用性,所以必须对度中心性实行归一化处理。其计算方式为:
Figure BDA0002870368060000161
其中,N是网络中的所有节点的数目,Ne(ni)是节点ni的邻集,
Figure BDA0002870368060000162
是邻接矩阵A中的元素:当节点ni和nj之间有连接的时候,
Figure BDA0002870368060000163
当节点之间无连接的时候
Figure BDA0002870368060000164
Figure BDA0002870368060000165
是节点ni和nj之间连接的权重。由此可得每个网络中的各个节点的归一化度中心性。并根据其归一化度中心性的值对各个节点打上度标签。进一步说,归一化度中心性是分布在[0-1]这个区间内的。将区间划分为:[0-0.33]、 [0.33-0.67]、[0.67-1]。将处于不同区间内的节点打上标签分别为 1类、2类和3类。
(3c)进一步的,给各个节点打上度标签之后,即可计算NES指标。具体来说,给定两个网络分别为N1和N2,根据步骤(3b)完成对于各个节点的度分类,得到各个节点的度标签。
Figure BDA0002870368060000166
表示网络N在第i次迭代中的各个节点的度标签的升序排列。
Figure BDA0002870368060000167
表示网络N在第i 次迭代中的各种的度标签出现的次数。其中i表示网络迭代次数。如图2中两个网络N1和N2,其
Figure BDA0002870368060000171
Figure BDA0002870368060000172
分别为:
Figure BDA0002870368060000173
Figure BDA0002870368060000174
Figure BDA0002870368060000175
进一步的,如图3(b)所示进行迭代1次操作之后,根据节点周围的其他节点的连接情况重新对于节点的类标签做划分。对于N1网络左上角的第一个节点来说。在进行一次迭代的过程中,根据它所连接的节点的度标签是2类。所以在迭代完成之后它的度标签就变成了: 4:{1|2},其中4代表新的第四类节点,1代表该节点的初始类型, 2代表其所连接的节点的类型。
对应图3(b)中进行一次迭代后的4号节点,以此类推,新的节点的类型为:{4,5,6,7,8,9,10,11,12,13}。
重新对迭代一次之后的各个节点做分析得出:
Figure BDA0002870368060000176
Figure BDA0002870368060000177
Figure BDA0002870368060000178
得出迭代一次后的网络如图3(a)所示。
进一步的,如图4所示:将一次迭代所得
Figure BDA0002870368060000179
Figure BDA00028703680600001710
与原始的
Figure BDA00028703680600001711
Figure BDA00028703680600001712
相结合,得出FN1和FN2向量。即:
Figure BDA00028703680600001713
Figure BDA00028703680600001714
继而可以根据NES的公式计算得出两个网络N1和N2在一次迭代之后的NES指标为:
Figure BDA0002870368060000181
以此类推,不断迭代网络至合适的迭代次数为止(在本发明中迭代的次数为2次),计算出两个网络之间的NES指标。当两个网络之间的NES指标达到所设阈值(本发明中阈值设置为0.5)的时候即可认定两个网络之间具有一定的相似性。以NES指标与步骤(1)中的TF-IDF作为特征来执行步骤(4)。
对于步骤(4)使用逻辑回归、随机森林以及线性支持向量机(SVM) 等机器学习模型实现对于智能合约安全漏洞自动检测来说,在导入大量的智能合约源码数据之后,经过前面所述的各个步骤,可以得到大量的代码网络以及各自的TF-IDF特征和NES特征。输入到各个机器学习模型当中,对于训练集的数据使用各机器学习的模型进行训练。
最终可以得出能够自动判别出智能合约代码是否含有重入性、整数溢出以及逻辑错误等安全漏洞的模型。并且在导入测试集数据后可以得分别可以得到如下的分类准确度:逻辑回归的准确度大约是 75.4%,随机森林的准确度为80.7%,其中识别效果最好的是线性支持向量机模型,其识别准确度为82.0%。至此,可以看出本发明所提出的代码网络模型以及其对应的NES特征能够有效地运用于识别智能合约代码漏洞。并且识别精度最高能够达到82.0%。
进一步的举例说明:对于智能合约安全漏洞中影响极为恶劣的重入性漏洞来说,本发明对于此类漏洞的识别过程如下:首先明确重入性漏洞的造成原因。举个较为简单的例子,攻击者利用 BankAttack(vulnerable contract)与Bank进行交互,主要攻击过程如下:攻击者首先通过BankAttack中的deposit函数发送75wei到 Bank,从而调用了Bank中的addToBalance。继而Bank中的 withdrawBalance发送75wei给BankAttack,从而触发BankAttack 中的fallback函数,最后更新userBalance变量。后续,攻击者对可以进行递归调用Bank中的withdrawBalance函数。不断地进行取款操作。明确了攻击过程之后,使用本发明中所涉及的方法对于此智能合约代码进行代码网络构建,且将其所构建的代码网络导入进我们训练好的机器学习模型之中,由于含有重入性漏洞的代码当中含有一定数目相同的关键代码,所以依照本发明的方法所构建的代码网络也具有一定程度的相似性,本发明的工作旨在寻找和挖掘出同类代码所构建的代码网络的相似性,所以模型会自动地将此代码网络于其他的代码网络不断进行递归运算,计算两者的网络嵌入相似性。继而可以完成对于此代码网络中的漏洞识别。其余漏洞的检测方式与此类漏洞基本一致。
本发明提出了一种基于网络嵌入相似度的智能合约安全漏洞自动检测技术。可以实现对于重入性漏洞、整数溢出漏洞以及逻辑错误的多漏洞综合检测。从而提高了智能合约代码安全漏洞的检测效率。
本发明对于智能合约代码实行的代码网络构建方法优于现有的网络构建方式。所得到的代码网络,其要与现有技术中的所构建的 callgraph函数调用网络大有不同。规模上,本发明中的代码网络节点数目明显多于callgraph函数调用网络。所以,本发明中的代码网络可以包含更多的信息。也可以使用于其他的智能合约代码分析技术中,提高了智能合约代码分析的适用性。
本发明首次提出基于网络嵌入相似性指标作为特征来训练网络模型实现对于智能合约代码的漏洞检测。并且使用了三种机器学习模型分别实现对于智能合约代码漏洞的识别。三种机器学习模型的识别准确度分别为:逻辑回归:75.4%,随机森林:80.7%以及线性支持向量机:82.0%。各类机器学习模型的识别准确度普遍较高,继而充分证明,本发明所提出的代码网络构建方式能够充分的描述出智能合约代码的信息,并且网络嵌入相似性(NES)可以有效地作为识别智能合约代码漏洞的特征。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (9)

1.基于网络嵌入相似性的区块链智能合约安全漏洞检测方法,其特征在于,包括以下步骤:
S1.1.基于区块链智能合约的智能合约源码,进行信息提取,获得初始数据集;
S1.2.基于所述初始数据集的段落结构,构建子网络模型,通过所述子网络模型,构建代码网络模型,其中,所述代码网络模型,包括网络节点数据集和网络边数据集;
S1.3.基于网络嵌入相似性特征,对所述代码网络模型进行若干次迭代,获得初始区块链智能合约安全漏洞检测模型;
S1.4.基于所述初始区块链智能合约安全漏洞检测模型和初始数据集,通过逻辑回归模型、随机森林模型以及线性支持向量机模型进行训练,得到目标区块链智能合约安全漏洞检测模型,通过所述目标区块链智能合约安全漏洞检测模型,对所述区块链智能合约的安全漏洞进行检测。
2.如权利要求1所述基于网络嵌入相似性的区块链智能合约安全漏洞检测方法,其特征在于,
所述信息提取的具体方法为:
S1.1.1.对所述智能合约源码进行预处理,清除所述智能合约源码的注释信息,获得初始智能合约源码,展开所述初始智能合约源码的内部调用函数,生成段落顺序文本数据集;
S1.1.2.对所述段落顺序文本数据集进行筛选,利用正则化表达,去除所述段落顺序文本数据集的函数关键词和标点符号,获得代码语料数据集;
S1.1.3.将所述代码语料数据集,按照8:2的比例分成代码语料训练集和代码语料测试集;
S1.1.4.基于所述代码语料训练集和代码语料测试集,获取所述代码语料数据集的词频与逆向文件频率,构建所述初始数据集。
3.如权利要求2所述基于网络嵌入相似性的区块链智能合约安全漏洞检测方法,其特征在于,
所述代码语料数据集包括若干文档,其中,每个文档包括若干类词条,通过某类词条的出现次数和所述某类词条的个数确定所述词频;通过所述若干文档的文档数目,以及,包含所述某类词条的文档数目加一,获得所述逆向文件频率。
4.如权利要求1所述基于网络嵌入相似性的区块链智能合约安全漏洞检测方法,其特征在于,
所述S1.2包括以下步骤:
S1.2.1.对所述初始数据集进行分段处理,获得初始分段数据集,所述初始分段数据集包括若干行分段数据集,其中,基于所述初始分段数据集的每五行分段数据集,构建全连子网络;
S1.2.2.基于所述全连子网络,通过所述分段数据集的价值词汇,构建所述网络节点数据集,基于所述网络节点数据集,构建所述网络边数据集;
S1.2.3.基于所述全连子网络,通过所述网络节点数据集和网络边数据集,构建代码网络模型,其中,所述代码网络包括若干全连子网络,基于所述智能合约源码的代码顺序,将每个全连子网络串联在一起,构建所述代码网络模型。
5.如权利要求1所述基于网络嵌入相似性的区块链智能合约安全漏洞检测方法,其特征在于,
所述S1.3包括以下步骤:
S1.3.1.初始化所述代码网络模型,基于所述网络节点数据集和网络边数据集,构建代码网络描述数据模型;
S1.3.2.基于所述网络节点数据集,通过所述网络边数据集,计算所述网络节点数据集的加权度中心性,对所述加权度中心性进行归一化处理,得到加权度中心值,基于所述加权度中心值,获得度标签,基于所述加权度中心值,对所述网络节点数据集,打上所述度标签,获得度标签代码网络描述数据模型;
S1.3.3.基于所述度标签代码网络描述数据模型,对所述代码网络模型进行若干次迭代训练,获得代码网络向量;
S1.3.4.基于所述度标签代码网络描述数据模型,通过所述代码网络模型,获得所述初始区块链智能合约安全漏洞检测模型。
6.如权利要求5所述基于网络嵌入相似性的区块链智能合约安全漏洞检测方法,其特征在于,
所述加权度中心值在[0-1]之间,所述度标签包括一类标签,二类标签,三类标签;
所述一类标签的取值范围为[0-0.33];
所述二类标签的取值范围为[0.33-0.67];
所述三类标签的取值范围为[0.67-1]。
7.如权利要求5所述基于网络嵌入相似性的区块链智能合约安全漏洞检测方法,其特征在于,
所述度标签代码网络描述数据模型,包括第一度标签代码网络模型和第二度标签代码网络模型,
对所述第一度标签代码网络模型进行一次迭代,得到,第一度标签升序排列模型和第一度标签类型次数模型;
基于所述第一度标签升序排列模型和第一度标签类型次数模型,构建第一迭代模型;
对所述第一迭代模型,进行N次迭代,获得第N度标签升序排列模型和第N度标签类型次数模型;
对所述第二度标签代码网络模型进行一次迭代,得到,第二度标签升序排列模型和第二度标签类型次数模型;
基于所述第二度标签升序排列模型和第二度标签类型次数模型,构建第二迭代模型;
对所述第二迭代训练模型,进行M次迭代,获得第M度标签升序排列模型和第M度标签类型次数模型,M=N;
基于所述第一度标签类型次数模型和所述第N标签类型次数模型,构建第一迭代向量模型;
基于所述第二度标签类型次数模型和所述第M标签类型次数模型,构建第二迭代向量模型;
通过所述第一迭代向量模型和第二迭代向量模型,构建NES指标模型;
基于所述NES指标模型,构建所述初始区块链智能合约安全漏洞检测模型。
8.如权利要求7所述基于网络嵌入相似性的区块链智能合约安全漏洞检测方法,其特征在于,
所述NES指标模型,用于评价所述第一度标签代码网络模型和第二度标签代码网络模型的模型相似度。
9.如权利要求8所述基于网络嵌入相似性的区块链智能合约安全漏洞检测方法,其特征在于,
所述NES指标模型,还包括NES指标阈值;
所述NES指标阈值为0.5;
通过所述NES指标模型与所述NES指标阈值进行比较,确定所述模型相似度。
CN202011596586.4A 2020-12-30 基于网络嵌入相似性的区块链智能合约安全漏洞检测方法 Active CN112699375B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011596586.4A CN112699375B (zh) 2020-12-30 基于网络嵌入相似性的区块链智能合约安全漏洞检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011596586.4A CN112699375B (zh) 2020-12-30 基于网络嵌入相似性的区块链智能合约安全漏洞检测方法

Publications (2)

Publication Number Publication Date
CN112699375A true CN112699375A (zh) 2021-04-23
CN112699375B CN112699375B (zh) 2024-07-02

Family

ID=

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113127933A (zh) * 2021-03-22 2021-07-16 西北大学 一种基于图匹配网络的智能合约庞氏骗局检测方法及系统
CN117034299A (zh) * 2023-10-09 2023-11-10 广东时汇信息科技有限公司 一种基于区块链的智能合约安全检测系统
CN117436091A (zh) * 2023-12-21 2024-01-23 电子科技大学(深圳)高等研究院 基于模型检测的区块链众筹合约形式化验证方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110543419A (zh) * 2019-08-28 2019-12-06 杭州趣链科技有限公司 一种基于深度学习技术的智能合约代码漏洞检测方法
CN110737899A (zh) * 2019-09-24 2020-01-31 暨南大学 一种基于机器学习的智能合约安全漏洞检测方法
CN111488582A (zh) * 2020-04-01 2020-08-04 杭州云象网络技术有限公司 一种基于图神经网络的智能合约重入性漏洞检测的方法
KR20200094618A (ko) * 2019-01-30 2020-08-07 주식회사 린아레나 스마트 컨트랙트 유사도 분석을 이용한 소스 코드 감사 방법 및 그 장치
WO2020249572A1 (en) * 2019-06-12 2020-12-17 NEC Laboratories Europe GmbH Method and contract rewriting framework system for supporting smart contracts in a blockchain network

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200094618A (ko) * 2019-01-30 2020-08-07 주식회사 린아레나 스마트 컨트랙트 유사도 분석을 이용한 소스 코드 감사 방법 및 그 장치
WO2020249572A1 (en) * 2019-06-12 2020-12-17 NEC Laboratories Europe GmbH Method and contract rewriting framework system for supporting smart contracts in a blockchain network
CN110543419A (zh) * 2019-08-28 2019-12-06 杭州趣链科技有限公司 一种基于深度学习技术的智能合约代码漏洞检测方法
CN110737899A (zh) * 2019-09-24 2020-01-31 暨南大学 一种基于机器学习的智能合约安全漏洞检测方法
CN111488582A (zh) * 2020-04-01 2020-08-04 杭州云象网络技术有限公司 一种基于图神经网络的智能合约重入性漏洞检测的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
郑忠斌;王朝栋;蔡佳浩;: "智能合约的安全研究现状与检测方法分析综述", 信息安全与通信保密, no. 07, 31 July 2020 (2020-07-31) *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113127933A (zh) * 2021-03-22 2021-07-16 西北大学 一种基于图匹配网络的智能合约庞氏骗局检测方法及系统
CN117034299A (zh) * 2023-10-09 2023-11-10 广东时汇信息科技有限公司 一种基于区块链的智能合约安全检测系统
CN117034299B (zh) * 2023-10-09 2024-01-26 广东时汇信息科技有限公司 一种基于区块链的智能合约安全检测系统
CN117436091A (zh) * 2023-12-21 2024-01-23 电子科技大学(深圳)高等研究院 基于模型检测的区块链众筹合约形式化验证方法
CN117436091B (zh) * 2023-12-21 2024-04-12 电子科技大学(深圳)高等研究院 基于模型检测的区块链众筹合约形式化验证方法

Similar Documents

Publication Publication Date Title
CN107844533A (zh) 一种智能问答系统及分析方法
CN111428504A (zh) 一种事件抽取方法和装置
Ra et al. DeepAnti-PhishNet: Applying deep neural networks for phishing email detection
CN112115326B (zh) 一种以太坊智能合约的多标签分类和漏洞检测方法
Choudhury et al. How difficult is it to develop a perfect spell-checker? A cross-linguistic analysis through complex network approach
Aralikatte et al. Fault in your stars: an analysis of android app reviews
Zhang et al. EX‐Action: Automatically Extracting Threat Actions from Cyber Threat Intelligence Report Based on Multimodal Learning
CN113591077A (zh) 一种网络攻击行为预测方法、装置、电子设备及存储介质
CN108961019A (zh) 一种用户账户的检测方法和装置
CN113783852B (zh) 一种基于神经网络的智能合约庞氏骗局检测算法
CN116432184A (zh) 基于语义分析和双向编码表征的恶意软件检测方法
Nagaraja et al. Fake news detection using machine learning methods
Zola et al. Attacking Bitcoin anonymity: generative adversarial networks for improving Bitcoin entity classification
CN112364198A (zh) 一种跨模态哈希检索方法、终端设备及存储介质
Jobse Detecting suspicious behavior in the Bitcoin network
JP2010272004A (ja) 判別装置及び判別方法、並びにコンピューター・プログラム
CN112699375A (zh) 基于网络嵌入相似性的区块链智能合约安全漏洞检测方法
CN112541357B (zh) 实体识别方法、装置及智能设备
Bugueño et al. Connecting the Dots: What Graph-Based Text Representations Work Best for Text Classification using Graph Neural Networks?
George et al. Bangla fake news detection based on multichannel combined CNN-LSTM
CN112699375B (zh) 基于网络嵌入相似性的区块链智能合约安全漏洞检测方法
CN113344581A (zh) 业务数据处理方法及装置
CN110909777A (zh) 一种多维特征图嵌入方法、装置、设备及介质
Khatun et al. An Approach to Detect Phishing Websites with Features Selection Method and Ensemble Learning
CN110610066B (zh) 仿冒应用检测方法和相关装置

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
GR01 Patent grant