一种基于机器学习的合约漏洞处理方法技术

技术编号:35352185 阅读:21 留言:0更新日期:2022-10-26 12:22
本发明专利技术属于机器学习、区块链技术领域,尤其为一种基于机器学习的合约漏洞处理方法,包含:根据漏洞判断依据,总结出漏洞类型为12类、区块链漏洞领域特征31种,作为人工打标签的依据;从EtherScan上爬取的9000余个真实发生的智能合约进行人工打标签;将非结构化的Solidity源代码序列通过代码切片划分;对代码序列进行词嵌入矩阵的构建;模型训练;本发明专利技术的合约漏洞处理方法,通过机器学习的方法自动学习漏洞代码模式,不必依赖于人工总结漏洞模式,泛化性好,能够识别多种类型漏洞,自动化程度高;由于Solidity代码有其独有的代码领域特征,而漏洞的发生往往都与这些领域特征有着相关性,本方法引入注意力机制,使得模型关注区块链领域特征,提升模型预测漏洞能力。提升模型预测漏洞能力。提升模型预测漏洞能力。

【技术实现步骤摘要】
一种基于机器学习的合约漏洞处理方法


[0001]本专利技术属于机器学习、区块链
,具体涉及一种基于机器学习的合约漏洞处理方法。

技术介绍

[0002]智能合约是将以"数字加密货币"技术为主的区块链1.0时代转向"可编程金融"技术为主的区块链2.0时代的桥梁,随着智能合约的数量越多,这吸引了许多黑客利用合约的漏洞盗取资金,由于合约一旦上链就无法更改,目前主流的方法依赖领域专家总结漏洞模式,制定有针对性的漏洞模板,这种方法的局限是自动化程度低、依赖人工对代码进行观察以及泛化性弱。
[0003]为了避免合约参与者在交易过程中造成经济损失,针对智能合约的漏洞检测开始被人们重视起来,当前智能合约检测方向主要分为以下五类:(1)基于代码特征或者模式的漏洞检测;(2)基于形式化验证的漏洞检测;(3)基于模糊测试的漏洞检测;(4)基于符号执行的漏洞检测;(5)基于深度学习方法的漏洞检测。
[0004]其中前四种方法主要依赖于领域专家总结漏洞特征或漏洞模式,其存在以下两点共性问题(1)自动化程度低,每个漏洞都需要人工分析漏洞特征或者漏洞模式;(2)泛化性低,一款工具因为自身机制的限制,导致他们只能检测一些特定的漏洞,比如Oyente只能检测出5种漏洞,Securify只分析7种漏洞,Mythril只分析10种漏洞。
[0005]深度学习方法可以通过其自身对数据进行挖掘,从数据中学习其隐含的代码特征,然而当深度学习技术直接应用于智能合约漏洞检测中,将会遇到如下三大挑战:
[0006]第一,深度学习模型效果好坏很大程度上依赖于数据集,但是目前尚不存在一个标签良好的智能合约漏洞数据集;现有的数据集大多采取一些现有工具(如Mythril、Securify和Oyente)联合标注获得,通过这种方法获得的数据集通常不够准确;如果对联合标注的结果取交集,将导致漏报率偏高,比如交易顺序依赖漏洞只有Mythril工具能够检测,取交集导致出现这个漏洞的合约被标记为安全;如果对联合标注的结果取并集,将导致误报率偏高。
[0007]第二,现有的深度学习应用于漏洞检测相关研究中,缺乏对区块链领域特征的考虑,如某人通过Bag

of

Feature的方式将函数特征信息编码为向量,虽然取得了一定效果,但是缺乏对区块链自身的领域特征的考虑,根据我们的观察发现,有大量漏洞是智能合约所特有的代码特性导致的,比如Solidity特有的call.value()内置函数就可能会导致可重入漏洞,address.send()可能导致未校验返回值漏洞。
[0008]第三,Solidity源代码丢进模型训练面临着两个问题:1.Solidity源代码是非结构化的,而结构化的数据更便于深度学习模型模型提取其语义特征;2.模型在学习漏洞代码模式时,容易受到与漏洞逻辑无关的代码段,即所谓的”噪声”影响,因此如何尽可能的让模型关注到关键函数,去除“噪声”影响,减少误报是一个需要考虑的问题。

技术实现思路

