一种基于对抗神经网络的智能合约可重入漏洞检测方法技术

技术编号:30441811 阅读:30 留言:0更新日期:2021-10-24 18:30
本发明专利技术公开了一种基于对抗神经网络的智能合约可重入漏洞检测的方法,属于区块链安全技术领域。本方法将每种类型的漏洞威胁特征提取出来,当合约语句和漏洞语句相似度大于阈值时,将合约语句和漏洞威胁特征进行匹配。如果匹配成功,将合约语句标记漏洞语句并记录其类型。如果匹配失败,则说明存在误判,该合约语句不会被标记为漏洞语句。通过生成器和判别器的对抗,判别器具有良好的判别能力。本方法可以避免漏洞语句误判,可以自动寻找智能合约库中的所有漏洞语句,具有良好的准确率。具有良好的准确率。具有良好的准确率。

【技术实现步骤摘要】
一种基于对抗神经网络的智能合约可重入漏洞检测方法


[0001]本专利技术涉及一种基于对抗神经网络的智能合约可重入漏洞检测的方法,属于区块链安全


技术介绍

[0002]区块链技术在现代信息技术和计算环境中有着许多应用,这种技术具有诸如分散、分布和抗篡改等关键特性,具备利用分布式计算资源的能力。智能合约是一个预定义的逻辑段,可以自动执行、控制和记录区块链中的相关事件。智能合约的关键功能可以确保交易得到验证、支出得到解决、恶意活动得到检测和减少。
[0003]尽管智能合约的应用非常广泛,但是区块链系统中执行函数的顺序尚没有统一标准。由于智能合约中缺乏执行标准,常常被利用为渗透区块链系统的漏洞。可重入攻击是区块链系统中最具破坏性的攻击之一,当攻击者想要通过递归调用目标的交易函数从目标中耗尽资金时,就会发生可重入攻击。当智能合约在发送资金之前无法更新其余额状态时,攻击者可以连续调用交易函数来耗尽合同的资金。因此,可重入攻击对区块链系统具有严重的危害。
[0004]为了在部署智能合约之前对可重入漏洞进行检测,必须设计一种高效的检测可重入漏洞的方法。
[0005]目前,进行可重入漏洞检测的方法包括以下几种:
[0006]方案1:基于神经网络的可重入漏洞检测。首先人工收集数据集,并对数据集进行人工标记。然后建立神经网络模型,并将数据集和对应的人工标记输入到神经网络模型进行训练。最后将待检测的智能合约输入到神经网络模型进行预测。
[0007]但是,该方案人工收集数据和人工标记非常耗时,也容易出现错误。神经网络模型的准确建立直接影响漏洞检测的结果。
[0008]方案2:基于专家规则的可重入漏洞检测。首先,专家定义特定的缺陷模式或者特定的规范规则。然后,待检测的智能合约匹配缺陷模式或者规范规则,以此进行漏洞检测。
[0009]但是,该方案扩展性差,准确率低。出现同一漏洞的不同体现形式时,无法成功检测到漏洞,也无法对其进行扩展,因为需要重新设计缺陷模式或规范规则。

技术实现思路

