CN113886832A - 智能合约漏洞检测方法、系统、计算机设备和存储介质 - Google Patents
智能合约漏洞检测方法、系统、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN113886832A CN113886832A CN202111072310.0A CN202111072310A CN113886832A CN 113886832 A CN113886832 A CN 113886832A CN 202111072310 A CN202111072310 A CN 202111072310A CN 113886832 A CN113886832 A CN 113886832A
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- operation code
- vulnerability
- code sequence
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/907—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2415—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on parametric or probabilistic models, e.g. based on likelihood ratio or false acceptance rate versus a false rejection rate
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/243—Classification techniques relating to the number of classes
- G06F18/2431—Multiple classes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/047—Probabilistic or stochastic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Molecular Biology (AREA)
- Business, Economics & Management (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Mathematical Physics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Health & Medical Sciences (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Probability & Statistics with Applications (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Library & Information Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种智能合约漏洞检测方法、系统、计算机设备和存储介质,所述方法包括:根据智能合约漏洞类型,获取智能合约数据集;将智能合约数据集中的智能合约转化为操作码序列,将操作码序列作为训练样本;利用训练样本对智能合约漏洞检测模型进行训练,得到训练好的智能合约漏洞检测模型;其中,智能合约漏洞检测模型为基于平均随机梯度下降权重长短期记忆网络的智能合约漏洞检测模型;将待检测智能合约转化为操作码序列,并输入训练好的智能合约漏洞检测模型,得到相应的检测结果。本发明构建的检测模型,可以实现对多种漏洞类型的检测;本发明公开的方法具有简单高效、扩展性高的优点。
Description
技术领域
本发明涉及智能合约漏洞检测技术领域,特别是涉及一种智能合约漏洞检测方法、系统、计算机设备和存储介质。
背景技术
区块链技术已经成为目前金融业关注度最高的技术之一,经历了以比特币应用为代表的区块链1.0时代,目前已经进入了以智能合约为标志的区块链2.0时代。智能合约适应于区块链分布式、去中心化的特点,具有独立运行、不可篡改的优良特性,可用于实现包含金融工具在内的各类分布式应用。然而,智能合约无法避免地存在安全漏洞。从2016年The DAO事件中360万以太币被盗,到2017年Parity钱包因多重签名钱包合约漏洞导致上亿美元资金被冻结,再到EOS漏洞允许恶意合约穿透虚拟机从而危害矿工节点,智能合约俨然成为区块链安全的重灾区。
目前,国内外对智能合约的漏洞检测主要依赖于传统的漏洞检测方法,如符号执行、形式化分析等。而符号执行技术执行漏洞检测的过程中需要遍历程序中所有的执行路径并判定路径条件,因此利用符号执行技术进行漏洞检测需要耗费大量时间。
发明内容
为了解决上述现有技术的不足,本发明提供了一种智能合约漏洞检测方法、系统、计算机设备和存储介质,该方法能够提高漏洞检测效率,并且实现对多种漏洞类型的检测。
本发明的第一个目的在于提供一种智能合约漏洞检测方法。
本发明的第二个目的在于提供一种智能合约漏洞检测系统。
本发明的第三个目的在于提供一种计算机设备。
本发明的第四个目的在于提供一种存储介质。
本发明的第一个目的可以通过采取如下技术方案达到:
一种智能合约漏洞检测方法,所述方法包括:
根据智能合约漏洞类型,获取智能合约数据集;
将所述智能合约数据集中的智能合约转化为操作码序列,将所述操作码序列作为训练样本;
利用所述训练样本对智能合约漏洞检测模型进行训练,得到训练好的智能合约漏洞检测模型;其中,所述智能合约漏洞检测模型为基于平均随机梯度下降权重长短期记忆网络的智能合约漏洞检测模型;
将待检测智能合约转化为操作码序列,所述操作码序列为待测操作码序列;
将所述待测操作码序列输入所述训练好的智能合约漏洞检测模型,得到相应的检测结果。
进一步的,所述将所述智能合约数据集中的智能合约转化为操作码序列,具体包括:
根据所述智能合约数据集,得到带漏洞标签的智能合约数据集;
根据所述带漏洞标签的智能合约数据集中的智能合约,得到操作码序列。
进一步的,所述根据所述智能合约数据集,得到带漏洞标签的智能合约数据集,具体包括:
对所述智能合约数据集进行清洗,得到处理后智能合约数据集;
对所述处理后智能合约数据集进行漏洞分类标记,得到带漏洞标签的智能合约数据集。
进一步的,所述根据所述带漏洞标签的智能合约数据集中的智能合约,得到操作码序列,具体包括:
根据智能合约漏洞类型,选择关键操作码;
根据所述智能合约数据集中的智能合约,得到智能合约操作码序列;
对所述智能合约操作码序列进行简化处理,得到简化处理后操作码序列;
利用所述关键操作码对所述简化处理后操作码序列进行提取,得到操作码序列。
进一步的,所述根据所述智能合约数据集中的智能合约,得到智能合约操作码序列,具体包括:
将所述智能合约数据集中智能合约的源代码,通过编译器编译得到对应的字节码;
再利用反汇编器将所述字节码转化为包含操作数的智能合约操作码序列;
所述对所述智能合约操作码序列进行简化处理,得到简化处理后操作码序列,具体包括:
根据以太坊虚拟机的操作码规则,将所述智能合约操作码序列中多个相同的操作码统一成一个操作码,同时将所述智能合约操作码序列中所有的操作数除去,得到简化处理后操作码序列;
所述利用所述关键操作码对所述简化处理后操作码序列进行提取,得到操作码序列,具体包括:
对所述简化处理后操作码序列中出现的每个关键操作码,选取该关键操作码的前后若干位操作码,从而形成关键操作码的上下文序列;
提取出所述简化处理后操作码序列中的所有关键操作码的上下文序列,并按照原来的顺序重组为操作码序列,若相邻两个关键操作码的上下文序列有重叠部分,仅保留一次。
进一步的,所述智能合约漏洞检测模型包括语言模型和漏洞分类模型,其中:
所述语言模型,用于预测操作码序列中操作码的下一个操作码;
所述语言模型包括输入层、Embedding层、多个平均随机梯度下降权重长短期记忆网络层和Softmax层;
所述漏洞分类模型,用于利用语言模型训练出来的词向量进行漏洞分类;
所述漏洞分类模型包括Embedding层、多个平均随机梯度下降权重长短期记忆网络层、全连接层和分类器层。
进一步的,所述输入层,用于接收操作码序列;
所述Embedding层,用于将所述操作码序列中的每个操作码转化为词向量,从而将所述操作码序列映射到多维空间中;
所述平均随机梯度下降权重长短期记忆网络层,用于学习所述操作码序列中词向量的上下文关系,得到操作码序列特征向量,并使用DropConnect和ASGD防止过拟合以及过滤冗余信息;
Softmax层,用于对语言模型参数进行调整,使用softmax函数进行反向传播;
所述全连接层,用于对所述操作码序列特征向量进行降维,提高所述智能合约漏洞检测模型的准确率;
所述分类器层:用于根据多个漏洞标签实现多元分类任务,使用softmax函数实现多元分类。
本发明的第二个目的可以通过采取如下技术方案达到:
一种智能合约漏洞检测系统,所述系统包括:
智能合约数据集获取模块,用于根据智能合约漏洞类型,获取智能合约数据集;
第一数据处理模块,用于将所述智能合约数据集中的智能合约转化为操作码序列,将所述操作码序列作为训练样本;
智能合约漏洞检测模型训练模块,用于利用所述训练样本对智能合约漏洞检测模型进行训练,得到训练好的智能合约漏洞检测模型;其中,所述智能合约漏洞检测模型为基于平均随机梯度下降权重长短期记忆网络的智能合约漏洞检测模型;
第二数据处理模块,用于将待检测智能合约转化为操作码序列,所述操作码序列为待测操作码序列;
智能合约漏洞检测模块,用于将所述待测操作码序列输入所述训练好的智能合约漏洞检测模型,得到相应的检测结果。
进一步的,所述第一数据处理模块包括数据预处理单元和操作码处理单元,其中:
数据预处理单元,用于对智能合约数据集进行清洗及漏洞分类标记,得到带漏洞标签的智能合约数据集;
操作码处理单元,用于将智能合约数据集中的智能合约转化为智能合约操作码序列,根据以太坊的操作码规则对智能合约操作码序列进行简化处理,再根据对应漏洞相关的关键操作码进行提取,将所有的关键操作码及其上下文整合起来得到操作码序列;
所述智能合约漏洞检测模型包括语言模型和漏洞分类模型,其中:
语言模型,用于预测操作码序列中操作码的下一个操作码;
漏洞分类模型,用于利用语言模型训练出来的词向量进行漏洞分类。
本发明的第三个目的可以通过采取如下技术方案达到:
一种计算机设备,包括处理器以及用于存储处理器可执行程序的存储器,所述处理器执行存储器存储的程序时,实现上述的智能合约漏洞检测方法。
本发明的第四个目的可以通过采取如下技术方案达到:
一种存储介质,存储有程序,所述程序被处理器执行时,实现上述的智能合约漏洞检测方法。
本发明相对于现有技术具有如下的有益效果:
1、本发明通过对操作码序列进行简化处理,减弱冗余操作码对检测结果的影响。
2、本发明根据相应漏洞类型提取出的关键操作码抽取上下文信息,因此最终整合的操作码序列更有针对性的反映漏洞信息,而且相比直接使用操作码序列,该序列长度大大减小,不仅缩短了模型训练的时间,同时解决了因序列过长导致的模型梯度消失和模型不稳定的问题。
3、本发明构建的智能合约漏洞检测模型使用平均随机梯度下降权重长短期记忆网络模型。该模型包括语言模型和漏洞分类模型,语言模型用于训练得到操作码序列的特征向量;漏洞分类模型用于对不同漏洞类型的智能合约进行分类,实现对多种漏洞类型的检测。
4、本发明相比于现有技术方法,只能对特定的一种或几种漏洞进行漏洞检测或通过多个二元分类器模型实现对多种漏洞类型的检测,本方法具有简单高效、扩展性高的优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本发明实施例1的智能合约漏洞检测方法的流程示意图。
图2为本发明实施例1的智能合约漏洞检测模型的结构示意图。
图3为本发明实施例2的智能合约漏洞检测系统的结构框图。
图4为本发明实施例3的计算机设备的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。应当理解,描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
实施例1:
如图1所示,本实施例提供了一种智能合约漏洞检测方法,检测方法分为四个阶段,即数据预处理、操作码处理、漏洞智能合约漏洞检测模型构建以及智能合约漏洞检测,其中:
数据预处理:对智能合约数据集进行漏洞分类和漏洞标签标记,其中,漏洞分类可以采用现有较为成熟的传统漏洞检测方法。
操作码处理:将智能合约转化为智能合约操作码序列(操作码序列X),根据以太坊的操作码规则对操作码序列X进行简化处理,接着针对对应漏洞相关的关键操作码进行提取,最后将所有的关键操作码及其上下文整合起来,得到第一操作码序列(即最终的操作码序列Y)。
模型训练:建立基于平均随机梯度下降权重长短期记忆网络的智能合约漏洞检测模型(即多元分类模型),利用智能合约数据集的操作码序列Y,结合数据预处理模块标记的漏洞标签,生成训练样本输入到智能合约漏洞检测模型进行模型训练,得到智能合约漏洞检测模型。
智能合约漏洞检测:将待检测智能合约处理成操作码序列Y,输入智能合约漏洞检测模型,实现对多种漏洞的检测。
基于上述四个阶段,本实施例提供的智能合约漏洞检测方法,具体包括以下步骤:
S101、根据智能合约漏洞类型,获取智能合约数据集;其中,智能合约数据集包括智能合约源代码。
本实施例选定采用智能合约漏洞检测模型实现分类的三种漏洞类型,根据三种漏洞类型,从Google Bigquery下载智能合约源代码数据,作为智能合约数据集。
S102、根据智能合约数据集,得到带漏洞标签的智能合约数据集。
进一步的,步骤S102包括:
(1)对智能合约数据集进行清洗,得到处理后智能合约数据集。
对智能合约数据集中的智能合约源代码进行有针对性的分析,对智能合约数据集进行清洗:删除智能合约数据集中存在的冗余数据、重复数据以及空缺数据等。
(2)对处理后智能合约数据集进行漏洞分类标记,得到带漏洞标签的智能合约数据集。
本步骤使用one-hot Encoding对处理后智能合约数据集中的样本(智能合约源代码)进行分类标记。具体来说是利用传统的漏洞检测工具或通过手动分析的方式,对处理后智能合约数据集中的样本进行漏洞检测分析,根据漏洞类型为每个样本进行标签标记,标签标记为智能合约的漏洞类型;漏洞类型为三种,即样本数据对应三种标签标记。
经过上述步骤(1)到步骤(2)的处理之后,最初的智能合约数据集就转化为了带漏洞标签的智能合约数据集,每个处理后智能合约数据集中的样本对应一个标签。
S103、将带漏洞标签的智能合约数据集中的智能合约转化为操作码序列,将操作码序列作为训练样本。
进一步的,步骤S103包括:
(1)根据智能合约漏洞类型,选择关键操作码。
本实施例中关键操作码是通过分析不同智能合约漏洞类型的原理后选择出与漏洞产生相关的操作码。
通过充分分析各种漏洞类型的行为模式和产生原理,针对处理异常漏洞、可重入漏洞和时间戳依赖漏洞三种漏洞类型,选取与处理异常漏洞相关的CALL、CALLCODE和DELEGATECALL,与可重入漏洞相关的DELEGATECALL、GAS、GASPRICE和GASLIMIT,与时间戳依赖漏洞相关的TIMESTAMP作为关键操作码。
(2)根据带漏洞标签的智能合约数据集中的智能合约,得到智能合约操作码序列。
将带漏洞标签的智能合约数据集中的智能合约源代码数据,通过编译器编译得到对应的字节码,再利用反汇编器,将字节码转化为包含操作数的智能合约操作码序列,记为操作码序列X,以便与优化后的操作码序列相区分。
由于不同漏洞类型的样本数相差较大,需要对智能合约操作码序列进行类不平衡处理,具体为:对操作码组合一样的不同样本进行清理,保留一份样本即可。从而得到清理后的智能合约操作码序列。
(3)对清理后的智能合约操作码序列进行简化处理,得到简化处理后操作码序列。
根据以太坊虚拟机的操作码规则对智能合约操作码序列进行简化处理,具体来说就是,将多个本质原理相同的操作码统一成一个操作码,例如PUSH1、PUSH2、PUSH3…等均可转换成PUSH;同时将所有操作数除去。
(4)利用关键操作码对简化处理后操作码序列进行提取,得到操作码序列,作为训练样本。
经过对漏洞产生原理的分析,得到对应的关键操作码,但这些关键操作码并非产生漏洞的充分条件,漏洞的产生除了与这些关键操作码相关外,还依赖于序列中的上下文环境,因此需要截取关键操作码的上下文序列并且整合为第一操作码序列。
根据上述步骤(1)所选择的关键操作码,对简化处理后操作码序列进行关键操作码提取,具体过程为:
若简化处理后操作码序列中的操作码为步骤(1)所选择的关键操作码中任一个,则选取该操作码的前后n位相关的操作码(即该关键操作码的前n位和后n位),并形成关键操作码的上下文序列,根据此流程,提取出操作码序列中的所有关键操作码的上下文序列,然后按照原来简化处理后操作码序列中的操作码的顺序重组为第一操作码序列,如果相邻两个关键操作码序列有重叠部分,仅保留一次。
对上述过程示例如下:
本实例中n取值为3,简化处理后操作码序列为“PUSH PUSH CALL PUSH PUSHSSTORE GASPRICE DUP ISZERO PUSH JUMP PUSH DUP REVERT JUMPDEST POP PUSH DUPPUSH PUSH”,如选择的关键操作码为CALL和GASPRICE,则CALL的关键操作码的上下文序列为“PUSH PUSH CALL PUSH PUSH SSTORE”,GASPRICE的关键操作码的上下文序列为“PUSHPUSH SSTORE GASPRICE DUP ISZERO PUSH”,相邻两个关键操作码序列有重叠部分,仅保留一次。因此合并后的操作码序列为“PUSH PUSH CALL PUSH PUSH SSTORE GASPRICE DUPISZERO PUSH”。
经过上述步骤(1)到步骤(4)处理后,带漏洞标签的智能合约数据集被处理成了模型所需要的标准输入。
S104、构建智能合约漏洞检测模型。
智能合约漏洞检测模型,为基于平均随机梯度下降权重长短期记忆网络的智能合约漏洞检测模型。
如图2所示,智能合约漏洞检测模型包括两个网络模型,语言模型用于预测第一操作码序列中操作码的下一个操作码,漏洞分类模型利用语言模型训练出来的词向量进行漏洞分类。语言模型包括输入层、Embedding层、三个平均随机梯度下降权重长短期记忆网络层和Softmax层;第二个网络包括Embedding层、三个平均随机梯度下降权重长短期记忆网络层、全连接层和分类器层;其中:
输入层,用于接收处理后的智能合约数据集,输入数据为第一操作码序列;
Embedding层,每个词可以被看作成一个向量,主要用于将第一操作码序列中的每个操作码转化为词向量,从而将第一操作码序列映射到多维空间中。在该层使用Embedding算法能够捕捉操作码之间的潜在关系;
平均随机梯度下降权重长短期记忆网络层,主要用于学习第一操作码序列中词向量的上下文关系,得到操作码序列的特征向量。并使用DropConnect和ASGD防止过拟合以及过滤冗余信息;
Softmax层,是分类器层,使用softmax函数进行反向传播,对语言模型的参数(即权重矩阵)进行调整;
全连接层,主要用于对学习得到的操作码序列的特征向量进行降维,提高模型的准确率;
分类器层:根据多个漏洞标签实现多元分类任务,使用softmax函数实现多元分类。
S105、利用训练样本对智能合约漏洞检测模型进行训练,得到训练好的智能合约漏洞检测模型。
进一步的,步骤S105包括:
(1)划分训练样本和测试样本。
用训练样本中的一部分数据作为训练样本,另一部分作为测试样本。
(2)利用训练样本训练智能合约漏洞检测模型,得到训练好的智能合约漏洞检测模型。
在进行漏洞分类时,采用标签X=(x1,x2,…,xN)表示N种漏洞类型;
本实施例中N为3。
将训练样本中的数据输入智能合约漏洞检测模型,对每一种检测出的漏洞类型对应一个标签;训练后的的智能合约漏洞检测模型对N种漏洞有良好的检测效果。
训练完后采用测试样本中的数据进行效果验证。
S106、将待检测智能合约转化为操作码序列;并输入训练好的智能合约漏洞检测模型,得到相应的检测结果。
按照步骤S102—S103将待检测智能合约转化为操作码序列,将得到的操作码序列输入训练好的智能合约漏洞检测模型,得到相应的检测结果,从而实现对多种漏洞的检测。
本领域技术人员可以理解,实现上述实施例的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,相应的程序可以存储于计算机可读存储介质中。
应当注意,尽管在附图中以特定顺序描述了上述实施例的方法操作,但是这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
实施例2:
如图3所示,本实施例提供了一个智能合约漏洞检测系统,为了方便使用实施例1的方法进行自定义智能合约漏洞检测,该系统包括智能合约数据集获取模块301、第一数据处理模块302、智能合约漏洞检测模型训练模块303、第二数据处理模块304和智能合约漏洞检测模块305,其中:
智能合约数据集获取模块301,用于根据智能合约漏洞类型,获取智能合约数据集;
第一数据处理模块302,用于将所述智能合约数据集中的智能合约转化为操作码序列,将所述操作码序列作为训练样本;
智能合约漏洞检测模型训练模块303,用于利用所述训练样本对智能合约漏洞检测模型进行训练,得到训练好的智能合约漏洞检测模型;其中,所述智能合约漏洞检测模型为基于平均随机梯度下降权重长短期记忆网络的智能合约漏洞检测模型;
第二数据处理模块304,用于将待检测智能合约转化为操作码序列,所述操作码序列为待测操作码序列;
智能合约漏洞检测模块305,用于将所述待测操作码序列输入所述训练好的智能合约漏洞检测模型,得到相应的检测结果。
进一步的,第一数据处理模块包括数据预处理单元和操作码处理单元,其中:
数据预处理单元,用于对智能合约数据集进行清洗及漏洞分类标记,得到带漏洞标签的智能合约数据集。使用one-hot Encoding进行漏洞分类标签标记,即采用标签X=(x1,x2,…,xN),其中,xN=0表示该智能合约不属于第N种漏洞,xN=1表示该智能合约属于第N种漏洞;
操作码处理单元,用于将带漏洞标签的智能合约数据集中的智能合约转化为智能合约操作码序列(操作码序列X),根据以太坊的操作码规则对智能合约操作码序列进行简化处理,接着对简化处理后的智能合约操作码序列根据对应漏洞相关的关键操作码进行提取,最后将所有的关键操作码及其上下文整合起来得到操作码序列;
进一步的,智能合约漏洞检测模型包括两个网络模型,分别为语言模型和漏洞分类模型;其中:
语言模型,用于预测句子的下一个词。包括输入层、Embedding层、多个平均随机梯度下降权重长短期记忆网络层和Softmax层;
漏洞分类模型,用于利用语言模型训练出来的词向量进行漏洞分类。包括Embedding层、多个平均随机梯度下降权重长短期记忆网络层、全连接层和分类器层。
进一步的,智能合约漏洞检测系统还可以包括文件上传模块;文件上传模块,用于上传智能合约数据集中的智能合约及待检测智能合约。用户可以上传自定义的智能合约数据集中的智能合约及需待检测的智能合约,以供后续的模型训练和漏洞检测使用。
本实施例中各个模块的具体实现可以参见上述实施例1,在此不再一一赘述;需要说明的是,本实施例提供的系统仅以上述各功能模块的划分进行举例说明,在实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
实施例3:
本实施例提供了一种计算机设备,该计算机设备可以为计算机,如图4所示,其通过系统总线401连接的处理器402、存储器、输入装置403、显示器404和网络接口405,该处理器用于提供计算和控制能力,该存储器包括非易失性存储介质406和内存储器407,该非易失性存储介质406存储有操作系统、计算机程序和数据库,该内存储器407为非易失性存储介质中的操作系统和计算机程序的运行提供环境,处理器402执行存储器存储的计算机程序时,实现上述实施例1的智能合约漏洞检测方法,如下:
根据智能合约漏洞类型,获取智能合约数据集;
将所述智能合约数据集中的智能合约转化为操作码序列,将所述操作码序列作为训练样本;
利用所述训练样本对智能合约漏洞检测模型进行训练,得到训练好的智能合约漏洞检测模型;其中,所述智能合约漏洞检测模型为基于平均随机梯度下降权重长短期记忆网络的智能合约漏洞检测模型;
将待检测智能合约转化为操作码序列,所述操作码序列为待测操作码序列;
将所述待测操作码序列输入所述训练好的智能合约漏洞检测模型,得到相应的检测结果。
实施例4:
本实施例提供了一种存储介质,该存储介质为计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时,实现上述实施例1的智能合约漏洞检测方法,如下:
根据智能合约漏洞类型,获取智能合约数据集;
将所述智能合约数据集中的智能合约转化为操作码序列,将所述操作码序列作为训练样本;
利用所述训练样本对智能合约漏洞检测模型进行训练,得到训练好的智能合约漏洞检测模型;其中,所述智能合约漏洞检测模型为基于平均随机梯度下降权重长短期记忆网络的智能合约漏洞检测模型;
将待检测智能合约转化为操作码序列,所述操作码序列为待测操作码序列;
将所述待测操作码序列输入所述训练好的智能合约漏洞检测模型,得到相应的检测结果。
需要说明的是,本实施例的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
综上所述,本发明通过对智能合约数据集中的智能合约进行清洗,并进行漏洞分类,得到带漏洞标签的智能合约数据集;将带漏洞标签的智能合约数据集中的智能合约转化为操作码序列X,根据以太坊虚拟机的操作码规则对操作码序列X进行简化处理,并根据不同漏洞类型将与其相关的操作码提取出来作为关键操作序列,得到操作码序列Y,作为训练样本;建立基于平均随机梯度下降权重长短期记忆网络的智能合约漏洞检测模型,利用训练样本训练智能合约漏洞检测模型;将待检测的智能合约转换为操作码序列Y,然后输入到训练好的智能合约漏洞检测模型,实现对多种漏洞的检测。
以上所述,仅为本发明专利较佳的实施例,但本发明专利的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明专利所公开的范围内,根据本发明专利的技术方案及其发明构思加以等同替换或改变,都属于本发明专利的保护范围。
Claims (10)
1.一种智能合约漏洞检测方法,其特征在于,所述方法包括:
根据智能合约漏洞类型,获取智能合约数据集;
将所述智能合约数据集中的智能合约转化为操作码序列,将所述操作码序列作为训练样本;
利用所述训练样本对智能合约漏洞检测模型进行训练,得到训练好的智能合约漏洞检测模型;其中,所述智能合约漏洞检测模型为基于平均随机梯度下降权重长短期记忆网络的智能合约漏洞检测模型;
将待检测智能合约转化为操作码序列,所述操作码序列为待测操作码序列;
将所述待测操作码序列输入所述训练好的智能合约漏洞检测模型,得到相应的检测结果。
2.根据权利要求1所述的智能合约漏洞检测方法,其特征在于,所述将所述智能合约数据集中的智能合约转化为操作码序列,具体包括:
根据所述智能合约数据集,得到带漏洞标签的智能合约数据集;
根据所述带漏洞标签的智能合约数据集中的智能合约,得到操作码序列。
3.根据权利要求2所述的智能合约漏洞检测方法,其特征在于,所述根据所述智能合约数据集,得到带漏洞标签的智能合约数据集,具体包括:
对所述智能合约数据集进行清洗,得到处理后智能合约数据集;
对所述处理后智能合约数据集进行漏洞分类标记,得到带漏洞标签的智能合约数据集。
4.根据权利要求2所述的智能合约漏洞检测方法,其特征在于,所述根据所述带漏洞标签的智能合约数据集中的智能合约,得到操作码序列,具体包括:
根据智能合约漏洞类型,选择关键操作码;
根据所述智能合约数据集中的智能合约,得到智能合约操作码序列;
对所述智能合约操作码序列进行简化处理,得到简化处理后操作码序列;
利用所述关键操作码对所述简化处理后操作码序列进行提取,得到操作码序列。
5.根据权利要求4所述的智能合约漏洞检测方法,其特征在于,所述根据所述智能合约数据集中的智能合约,得到智能合约操作码序列,具体包括:
将所述智能合约数据集中智能合约的源代码,通过编译器编译得到对应的字节码;
再利用反汇编器将所述字节码转化为包含操作数的智能合约操作码序列;
所述对所述智能合约操作码序列进行简化处理,得到简化处理后操作码序列,具体包括:
根据以太坊虚拟机的操作码规则,将所述智能合约操作码序列中多个相同的操作码统一成一个操作码,同时将所述智能合约操作码序列中所有的操作数除去,得到简化处理后操作码序列;
所述利用所述关键操作码对所述简化处理后操作码序列进行提取,得到操作码序列,具体包括:
对所述简化处理后操作码序列中出现的每个关键操作码,选取该关键操作码的前后若干位操作码,从而形成关键操作码的上下文序列;
提取出所述简化处理后操作码序列中的所有关键操作码的上下文序列,并按照原来的顺序重组为操作码序列,若相邻两个关键操作码的上下文序列有重叠部分,仅保留一次。
6.根据权利要求1所述的智能合约漏洞检测方法,其特征在于,所述智能合约漏洞检测模型包括语言模型和漏洞分类模型,其中:
所述语言模型,用于预测操作码序列中操作码的下一个操作码;
所述语言模型包括输入层、Embedding层、多个平均随机梯度下降权重长短期记忆网络层和Softmax层;
所述漏洞分类模型,用于利用语言模型训练出来的词向量进行漏洞分类;
所述漏洞分类模型包括Embedding层、多个平均随机梯度下降权重长短期记忆网络层、全连接层和分类器层。
7.根据权利要求6所述的智能合约漏洞检测方法,其特征在于,所述输入层,用于接收操作码序列;
所述Embedding层,用于将所述操作码序列中的每个操作码转化为词向量,从而将所述操作码序列映射到多维空间中;
所述平均随机梯度下降权重长短期记忆网络层,用于学习所述操作码序列中词向量的上下文关系,得到操作码序列特征向量,并使用DropConnect和ASGD防止过拟合以及过滤冗余信息;
所述Softmax层,用于对语言模型参数进行调整,使用softmax函数进行反向传播;
所述全连接层,用于对所述操作码序列特征向量进行降维,提高所述智能合约漏洞检测模型的准确率;
所述分类器层:用于根据多个漏洞标签实现多元分类任务,使用softmax函数实现多元分类。
8.一种智能合约漏洞检测系统,其特征在于,所述系统包括:
智能合约数据集获取模块,用于根据智能合约漏洞类型,获取智能合约数据集;
第一数据处理模块,用于将所述智能合约数据集中的智能合约转化为操作码序列,将所述操作码序列作为训练样本;
智能合约漏洞检测模型训练模块,用于利用所述训练样本对智能合约漏洞检测模型进行训练,得到训练好的智能合约漏洞检测模型;其中,所述智能合约漏洞检测模型为基于平均随机梯度下降权重长短期记忆网络的智能合约漏洞检测模型;
第二数据处理模块,用于将待检测智能合约转化为操作码序列,所述操作码序列为待测操作码序列;
智能合约漏洞检测模块,用于将所述待测操作码序列输入所述训练好的智能合约漏洞检测模型,得到相应的检测结果。
9.根据权利要求8所述的智能合约漏洞检测系统,其特征在于,所述第一数据处理模块包括数据预处理单元和操作码处理单元,其中:
数据预处理单元,用于对智能合约数据集进行清洗及漏洞分类标记,得到带漏洞标签的智能合约数据集;
操作码处理单元,用于将智能合约数据集中的智能合约转化为智能合约操作码序列,根据以太坊的操作码规则对智能合约操作码序列进行简化处理,再根据对应漏洞相关的关键操作码进行提取,将所有的关键操作码及其上下文整合起来得到操作码序列;
所述智能合约漏洞检测模型包括语言模型和漏洞分类模型,其中:
语言模型,用于预测操作码序列中操作码的下一个操作码;
漏洞分类模型,用于利用语言模型训练出来的词向量进行漏洞分类。
10.一种存储介质,存储有程序,其特征在于,所述程序被处理器执行时,实现权利要求1-7任一项所述的智能合约漏洞检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111072310.0A CN113886832A (zh) | 2021-09-14 | 2021-09-14 | 智能合约漏洞检测方法、系统、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111072310.0A CN113886832A (zh) | 2021-09-14 | 2021-09-14 | 智能合约漏洞检测方法、系统、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113886832A true CN113886832A (zh) | 2022-01-04 |
Family
ID=79009359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111072310.0A Pending CN113886832A (zh) | 2021-09-14 | 2021-09-14 | 智能合约漏洞检测方法、系统、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113886832A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174129A (zh) * | 2022-02-22 | 2022-10-11 | 中国工商银行股份有限公司 | 异常节点检测方法、装置、计算机设备和存储介质 |
CN116578988A (zh) * | 2023-05-23 | 2023-08-11 | 海南大学 | 一种智能合约的漏洞检测方法和装置、存储介质 |
-
2021
- 2021-09-14 CN CN202111072310.0A patent/CN113886832A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174129A (zh) * | 2022-02-22 | 2022-10-11 | 中国工商银行股份有限公司 | 异常节点检测方法、装置、计算机设备和存储介质 |
CN116578988A (zh) * | 2023-05-23 | 2023-08-11 | 海南大学 | 一种智能合约的漏洞检测方法和装置、存储介质 |
CN116578988B (zh) * | 2023-05-23 | 2024-01-23 | 海南大学 | 一种智能合约的漏洞检测方法和装置、存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110737899B (zh) | 一种基于机器学习的智能合约安全漏洞检测方法 | |
US7854002B2 (en) | Pattern matching for spyware detection | |
Yu et al. | Deescvhunter: A deep learning-based framework for smart contract vulnerability detection | |
CN111460472B (zh) | 一种基于深度学习图网络的加密算法识别方法 | |
Jeon et al. | Hybrid malware detection based on bi-lstm and spp-net for smart iot | |
CN112307473A (zh) | 一种基于Bi-LSTM网络和注意力机制的恶意JavaScript代码检测模型 | |
CN113886832A (zh) | 智能合约漏洞检测方法、系统、计算机设备和存储介质 | |
CN112632535B (zh) | 攻击检测方法、装置、电子设备及存储介质 | |
CN113297580B (zh) | 基于代码语义分析的电力信息系统安全防护方法及装置 | |
CN104715190B (zh) | 一种基于深度学习的程序执行路径的监控方法及系统 | |
Zeng et al. | EtherGIS: a vulnerability detection framework for ethereum smart contracts based on graph learning features | |
CN114036531A (zh) | 一种基于多尺度代码度量的软件安全漏洞检测方法 | |
CN112685738A (zh) | 一种基于多级投票机制的恶意混淆脚本静态检测方法 | |
CN113722719A (zh) | 针对安全拦截大数据分析的信息生成方法及人工智能系统 | |
CN116340952A (zh) | 一种基于操作码程序依赖图的智能合约漏洞检测方法 | |
CN115658080A (zh) | 一种软件开源代码成分的识别方法及系统 | |
CN108875375A (zh) | 一种面向安卓系统隐私泄漏检测的动态特性信息提取方法 | |
CN113904844B (zh) | 基于跨模态教师-学生网络的智能合约漏洞检测方法 | |
CN112817877B (zh) | 异常脚本检测方法、装置、计算机设备和存储介质 | |
KR102192196B1 (ko) | Ai 기반 머신러닝 교차 검증 기법을 활용한 악성코드 탐지 장치 및 방법 | |
CN116702157A (zh) | 一种基于神经网络的智能合约漏洞检测方法 | |
Zhang et al. | SVScanner: Detecting smart contract vulnerabilities via deep semantic extraction | |
CN116361806A (zh) | 基于多示例和注意力机制的智能合约分析方法及装置 | |
CN109002716A (zh) | 一种移动应用的恶意代码入侵检测与防范方法 | |
Chauhan et al. | Vulnerability Detection in Source Code using Deep Representation Learning |
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 |