CN114218580A - 一种基于多任务学习的智能合约漏洞检测方法 - Google Patents

一种基于多任务学习的智能合约漏洞检测方法 Download PDF

Info

Publication number
CN114218580A
CN114218580A CN202111482288.7A CN202111482288A CN114218580A CN 114218580 A CN114218580 A CN 114218580A CN 202111482288 A CN202111482288 A CN 202111482288A CN 114218580 A CN114218580 A CN 114218580A
Authority
CN
China
Prior art keywords
intelligent contract
vulnerability
model
layer
contract
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
CN202111482288.7A
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.)
Beijing University of Technology
Original Assignee
Beijing University of Technology
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 Beijing University of Technology filed Critical Beijing University of Technology
Priority to CN202111482288.7A priority Critical patent/CN114218580A/zh
Publication of CN114218580A publication Critical patent/CN114218580A/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
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2415Classification 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
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • 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
    • G06N3/045Combinations of networks
    • 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
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Virology (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种基于多任务学习的智能合约漏洞检测方法,利用基于硬参数共享的多任务学习框架实现智能合约漏洞检测技术。首先在数据准备阶段,对智能合约数据集进行清洗,并通过现有检测工具进行漏洞分类及标签标记;在数据预处理阶段,将智能合约样本源码编译形成字节码,然后对字节码进行清洗处理,然后反编译转化成操作码序列,形成模型的输入;接着在模型构建阶段,构建基于多任务学习的智能合约检测模型;最后在训练阶段,按照数据预处理阶段得到的操作码序列输入到模型中进行训练,实现对漏洞的判断及检测。该模型在智能合约的数据集上展现了较好的识别功能,检测时间较短且恒定,而且由于多任务学习的特性,该模型具有较好的泛化能力。

Description

一种基于多任务学习的智能合约漏洞检测方法
技术领域
本发明属于区块链智能合约安全技术领域,具体涉及一种针对智能合约的基于多任务学习(MTL,Multi-Task Learning)的漏洞检测方法。
背景技术
区块链技术,是一种按照时间顺序将数据区块以顺序相连的方式组合形成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分部署账本。从宏观角度上说,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
智能合约是执行合约条款的计算机交易协议,其本质上是一段可以执行的代码,当用户访问到该地址上时,智能合约将会自动运行。随着技术的不断发展,智能合约被广泛运用到各种领域,特别是金融和保险领域。尽管智能合约的快速发展带来了种种好处,但它的安全问题也令众多研究人员倍加关注。自2016年起,每年因智能合约漏洞而导致的安全事件层出不穷,造成了严重的资产经济损失。因此,如何有效快速的检测智能合约漏洞成为学术界研究的重点问题。目前国内对智能合约的漏洞检测主要依赖于符号执行、形式化验证、模糊测试及其他技术等。但这些方法都各有缺点,如基于符号分析的漏洞检测技术速度较慢,耗费时间长;基于形式化方法的漏洞检测方法准确率高,但花费成本高,且局限于已知漏洞,对未知漏洞的形式无法分析或检测;基于模糊测试的漏洞检测技术则受困于随机测试的生成策略,智能合约的全局状态以及调用序列。
通过机器学习实现的漏洞检测方法检测效率高、可扩展性强,检测时间短等特点而逐渐受到国内外学者的关注。然而,现有的机器学习方法都存在如泛化性能弱,需要源代码等特点,限制了其适用性。此外,在漏洞类别划分上,多种方法只实现了对智能合约样本的二分类问题,即有无漏洞,而无法具体识别漏洞的类型,也无法轻易扩展到其他漏洞类型。为解决上述提及的一些缺陷,本发明提供了一种基于多任务学习的智能合约漏洞检测方法,能够利用较少的检测时间,完成漏洞二分类和多分类两个任务,提高模型的分类准确性。
发明内容
本发明利用迁移学习的一种特殊形式——多任务学习来解决模型的泛化性能。多任务学习是机器学习的一种,其目的是联合学习多个相关任务,使任务中包含的知识能够被其他任务所利用,从而提高所有任务的泛化性能。多任务学习已成功应用于机器学习,从自然语言处理、语音识别到计算机视觉等,因此本发明将其引入到智能合约漏洞检测领域中。除此之外,使用较容易获得合约操作码作为模型的输入,既能减少获取合约源码的难度,还能提高检测模型的稳定性。
为了解决上述技术问题,本发明提供一种基于多任务学习的智能合约漏洞检测方法,如图1所示,包括构建智能合约数据集、检测样本数据集确定漏洞标签、编译智能合约生成操作码序列并简化、采用过采样方法平衡并划分数据集、训练机器学习模型、使用模型进行漏洞检测等流程。
具体地,包括:
在数据准备阶段,对智能合约样本集进行漏洞标签分类以及标签标记;
在数据预处理阶段,将智能合约源码进行编译转化为合约字节码,同时删除无效字节码,然后将有效字节码进行反编译转化为操作码序列,作为模型的输入;
在模型构建阶段,构建基于硬参数共享的多任务学习框架。在框架的底部共享层,构建基于自注意力的特征网络层,提取学习操作码序列特征;并在特定任务层,针对漏洞判断任务,建立基于卷积神经网络的二分类模型;针对漏洞识别任务,建立基于卷积神经网络的多标签分类模型,作为智能合约的漏洞检测模型;
在智能合约漏洞检测阶段,按照数据预处理阶段的处理方式将待检测智能合约处理成操作码序列,然后输入到基于多任务的智能合约漏洞检测模型,实现多任务功能,包括漏洞的判断(二分类)、多种漏洞的检测(多标签分类)等。
综上如图2所示,本发明漏洞检测方法的步骤如下几个阶段:
(1)所述数据准备阶段包括:
1.1)根据所需实现检测的漏洞类型,收集并获取智能合约数据集;
1.2)对智能合约数据集进行清洗,获得有效的智能合约数据样本;
1.3)对智能合约数据样本进行分类标记:借用漏洞检测工具对智能合约样本进行漏洞检测分析,根据漏洞类型对每个智能合约进行样本标记,包含是否存在漏洞的标签,以及漏洞类型;
1.4)所述标签为X=[x1,x2,...,xn],其中,n表示需要实现检测的多种漏洞类型,xi=0表示智能合约样本不属于第i种漏洞,xi=1表示该合约样本属于第i种漏洞。(2)所述数据预处理阶段包括:
2.1)将智能合约源码编译转化为合约字节码,并进行有效处理;
2.2)将字节码反编译,获取操作码序列;
字节码是是由一系列十六进制数字组成,表示了特定的操作序列和参数。但其往往是长序列的,对其进行分析建模需要占据极大的内存空间,使得直接使用字节码作为直接输入是不切实际的。因此,需要对获取到的合约字节码进行进一步的处理,反编译生成操作码序列,以简化模型的输入,提高模型训练效率和训练效果。
(3)所述模型构造阶段包括:
3.1)构建基于硬参数共享的多任务学习框架。在框架的底部共享层,构建基于自注意力的特征网络层,提取学习操作码序列特征;并在特定任务层,针对漏洞判断任务,建立基于卷积神经网络的二分类模型;针对漏洞识别任务,建立基于卷积神经网络的多标签分类模型,作为智能合约的漏洞检测模型;所述模型总体架构如图3所示。
3.2)底部共享层设计
如图4所示,底部共享层构建基于自注意力层的特征提取网络。使用词编码(WordEmbedding)层和位置编码(Positional Embedding)层对智能合约操作码序列进行描述。词编码(Word Embedding)将输入的每个操作码转化为词向量的形式,从而将操作码序列映射到多维空间中,同时为了使本模型了解操作码序列的顺序,将位置向量添加到词编码中使得在后面的计算中,能够更好地表达词与词之间的距离,完成对输入序列的描述。位置编码的计算如公式(1)和公式(2)所示:
PE(pos,2i)=sin(pos/100002i/d) (1)
PE(pos,2i+1)=cos(pos/100002i/d) (2)
使用正弦函数的位置编码可以让模型很容易地学习关注相对位置信息,因此对于任何固定的偏移量i,PE(pos+i)都可以表示为PE(pos)的线性函数。在此公式中,pos表示词在序列中的位置,PE(pos,2i)、PE(pos,2i+1)表示pos位置对应的向量,d表示向量的维度,
Figure BDA0003395745400000051
则代表频率wk,因此,位置编码是一个包含每个频率的正弦和余弦对。Positional Embedding使用词的位置信息对序列中的每个词进行二次表示,并将词序信息和词向量结合起来形成一种新的表示输入给模型,模型就具备了学习词序信息的能力。
合约操作码序列在通过词编码和位置编码进行描写后,将输入到基于自注意力层的特征网络,进行特征学习和提取。自注意力,即Self-attention,当模型在处理输入序列的每个单词时,Self-attention将关注整个输入序列的所有单词,可以帮助模型查看输入序列中的其他位置,寻找相关的线索,来达到更好的编码效果。具体计算步骤如下:
·从每个编码器的输入向量中生成三个向量,对于每个单词,将通过词嵌入与三个权重矩阵相乘形成三个向量Q(查询向量)、K(键向量)、V(值向量)。
·通过输入序列的单词的键向量(K)与当下位置单词的查询向量(Q)点积来计算单词得分,然后将得分除以键向量的维度的平方根,以使梯度更加稳定。
·使用softmax函数对得分进行归一化处理,使得到的分数都是正值且和为1。softmax分数决定了每个单词对编码当下位置的贡献。
·将每个值向量(V)乘以softmax分数,并对加权值向量求和。
计算公式如(3)所示:
Figure BDA0003395745400000052
通过叠加多头注意力机制,完善自注意力层,同时提高了注意力层的性能,扩展了模型专注于不同位置的能力。多头自注意力层做与上述相同的自注意力计算,在“多头”注意力机制下,为每个头保持独立的向量权重矩阵,从而产生不用的向量矩阵,然后将每个头产生的矩阵进行拼接,并用一个附加的权重矩阵与其相乘,结果产生一个融合所有注意力头信息的矩阵,然后将其送到前馈神经网络(Feed-Forward Network),输出特征网络层的结果。
具体计算如公式(4)(5)(6)所示:
Figure BDA0003395745400000061
MultiHead(Q,K,V)=Concat(head1,...,headh)WO (5)
Output=LayerNorm(x+FFN(x)) (6)
3.3)顶部特定任务层设计
顶部特定任务层则是根据不同的任务构建不同的分支网络层以实现两个任务。在判断任务分支中,构建二分类卷积神经网络,该分类由卷积层(Conv层)、抛出层(Dropout)以及全连接层(FC/Dense)构成,如图5所示,该分类网络采用二元交叉熵损失,计算公式如(7)(8)所示:
Figure BDA0003395745400000062
Figure BDA0003395745400000063
在识别任务分支中,构建多分类卷积神经网络,该分类网络包括卷积层、抛出层(Dropout)以及全连接层(FC/Dense)层,如图6所示,该分类网络采用交叉熵损失,计算公式如(9)所示:
Figure BDA0003395745400000071
具体地,分类网络结构组成如下所述:
①卷积层:该层由若干卷积单元组成,每个卷积单元的参数都是通过反向传播算法最佳化得到的,主要用于提取输入的不同特征。本发明使用256个卷积单元组成卷积层。
②线性整流层:该层使用线性整流函数(ReLU)f(x)=max(0,x)作为激励函数,主要用于增强判定函数和整个神经网络的非线性特性。
③Dropout层:该层用于在模型训练每次更新参数的过程中保留一定比例的神经元的连接而断开其他的神经元连接,从而防止模型过拟合。
④FC层:即全连接层,用于给智能合约的操作码序列特征降维,从而提高模型的准确率。
在经历两层FC层后,为完成各自的特定任务,将分为两个分支,判断分支将接一层分类层,通过sigmoid函数进行分类操作直接输出结果;而识别分支将接一层FC层,继续降维,然后再接分类层,通过softmax函数执行分类操作,输出结果。
附图说明
图1为本发明方法的流程图。
图2为本发明智能合约检测方法的步骤图。
图3为本发明漏洞检测模型的结构图。
图4为基于自注意力层的特征提取神经网络。
图5为判断任务分支网络。
图6为识别任务分支网络。
具体实施方式
将结合说明附图并举实施例,对本发明进行详细描述。
为提高模型的可扩展性,本发明采用基于硬参数共享的多任务学习框架;为提高模型漏洞检测的准确率,本发明采用基于自注意力层的特征提取神经网络;为实现判断是否漏洞,建立并训练基于卷积神经网络的二分类模型;为检测多种漏洞类型,采用多标签分类思想,建立并训练基于卷积神经网络的多分类模型,从而实现对多种漏洞的类型的检测。
如图2所示的本发明漏洞检测方法的步骤图,分为几个阶段,即数据准备阶段、数据预处理阶段、模型构造阶段以及模型训练阶段。
(1)数据准备阶段
1.1)本发明从XBlock社区获取以太坊智能合约数据集,共149363件合约文件,其包含address(开源合约地址)、ContractCode(合约字节码)、timestamp(合约创建时间戳)、createValue(合约创建参数)、createBlockNumber(合约创建时区块高度)、createdTransactionHash(合约创建交易)、creationCode(合约创建字节码)、creator(合约创建者地址)、code(合约源代码)等9种合约属性。通过编写数据集清洗脚本对其进行清洗,清除掉冗余数据、重复数据、无效数据及空缺数据等,清洗后的数据集共141837条。
1.2)选定待检测的多种漏洞类型,并通过现有漏洞检测工具或手动分析对智能合约数据集进行数据标记,包括漏洞分类和标签标记,获得已标记的智能合约数据集。标记包括是否是漏洞(Flag),漏洞的具体类型(Label),以及漏洞发生的行数。
本发明使用检测工具SCStudio对所有合约源码文件进行检测并贴上标签。由于SCStudio提供的扩展程序一次只能检查一份合约,且每次检测合约时长不定,平均60秒,需要耗费大量时间。因此,重新编写程序脚本,采用批处理方法对本数据集进行检测。每个合约存有37个标签,在每种类型的漏洞中,标签是相互独立的。同时本发明规定一份合约超过200秒,默认为超时合约,进行舍去。1.3)本发明中设定需要分类的漏洞类型类别数为3类,针对每个智能合约样本构建一条标签,该标签由一个4维列构成,为[x1、x2、x3、x4],每个元素xi的取值取值均为0或1。xi=1表示智能合约存在第i种漏洞,xi=0表示智能合约不存在第i漏洞,特别地,x1表示智能合约是否存在漏洞的标签。本发明检测的漏洞类型如表1所示。
表1智能合约数据集
Figure BDA0003395745400000091
经过上述操作,最终智能合约数据集转化为已标记的样本集合,每个样本对应一个标签。
(2)数据预处理阶段
2.1)对于上述阶段已标记的智能合约数据集,从数据集中获取智能合约源码,并将其通过编译得到合约字节码。
2.2)编译生成的合约字节码,由三个部分组成:部署代码、runtime代码、Auxdata代码,每个合约中最后面的43字节即为Auxdata代码,但是真正执行的是runtime代码,因此只需反编译runtime代码即可,所以需要将Auxdata代码清除。至此,定义字节码清洗方法,编写字节码清洗脚本,删除无效字节码。
2.3)获取合约操作码序列。将上述操作得到的合约字节码通过反汇编程序转化为包含操作数的合约操作码序列的形式,此时的序列包含操作数,而在作为输入时,操作数是无需使用的,因此通过十六进制编码将序列转化为一段由十六进制数表示的不含操作数的操作码序列。然后利用表2所示的操作码简化方法对操作码序列进行简化处理,避免了由于特征数目过多而引发的维度灾难。
操作码简化方法如表2所示。
表2操作码简化方法
替换操作码 原操作码
ARIT ADD,MUL,SUB,DIV,SDIV,SMOD,MOD,ADDMOD,MULMOD,EXP
COMP LT,GT,SLT,SGT
CONS1 BLOCKHASH,TIMESTAMP,NUMBER,DIFFICULTY,GASLIMIT,COINBASE
CONS2 ADDRESS,ORIGIN,CALLER
CONS3 GASPRICE,BALANCE,CALLVALUE,GAS
LOGI AND,OR,XOR,NOT
MOV SHL,SHR,SAR
PUSH PUSH1-PUSH32
DUP DUP1-DUP16
SWAP SWAP1-SWAP16
LOG LOG1-LOG4
简化操作码过后的数据集如表3所示。
表3简化操作码后的数据集
Figure BDA0003395745400000111
2.4)作为一种典型的异常检测问题,存在漏洞的智能合约的数量远远少于正常合约的数量,甚至指定漏洞的合约数量更加稀少。为使模型能够得到较好的训练,学习收集到足够的特征信息,因此对智能合约数据集采用过采样方法(SMOTE),以增加漏洞合约数量以及指定类别漏洞的数量,达到平衡数据目的。同时,按照一定比例(7:1:2)划分为三个数据集合:训练集、验证集及测试集。
根据上述操作,编写数据集采样及划分程序脚本,处理智能合约数据样本集合作为模型的输入,其中训练集用来训练模型的超参数;验证集用来验证模型的超参数,并给予模型反馈,以便模型进行下一步调整;测试集则用来测试模型的性能。
(3)模型构造阶段
按照上文所述构造基于多任务学习的智能合约漏洞检测模型,并设定模型参数,以进行下一阶段的训练。
Figure BDA0003395745400000112
Batch size:一次训练所选取的样本数
Batch size的大小影响着模型的优化程度和速度,同时直接影响到GPU内存的使用情况,通过并行化可以提高内存的利用率,大批次可以使网络更快收敛,但有可能导致内存不够用,而适当的batch size可以使得梯度下降的方向更加准确。本发明中将从[16,32,64,128,256]中逐渐增大batch size的大小,以选择最合适的batch size的大小。
Figure BDA0003395745400000121
Learn rate:学习率
学习率(Learn rate)是深度学习中重要的超参之一,其决定着目标函数能否收敛到局部最小值,以及何时收敛到最小值,合适的学习率能够使目标函数在合适的时间内收敛的局部的最小值。学习率值越低,沿着梯度下降越慢,使用较小的学习率可以不会错过任何局部最低点,但是收敛时间较长;但如果学习率值越高,就有可能忽略某个局部最低点。针对学习率的配置,一般依靠经验法,通过观察损失值进行配置。一般在模型初始化时,设置非常小的学习率进行训练,然后每次训练增大学习率,直至达到较好的训练效果。
Figure BDA0003395745400000122
Dropout:随机失活率
Dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃,其最大的作用是防止过拟合,提高模型的性能效果。本发明从0.05开始设置dropout值,每次训练增大该值,直至达到较好的训练效果。
Figure BDA0003395745400000123
Optimizer:优化器
模型训练的本质就是在最小化损失,在定义了损失函数后,使用优化器对梯度进行优化。本发明使用的优化器包括SGD、Adam等。Adam是快速收敛且常被使用的优化器;SGD收敛速度慢,但可以加入Momentum加快收敛。
Figure BDA0003395745400000132
Epoch:迭代次数
使用训练集的全部数据对模型进行一次完整训练,称为一个epoch,在神经网络中传递完整的数据集一次是不够的,因此需要进行多次传递,随着epoch数量增加,神经网络中的权重更新的次数也在增加,模型将会从欠拟合现象变到过拟合现象,所以确定合适的epoch对模型的性能是重要的。实验验证当测试错误率和训练错误率相差较小时,可认为当前迭代次数合适。本发明中将从[20,30,40,50,60,80,100]中逐渐增大epoch。
根据上述内容,设置模型的重要超参数,进行模型训练阶段,并根据训练结果不断调整模型超参数,直至模型达到较好的效果。
(4)模型训练阶段
根据上述操作,将训练集送入到智能合约检测模型中进行训练超参数,通过验证集进行模型验证超参数,并通过反向传播算法对模型进行反馈优化,直至得到最优性能的超参数。
算法伪代码流程如下所示:
Figure BDA0003395745400000131
Figure BDA0003395745400000141
经过实验验证,当基于多任务学习的智能合约漏洞检测模型采取如表4所示的设置,将会得到较好的性能。
表4超参数设置
超参数
Epoch 50
Batchsize 128
Learnrate 0.0001
Dropout 0.4
Optimizer Adam
针对三种合约漏洞的检测实验结果如表5所示。
表5实验结果
Figure BDA0003395745400000142
综上所述,本发明实施例提出的漏洞检测方法通过提取语义序列特征和利用深度学习算法,实现了对3种合约漏洞准确且高效地自动检测,本方法适用于大批量合约漏洞检测的应用场景。
以上所述仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改,等同替换以及改进等,均应包含在本发明的保护范围之内。

