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

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

Info

Publication number
CN113536322A
CN113536322A CN202110847570.4A CN202110847570A CN113536322A CN 113536322 A CN113536322 A CN 113536322A CN 202110847570 A CN202110847570 A CN 202110847570A CN 113536322 A CN113536322 A CN 113536322A
Authority
CN
China
Prior art keywords
statement
vulnerability
bug
intelligent contract
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
CN202110847570.4A
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 Institute of Technology BIT
Original Assignee
Beijing Institute of Technology BIT
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 Institute of Technology BIT filed Critical Beijing Institute of Technology BIT
Priority to CN202110847570.4A priority Critical patent/CN113536322A/zh
Publication of CN113536322A publication Critical patent/CN113536322A/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Mathematical Physics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)

Abstract

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

Description

一种基于对抗神经网络的智能合约可重入漏洞检测方法
技术领域
本发明涉及一种基于对抗神经网络的智能合约可重入漏洞检测的方法,属于区块链安全技术领域。
背景技术
区块链技术在现代信息技术和计算环境中有着许多应用,这种技术具有诸如分散、分布和抗篡改等关键特性,具备利用分布式计算资源的能力。智能合约是一个预定义的逻辑段,可以自动执行、控制和记录区块链中的相关事件。智能合约的关键功能可以确保交易得到验证、支出得到解决、恶意活动得到检测和减少。
尽管智能合约的应用非常广泛,但是区块链系统中执行函数的顺序尚没有统一标准。由于智能合约中缺乏执行标准,常常被利用为渗透区块链系统的漏洞。可重入攻击是区块链系统中最具破坏性的攻击之一,当攻击者想要通过递归调用目标的交易函数从目标中耗尽资金时,就会发生可重入攻击。当智能合约在发送资金之前无法更新其余额状态时,攻击者可以连续调用交易函数来耗尽合同的资金。因此,可重入攻击对区块链系统具有严重的危害。
为了在部署智能合约之前对可重入漏洞进行检测,必须设计一种高效的检测可重入漏洞的方法。
目前,进行可重入漏洞检测的方法包括以下几种:
方案1:基于神经网络的可重入漏洞检测。首先人工收集数据集,并对数据集进行人工标记。然后建立神经网络模型,并将数据集和对应的人工标记输入到神经网络模型进行训练。最后将待检测的智能合约输入到神经网络模型进行预测。
但是,该方案人工收集数据和人工标记非常耗时,也容易出现错误。神经网络模型的准确建立直接影响漏洞检测的结果。
方案2:基于专家规则的可重入漏洞检测。首先,专家定义特定的缺陷模式或者特定的规范规则。然后,待检测的智能合约匹配缺陷模式或者规范规则,以此进行漏洞检测。
但是,该方案扩展性差,准确率低。出现同一漏洞的不同体现形式时,无法成功检测到漏洞,也无法对其进行扩展,因为需要重新设计缺陷模式或规范规则。
发明内容
本发明的目的是为了克服现有可重入漏洞检测方法存在准确率低等技术缺陷,为了解决在部署智能合约之前对可重入漏洞进行有效检测的技术问题,创造性地提出一种基于对抗神经网络的智能合约可重入漏洞检测方法。
为了达到上述目的,本发明采取如下技术方案。
一种基于对抗神经网络的智能合约可重入漏洞检测方法。
首先,对有关概念进行说明。
定义1:智能合约
一种旨在以信息化方式传播、验证、执行合同的计算机协议。
定义2:代码嵌入
指将文字转换为数字向量。
定义3:向量相似度
指两个向量的相似程度,即,两个向量在空间中的距离大小程度。
定义4:对抗神经网络
指通过生成器和判别器的对抗,生成器能生成逼真事务,判别器能判别真假事务。
一种基于对抗神经网络的智能合约可重入漏洞检测方法,包括以下步骤:
步骤1:漏洞语句库和智能合约库进行数据预处理、代码嵌入和语句向量相似度比较,找出智能合约中漏洞语句的实际位置,并对其进行类型分类。最后,收集智能合约库中的所有漏洞语句。
步骤2:构建对抗神经网络。将收集的漏洞语句和噪声数据通过生成器生成的逼真漏洞语句,作为训练集来训练对抗神经网络中的判别器。通过固定判别器的参数,来训练生成器。
步骤3:将智能合约库换成待检测智能合约,通过步骤1来检测智能合约内是否存在漏洞语句,通过步骤2训练好的判别器,判别智能合约内是否存在漏洞语句。将两次检测结果进行综合,只要检测到合约语句是漏洞语句,就将其标记为漏洞语句。
有益效果
本发明方法,与现有技术相比,具有如下优点:
1.本方法可以避免漏洞语句误判,具体为:漏洞语句类型被划分为重度漏洞威胁,轻度漏洞威胁,潜在漏洞威胁。将每种类型的漏洞威胁特征提取出来。当合约语句和漏洞语句相似度大于阈值时,将合约语句和漏洞威胁特征进行匹配。如果匹配成功,将合约语句标记漏洞语句并记录其类型。如果匹配失败,则说明存在误判,该合约语句不会被标记为漏洞语句。
2.本方法解决了人工收集数据和人工标记数据的耗时问题,具体为:通过步骤1可以自动寻找智能合约库中的所有漏洞语句。
3.本方法具有良好的准确率。具体为:通过生成器和判别器的对抗,判别器具有良好的判别能力。为了提高准确率,将步骤1的检测结果和判别器的检测结果进行综合,不管是步骤1还是判别器,只要检测到合约语句是漏洞语句,就将其标记为漏洞语句。
附图说明
图1为本发明方法的示意图。
具体实施方式
下面结合方法示意图和具体实施方式来详细说明本发明方法。
实施例
如图1所示,一种基于对抗神经网络的智能合约可重入漏洞检测方法,包括以下步骤:
步骤1:漏洞语句库和智能合约库进行数据预处理、代码嵌入和语句向量相似度比较,找出智能合约中漏洞语句的实际位置,并对其进行类型分类。最后,收集智能合约库中的所有漏洞语句。
具体地,步骤1包括以下步骤:
步骤1.1:数据预处理。
通过“\n”标识符,对漏洞语句库和智能合约库进行分割,获得语句级别的合约代码。通过结巴分词工具对语句进行分割,获得词序列。对词序列进行规范化处理,对于单字符变量,用“single”代替;对于数字,用“num”代替;删除不必要的标点符号。
步骤1.2:对词序列进行代码嵌入,获得漏洞语句向量矩阵和智能合约语句向量矩阵。
采用FastText工具训练固定维度的词向量。为获取整条语句的向量表示,将语句内所有标记的词向量求和。
步骤1.3:相似度比较。
将智能合约语句向量矩阵的每一个向量和漏洞语句向量矩阵的所有向量进行相似度比较,如果相似度大于阈值,则说明该条智能合约语句存在漏洞威胁,并将该语句收集。否则,说明该条智能合约语句不存在漏洞威胁,不对其进行任何操作。
步骤1.4:定位漏洞语句位置。
智能合约语句向量矩阵中的每一行向量代表智能合约的每一行代码,所有向量矩阵的下标和代码行是对应的。依据漏洞语句向量的下标,定位漏洞语句实际代码行位置。
步骤1.5:对漏洞语句类型进行分类。
将交易语句看成重度漏洞威胁,将余额判断和余额变更语句看成轻度漏洞威胁,将包含payable关键字的语句看成潜在漏洞语句威胁。
将上述三种类型的漏洞语句关键词特征提取出来,当合约语句和漏洞语句的向量相似度大于阈值时,用合约语句的词序列和关键词特征进行匹配,从而对合约语句进行类型分类。如果匹配失败,说明该条语句被误判,不会将其标记成漏洞语句。
最后,收集所有漏洞语句,将其作为训练集去训练对抗神经网络中的判别器。
步骤1.6:动态预防可重入漏洞。
针对重度漏洞威胁语句,实时检测交易语句和余额变更语句的执行次数是否相等。如果执行次数不相等,则说明发生了重入攻击,停止交易,否则会造成合约资金的损失。如果执行次数相等,则正常交易。
步骤2:构建对抗神经网络。将收集的漏洞语句和噪声数据通过生成器生成的逼真漏洞语句,作为训练集来训练对抗神经网络中的判别器。通过固定判别器的参数,来训练生成器。
具体地,步骤2包括以下步骤:
步骤2.1:搭建对抗神经网络。
采用嵌入层作为生成器,采用二维卷积层作为判别器。
步骤2.2:训练判别器。
每条噪声数据通过生成器生成漏洞句子向量矩阵,将其标签设置为0。对步骤1收集的每一条漏洞语句,将其训练成向量矩阵的形式,并将其标签设置为1。将以上数据作为训练集,对判别器进行训练。
步骤2.3:训练生成器。
将每条噪声数据的标签设置为1,并将判别器的参数固定用噪声数据对生成器进行训练。
步骤2.4:交替执行步骤2.2和步骤2.3。
当判别器无法判别生成器生成的语句是否是安全语句还是漏洞语句时,训练终止。
步骤3:通过步骤1(将智能合约库换成待检测智能合约)来检测智能合约内是否存在漏洞语句。
通过步骤2训练好的判别器,判别智能合约内是否存在漏洞语句。
将两次检测结果进行综合,无论是步骤1还是步骤2,只要检测到合约语句是漏洞语句,就将其标记为漏洞语句。
以上所述为本发明的实施例之一,本发明不应该局限于该实施例和附图所公开的内容。凡是不脱离本发明所公开的精神下完成的等效或修改,都落入本发明保护的范围。