[0010]本专利技术的目的是为了克服现有可重入漏洞检测方法存在准确率低等技术缺陷,为了解决在部署智能合约之前对可重入漏洞进行有效检测的技术问题,创造性地提出一种基于对抗神经网络的智能合约可重入漏洞检测方法。
[0011]为了达到上述目的,本专利技术采取如下技术方案。
[0012]一种基于对抗神经网络的智能合约可重入漏洞检测方法。
[0013]首先,对有关概念进行说明。
[0014]定义1:智能合约
[0015]一种旨在以信息化方式传播、验证、执行合同的计算机协议。
[0016]定义2:代码嵌入
[0017]指将文字转换为数字向量。
[0018]定义3:向量相似度
[0019]指两个向量的相似程度,即,两个向量在空间中的距离大小程度。
[0020]定义4:对抗神经网络
[0021]指通过生成器和判别器的对抗,生成器能生成逼真事务,判别器能判别真假事务。
[0022]一种基于对抗神经网络的智能合约可重入漏洞检测方法,包括以下步骤:
[0023]步骤1:漏洞语句库和智能合约库进行数据预处理、代码嵌入和语句向量相似度比较,找出智能合约中漏洞语句的实际位置,并对其进行类型分类。最后,收集智能合约库中的所有漏洞语句。
[0024]步骤2:构建对抗神经网络。将收集的漏洞语句和噪声数据通过生成器生成的逼真漏洞语句,作为训练集来训练对抗神经网络中的判别器。通过固定判别器的参数,来训练生成器。
[0025]步骤3:将智能合约库换成待检测智能合约,通过步骤1来检测智能合约内是否存在漏洞语句,通过步骤2训练好的判别器,判别智能合约内是否存在漏洞语句。将两次检测结果进行综合,只要检测到合约语句是漏洞语句,就将其标记为漏洞语句。
[0026]有益效果
[0027]本专利技术方法,与现有技术相比,具有如下优点:
[0028]1.本方法可以避免漏洞语句误判,具体为:漏洞语句类型被划分为重度漏洞威胁,轻度漏洞威胁,潜在漏洞威胁。将每种类型的漏洞威胁特征提取出来。当合约语句和漏洞语句相似度大于阈值时,将合约语句和漏洞威胁特征进行匹配。如果匹配成功,将合约语句标记漏洞语句并记录其类型。如果匹配失败,则说明存在误判,该合约语句不会被标记为漏洞语句。
[0029]2.本方法解决了人工收集数据和人工标记数据的耗时问题,具体为:通过步骤1可以自动寻找智能合约库中的所有漏洞语句。
[0030]3.本方法具有良好的准确率。具体为:通过生成器和判别器的对抗,判别器具有良好的判别能力。为了提高准确率,将步骤1的检测结果和判别器的检测结果进行综合,不管是步骤1还是判别器,只要检测到合约语句是漏洞语句,就将其标记为漏洞语句。
附图说明
[0031]图1为本专利技术方法的示意图。
具体实施方式
[0032]下面结合方法示意图和具体实施方式来详细说明本专利技术方法。
[0033]实施例
[0034]如图1所示,一种基于对抗神经网络的智能合约可重入漏洞检测方法,包括以下步骤:
[0035]步骤1:漏洞语句库和智能合约库进行数据预处理、代码嵌入和语句向量相似度比
较,找出智能合约中漏洞语句的实际位置,并对其进行类型分类。最后,收集智能合约库中的所有漏洞语句。
[0036]具体地,步骤1包括以下步骤:
[0037]步骤1.1:数据预处理。
[0038]通过“\n”标识符,对漏洞语句库和智能合约库进行分割,获得语句级别的合约代码。通过结巴分词工具对语句进行分割,获得词序列。对词序列进行规范化处理,对于单字符变量,用“single”代替;对于数字,用“num”代替;删除不必要的标点符号。
[0039]步骤1.2:对词序列进行代码嵌入,获得漏洞语句向量矩阵和智能合约语句向量矩阵。
[0040]采用FastText工具训练固定维度的词向量。为获取整条语句的向量表示,将语句内所有标记的词向量求和。
[0041]步骤1.3:相似度比较。
[0042]将智能合约语句向量矩阵的每一个向量和漏洞语句向量矩阵的所有向量进行相似度比较,如果相似度大于阈值,则说明该条智能合约语句存在漏洞威胁,并将该语句收集。否则,说明该条智能合约语句不存在漏洞威胁,不对其进行任何操作。
[0043]步骤1.4:定位漏洞语句位置。
[0044]智能合约语句向量矩阵中的每一行向量代表智能合约的每一行代码,所有向量矩阵的下标和代码行是对应的。依据漏洞语句向量的下标,定位漏洞语句实际代码行位置。
[0045]步骤1.5:对漏洞语句类型进行分类。
[0046]将交易语句看成重度漏洞威胁,将余额判断和余额变更语句看成轻度漏洞威胁,将包含payable关键字的语句看成潜在漏洞语句威胁。
[0047]将上述三种类型的漏洞语句关键词特征提取出来,当本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于对抗神经网络的智能合约可重入漏洞检测方法,首先,对有关概念进行说明:定义1:智能合约一种旨在以信息化方式传播、验证、执行合同的计算机协议;定义2:代码嵌入指将文字转换为数字向量;定义3:向量相似度指两个向量的相似程度,即,两个向量在空间中的距离大小程度;定义4:对抗神经网络指通过生成器和判别器的对抗,生成器能生成逼真事务,判别器能判别真假事务;其特征在于,包括以下步骤:步骤1:漏洞语句库和智能合约库进行数据预处理、代码嵌入和语句向量相似度比较,找出智能合约中漏洞语句的实际位置,并对其进行类型分类,最后,收集智能合约库中的所有漏洞语句;步骤2:构建对抗神经网络;将收集的漏洞语句和噪声数据通过生成器生成的逼真漏洞语句,作为训练集来训练对抗神经网络中的判别器;通过固定判别器的参数,来训练生成器;步骤3:将智能合约库换成待检测智能合约,通过步骤1来检测智能合约内是否存在漏洞语句,通过步骤2训练好的判别器,判别智能合约内是否存在漏洞语句;将两次检测结果进行综合,只要检测到合约语句是漏洞语句,就将其标记为漏洞语句。2.如权利要求1所述的一种基于对抗神经网络的智能合约可重入漏洞检测方法,其特征在于,步骤1包括以下步骤:步骤1.1:数据预处理;通过“\n”标识符,对漏洞语句库和智能合约库进行分割,获得语句级别的合约代码;通过结巴分词工具对语句进行分割,获得词序列;对词序列进行规范化处理,对于单字符变量,用“single”代替;对于数字,用“num”代替;删除不必要的标点符号;步骤1.2:对词序列进行代码嵌入,获得漏洞语句向量矩阵和智能合约语句向量矩阵;采用FastText工具训练固定维度的词向量;为获取整条语句的向量表示,将语句内所有标记的词向量求和;步骤1.3:相似度比较;将智能合约语句向量矩阵的每一个向量和漏洞语句向量矩阵的所有向量进行相似度比较,如果相似度...

【专利技术属性】
技术研发人员:盖珂珂祝烈煌苏鹏徐蕾蒋芃赵辉
申请(专利权)人:北京理工大学
类型:发明
国别省市:

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

1