Claims (4)

1.一种基于多任务学习的智能合约漏洞检测方法,其特征在于,包括:
(1)在数据准备阶段,对智能合约样本集进行漏洞分类及标签标记;
(2)在数据预处理阶段,将智能合约源码进行编译转化为合约字节码,同时删除无效字节码,然后将有效字节码进行反编译转化为操作码序列,作为模型的输入;
(3)在模型构建阶段,构建基于硬参数共享的多任务学习框架;在框架的底部共享层,构建基于自注意力的特征网络层,提取学习操作码序列特征;并在特定任务层,针对漏洞判断任务,建立基于卷积神经网络的二分类模型;针对漏洞识别任务,建立基于卷积神经网络的多标签分类模型,作为智能合约的漏洞检测模型;
(4)在智能合约漏洞检测阶段,按照数据预处理阶段的处理方式将待检测智能合约处理成操作码序列,然后输入到基于多任务的智能合约漏洞检测模型,实现多任务功能,包括漏洞的判断、多种漏洞的检测。
2.根据权利要求1所述的一种基于多任务学习的智能合约漏洞检测方法,其特征在于,所述数据准备阶段包括:
(1)根据所需实现检测的漏洞类型,收集并获取智能合约数据集;
(2)对智能合约数据集进行清洗,获得有效的智能合约数据样本;
(3)对智能合约数据样本进行分类标记:借用漏洞检测工具对智能合约样本进行漏洞检测分析,根据漏洞类型对每个智能合约进行样本标记,包含是否存在漏洞的标签,以及漏洞类型;
(4)所述标签为N=[n1,n2,...,nk],其中,k表示需要实现检测的多种漏洞类型,ni=0表示智能合约样本不属于第n种漏洞,ni=1表示该合约样本属于第n种漏洞。
3.根据权利要求1所述的一种基于多任务学习的智能合约漏洞检测方法,其特征在于,在数据预处理阶段,所述的模型输入构造包括:
(1)将智能合约源码编译转化为合约字节码;
智能合约编译的字节码,分为三个部分:部署代码、runtime代码、auxdata代码,由于每个合约结尾的auxdata代码是无效字节码,因此删除auxdata代码;
(2)将字节码反编译转化为操作码序列;
字节码是是由一系列十六进制数字组成,表示特定的操作序列和参数;对获取到的合约字节码进行处理,反编译生成操作码序列,以简化模型的输入、提高模型训练效率和训练效果。
4.根据权利要求1所述的一种基于多任务学习的智能合约漏洞检测方法,其特征在于,在模型构建阶段,所述的模型构造包括:
(1)构建基于硬参数共享的多任务学习框架;在框架的底部共享层,构建基于自注意力的特征网络层,提取学习操作码序列特征;并在特定任务层,针对漏洞判断任务,建立基于卷积神经网络的二分类模型;针对漏洞识别任务,建立基于卷积神经网络的多标签分类模型,作为智能合约的漏洞检测模型;
(2)基于自注意力的特征网络层依次包含输入层、Word Embedding层、PositionalEmbedding层、Self-attention层、FFN层;基于卷积神经网络的分类网络依次包含卷积层、Dropout层、全连接层和分类层;其中,特征网络层用于学习操作码序列中的特征,分类网络用于判断、识别漏洞。
CN202111482288.7A 2021-12-07 2021-12-07 一种基于多任务学习的智能合约漏洞检测方法 Pending CN114218580A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111482288.7A CN114218580A (zh) 2021-12-07 2021-12-07 一种基于多任务学习的智能合约漏洞检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111482288.7A CN114218580A (zh) 2021-12-07 2021-12-07 一种基于多任务学习的智能合约漏洞检测方法