Claims (3)

1.一种基于对抗神经网络的智能合约可重入漏洞检测方法,首先,对有关概念进行说明:
定义1:智能合约
一种旨在以信息化方式传播、验证、执行合同的计算机协议;
定义2:代码嵌入
指将文字转换为数字向量;
定义3:向量相似度
指两个向量的相似程度,即,两个向量在空间中的距离大小程度;
定义4:对抗神经网络
指通过生成器和判别器的对抗,生成器能生成逼真事务,判别器能判别真假事务;
其特征在于,包括以下步骤:
步骤1:漏洞语句库和智能合约库进行数据预处理、代码嵌入和语句向量相似度比较,找出智能合约中漏洞语句的实际位置,并对其进行类型分类,最后,收集智能合约库中的所有漏洞语句;
步骤2:构建对抗神经网络;将收集的漏洞语句和噪声数据通过生成器生成的逼真漏洞语句,作为训练集来训练对抗神经网络中的判别器;通过固定判别器的参数,来训练生成器;
步骤3:将智能合约库换成待检测智能合约,通过步骤1来检测智能合约内是否存在漏洞语句,通过步骤2训练好的判别器,判别智能合约内是否存在漏洞语句;将两次检测结果进行综合,只要检测到合约语句是漏洞语句,就将其标记为漏洞语句。
2.如权利要求1所述的一种基于对抗神经网络的智能合约可重入漏洞检测方法,其特征在于,步骤1包括以下步骤:
步骤1.1:数据预处理;
通过“\n”标识符,对漏洞语句库和智能合约库进行分割,获得语句级别的合约代码;通过结巴分词工具对语句进行分割,获得词序列;对词序列进行规范化处理,对于单字符变量,用“single”代替;对于数字,用“num”代替;删除不必要的标点符号;
步骤1.2:对词序列进行代码嵌入,获得漏洞语句向量矩阵和智能合约语句向量矩阵;
采用FastText工具训练固定维度的词向量;为获取整条语句的向量表示,将语句内所有标记的词向量求和;
步骤1.3:相似度比较;
将智能合约语句向量矩阵的每一个向量和漏洞语句向量矩阵的所有向量进行相似度比较,如果相似度大于阈值,则说明该条智能合约语句存在漏洞威胁,并将该语句收集;否则,说明该条智能合约语句不存在漏洞威胁,不对其进行任何操作;
步骤1.4:定位漏洞语句位置;
智能合约语句向量矩阵中的每一行向量代表智能合约的每一行代码,所有向量矩阵的下标和代码行是对应的;依据漏洞语句向量的下标,定位漏洞语句实际代码行位置;
步骤1.5:对漏洞语句类型进行分类;
将交易语句看成重度漏洞威胁,将余额判断和余额变更语句看成轻度漏洞威胁,将包含payable关键字的语句看成潜在漏洞语句威胁;
将上述三种类型的漏洞语句关键词特征提取出来,当合约语句和漏洞语句的向量相似度大于阈值时,用合约语句的词序列和关键词特征进行匹配,从而对合约语句进行类型分类;如果匹配失败,说明该条语句被误判,不会将其标记成漏洞语句;
最后,收集所有漏洞语句,将其作为训练集去训练对抗神经网络中的判别器;
步骤1.6:动态预防可重入漏洞;
针对重度漏洞威胁语句,实时检测交易语句和余额变更语句的执行次数是否相等;如果执行次数不相等,则说明发生了重入攻击,停止交易,否则会造成合约资金的损失;如果执行次数相等,则正常交易。
3.如权利要求1所述的一种基于对抗神经网络的智能合约可重入漏洞检测方法,其特征在于,步骤2包括以下步骤:
步骤2.1:搭建对抗神经网络;
采用嵌入层作为生成器,采用二维卷积层作为判别器;
步骤2.2:训练判别器;
每条噪声数据通过生成器生成漏洞句子向量矩阵,将其标签设置为0;对步骤1收集的每一条漏洞语句,将其训练成向量矩阵的形式,并将其标签设置为1;将以上数据作为训练集,对判别器进行训练;
步骤2.3:训练生成器;
将每条噪声数据的标签设置为1,并将判别器的参数固定用噪声数据对生成器进行训练;
步骤2.4:交替执行步骤2.2和步骤2.3;
当判别器无法判别生成器生成的语句是否是安全语句还是漏洞语句时,训练终止。
CN202110847570.4A 2021-07-27 2021-07-27 一种基于对抗神经网络的智能合约可重入漏洞检测方法 Pending CN113536322A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110847570.4A CN113536322A (zh) 2021-07-27 2021-07-27 一种基于对抗神经网络的智能合约可重入漏洞检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110847570.4A CN113536322A (zh) 2021-07-27 2021-07-27 一种基于对抗神经网络的智能合约可重入漏洞检测方法