[0009]为解决现有技术中存在的上述问题,本专利技术提供了一种基于机器学习的合约漏洞处理方法,具有泛化性好、能够识别多种类型漏洞以及自动化程度高的特点。
[0010]为实现上述目的,本专利技术提供如下技术方案:一种基于机器学习的合约漏洞处理方法,包含如下处理步骤:
[0011]步骤一:根据漏洞判断依据,总结出漏洞类型为12类、区块链漏洞领域特征31种,作为人工打标签的依据;
[0012]步骤二:根据漏洞判断依据,从EtherScan上爬取的9000余个真实发生的智能合约进行人工打标签;
[0013]步骤三:将非结构化的Solidity源代码序列通过代码切片划分,得到结构化的代码序列;
[0014]步骤四:对代码序列进行词嵌入矩阵的构建,在构建词嵌入矩阵时嵌入区块链领域特征,通过采用Word2Vec模型针对代码切片进行词向量训练,得到训练好的词向量模型;
[0015]步骤五:模型训练,通过对多种神经网络模型在相同的实验环境和数据集的条件下进行训练,并对模型参数进行不断调整优化,最终得到效果最佳的神经网络模型和模型参数。
[0016]作为本专利技术的一种优选技术方案,在步骤一和步骤二中,漏洞判断依据包括SWC

Registry、DASP TOP10、Smartbugs。
[0017]作为本专利技术的一种优选技术方案,在步骤一中,漏洞类型包括Solidity源码层、EVM虚拟机层、区块链系统层。
[0018]作为本专利技术的一种优选技术方案,在步骤二中,还包括人工构建公共数据集和真实合约数据集两个数据集,具体为:
[0019]公共数据集:从EtherScan平台爬取4545个合约,按照设定好的漏洞规则人工打标签;
[0020]真实合约数据集:从DASP Top10、Smartbugs和SWC已经标注好的智能合约漏洞中针对每一种类型的漏洞都找10份智能合约源码。
[0021]作为本专利技术的一种优选技术方案,在步骤四中,还包括在构建词嵌入矩阵时对包含区块链领域信息的词进行加权。
[0022]作为本专利技术的一种优选技术方案,在步骤五中,多种神经网络模型包括循环神经网络、文本卷积神经网络、长短期记忆神经网络、双向长短期记忆神经网络。
[0023]作为本专利技术的一种优选技术方案,在步骤五中,调整优化的模型参数包括隐藏层层数、学习率、epoch、训练迭代数量。
[0024]与现有技术相比,本专利技术的有益效果是:本专利技术的合约漏洞处理方法,通过机器学习的方法自动学习漏洞代码模式,不必依赖于人工总结漏洞模式,泛化性好,能够识别多种类型漏洞,自动化程度高;由于Solidity代码有其独有的代码领域特征,而漏洞的发生往往都与这些领域特征有着相关性,本方法引入注意力机制,使得模型关注区块链领域特征,提升模型预测漏洞能力。
附图说明
[0025]附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,与本专利技术的实施例一起用于解释本专利技术,并不构成对本专利技术的限制。在附图中:
[0026]图1为本专利技术的实施流程示意图;
[0027]图2为本专利技术中的BILSTM
ATT
模型框架示意图;
具体实施方式
[0028]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0029]请参阅图1

图2,本专利技术提供以下技术方案:一种基于机器学习的合约漏洞处理方法,包含如下处理步骤:
[0030]步骤一:根据SWC

Registry、DASP TOP10、Smartbugs,总结出漏洞类型为12类、区块链漏洞领域特征31种,作为人工打标本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于机器学习的合约漏洞处理方法,其特征在于:包含如下处理步骤:步骤一:根据漏洞判断依据,总结出漏洞类型为12类、区块链漏洞领域特征31种,作为人工打标签的依据;步骤二:根据漏洞判断依据,从EtherScan上爬取的9000余个真实发生的智能合约进行人工打标签;步骤三:将非结构化的Solidity源代码序列通过代码切片划分,得到结构化的代码序列;步骤四:对代码序列进行词嵌入矩阵的构建,在构建词嵌入矩阵时嵌入区块链领域特征,通过采用Word2Vec模型针对代码切片进行词向量训练,得到训练好的词向量模型;步骤五:模型训练,通过对多种神经网络模型在相同的实验环境和数据集的条件下进行训练,并对模型参数进行不断调整优化,最终得到效果最佳的神经网络模型和模型参数。2.根据权利要求1所述的一种基于机器学习的合约漏洞处理方法,其特征在于:在步骤一和步骤二中,漏洞判断依据包括SWC

Registry、DASP TOP10、Smartbugs。3.根据权利要求1所述的一种基于机器学习的合约漏洞处理方法,其特征在...

【专利技术属性】
技术研发人员:王昌晶黄箐曾锦山左正康江会文
申请(专利权)人:江西师范大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1