Publications (1)

Publication Number Publication Date
CN114218580A true CN114218580A (zh) 2022-03-22

Family

ID=80699938

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111482288.7A Pending CN114218580A (zh) 2021-12-07 2021-12-07 一种基于多任务学习的智能合约漏洞检测方法

Country Status (1)

Country Link
CN (1) CN114218580A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115080981A (zh) * 2022-06-22 2022-09-20 东北大学 一种基于局部与序列特征融合的智能合约漏洞检测方法
CN115098861A (zh) * 2022-05-05 2022-09-23 南京邮电大学 一种基于多标记模型的智能合约漏洞检测方法
CN116578989A (zh) * 2023-05-23 2023-08-11 海南大学 基于深度预训练神经网络的智能合约漏洞检测系统及方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115098861A (zh) * 2022-05-05 2022-09-23 南京邮电大学 一种基于多标记模型的智能合约漏洞检测方法
CN115080981A (zh) * 2022-06-22 2022-09-20 东北大学 一种基于局部与序列特征融合的智能合约漏洞检测方法
CN116578989A (zh) * 2023-05-23 2023-08-11 海南大学 基于深度预训练神经网络的智能合约漏洞检测系统及方法
CN116578989B (zh) * 2023-05-23 2024-03-22 海南大学 基于深度预训练神经网络的智能合约漏洞检测系统及方法