Publications (1)

Publication Number Publication Date
CN113536322A true CN113536322A (zh) 2021-10-22

Family

ID=78120973

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110847570.4A Pending CN113536322A (zh) 2021-07-27 2021-07-27 一种基于对抗神经网络的智能合约可重入漏洞检测方法

Country Status (1)

Country Link
CN (1) CN113536322A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113961937A (zh) * 2021-10-29 2022-01-21 支付宝(杭州)信息技术有限公司 一种智能合约代码漏洞处理方法及装置
CN117725597A (zh) * 2024-02-06 2024-03-19 南京众智维信息科技有限公司 一种基于时空记忆网络的漏洞威胁预测方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113961937A (zh) * 2021-10-29 2022-01-21 支付宝(杭州)信息技术有限公司 一种智能合约代码漏洞处理方法及装置
CN117725597A (zh) * 2024-02-06 2024-03-19 南京众智维信息科技有限公司 一种基于时空记忆网络的漏洞威胁预测方法
CN117725597B (zh) * 2024-02-06 2024-04-26 南京众智维信息科技有限公司 一种基于时空记忆网络的漏洞威胁预测方法

Similar Documents

Publication Publication Date Title
US11818170B2 (en) Detection of phishing campaigns based on deep learning network detection of phishing exfiltration communications
CN112738015B (zh) 一种基于可解释卷积神经网络cnn与图检测的多步攻击检测方法
US11188789B2 (en) Detecting poisoning attacks on neural networks by activation clustering
CN109753800B (zh) 融合频繁项集与随机森林算法的Android恶意应用检测方法及系统
CN113935033B (zh) 特征融合的恶意代码家族分类方法、装置和存储介质
CN112866023B (zh) 网络检测、模型训练方法、装置、设备及存储介质
Zhao et al. A review of computer vision methods in network security
Zhu et al. Android malware detection based on multi-head squeeze-and-excitation residual network
Abd Alkareem et al. Linguistics for Crimes in the World by AI-Based Cyber Security
KR20190070702A (ko) 텍스트 마이닝 기반 보안 이벤트 자동 검증 시스템 및 방법
CN113536322A (zh) 一种基于对抗神经网络的智能合约可重入漏洞检测方法
CN110162975A (zh) 一种基于近邻传播聚类算法的多步异常点检测方法
CN116827656A (zh) 网络信息安全防护系统及其方法
CN116305119A (zh) 基于预测指导原型的apt恶意软件分类方法和装置
CN113783852B (zh) 一种基于神经网络的智能合约庞氏骗局检测算法
Sujana et al. Temporal based network packet anomaly detection using machine learning
CN116232673A (zh) 隐蔽通道识别方法、装置、计算机设备及存储介质
Mathankar et al. Phishing Website Detection using Machine Learning Techniques
KR101893029B1 (ko) 머신 러닝 기반의 취약점 정보를 분류하는 방법 및 장치
Anand et al. Mitigating Cyber-Security Risks using Cyber-Analytics
Taheri et al. Multi-Source Cyber-Attacks Detection using Machine Learning
Bao et al. Towards Open-Set APT Malware Classification under Few-Shot Setting
CN116933266B (zh) 一种跨链智能合约的污点追踪方法
CN113221110B (zh) 一种基于元学习的远程访问木马智能分析方法
CN118312953A (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