Similar Documents

Publication Publication Date Title
Sparks et al. Keystoneml: Optimizing pipelines for large-scale advanced analytics
CN108446540B (zh) 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统
Hu et al. EROS: Ensemble rough subspaces
CN114218580A (zh) 一种基于多任务学习的智能合约漏洞检测方法
CN109241199B (zh) 一种面向金融知识图谱发现的方法
Del Carpio et al. Trends in software engineering processes using deep learning: a systematic literature review
CN111898134B (zh) 基于LSTM和BiLSTM的智能合约漏洞检测方法和装置
CN115373737B (zh) 一种基于特征融合的代码克隆检测方法
CN116361788A (zh) 一种基于机器学习的二进制软件漏洞预测方法
CN117272142A (zh) 一种日志异常检测方法、系统及电子设备
Gelman et al. A language-agnostic model for semantic source code labeling
CN117454387A (zh) 基于多维度的特征提取的漏洞代码检测方法
Wilson et al. The motif tracking algorithm
Athavale et al. Predicting algorithm classes for programming word problems
Herrmann et al. Learning useful representations of recurrent neural network weight matrices
CN117725592A (zh) 一种基于有向图注意力网络的智能合约漏洞检测方法
Fokam et al. Influence of contrastive learning on source code plagiarism detection through recursive neural networks
CN116841869A (zh) 基于代码结构化信息及审查知识的Java代码审查评论生成方法及装置
CN116662991A (zh) 基于人工智能的智能合约意图检测方法
CN116595537A (zh) 一种基于多模态特征的生成式智能合约的漏洞检测方法
CN116226404A (zh) 一种针对肠-脑轴的知识图谱构建方法及知识图谱系统
Parisi et al. Making the most of scarce input data in deep learning-based source code classification for heterogeneous device mapping
Bui et al. Detecting Software Vulnerabilities Based on Source Code Analysis using GCN Transformer
Nangi et al. Autosumm: Automatic model creation for text summarization
Xu et al. CrossLMD: Cross-Language Malicious code Detection

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