CN110175454B - 一种基于人工智能的智能合约安全漏洞挖掘方法及系统 - Google Patents

一种基于人工智能的智能合约安全漏洞挖掘方法及系统 Download PDF

Info

Publication number
CN110175454B
CN110175454B CN201910317989.1A CN201910317989A CN110175454B CN 110175454 B CN110175454 B CN 110175454B CN 201910317989 A CN201910317989 A CN 201910317989A CN 110175454 B CN110175454 B CN 110175454B
Authority
CN
China
Prior art keywords
deep learning
intelligent contract
module
decision
control flow
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.)
Active
Application number
CN201910317989.1A
Other languages
English (en)
Other versions
CN110175454A (zh
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.)
Han Hou Technology Group Co ltd
Original Assignee
Foshan Fengfeng Technology Co ltd
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 Foshan Fengfeng Technology Co ltd filed Critical Foshan Fengfeng Technology Co ltd
Priority to CN201910317989.1A priority Critical patent/CN110175454B/zh
Publication of CN110175454A publication Critical patent/CN110175454A/zh
Application granted granted Critical
Publication of CN110175454B publication Critical patent/CN110175454B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • 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
    • G06QINFORMATION 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/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Computing Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于人工智能的智能合约安全漏洞挖掘方法及系统,通过提出一种基于人工智能的智能合约安全漏洞挖掘方法,将智能合约的二进制按照智能合约指令集进行反汇编,变成智能合约汇编,再按照智能合约字节码跳转指令将字节码划分成不同模块,然后根据跳转的指令的源和目标代码块生成智能合约字节码的控制流图进行深度学习,可以极大地减少人工干预成本,最大程度地避免其他防御中人工干预出错对安全漏洞检测的疏忽;本公开的技术可以大范围地运用在产业界平台;本公开的技术具有智能学习功能,在发现新型漏洞样本的时候,可以快速学习漏洞样本的特征,从而避免漏洞的大范围扩散。

Description

一种基于人工智能的智能合约安全漏洞挖掘方法及系统
技术领域
本公开涉及人工智能和智能合约领域,具体涉及一种基于人工智能的智能合约安全漏洞挖掘方法,适用于以太坊智能合约的漏洞的发现和预警。
背景技术
区块链作为一种去中心化的共识体系,在诸多领域传统依赖于中心化信任机构的系统中得到了广泛的应用。以太坊作为区块链2.0的开拓者,目前拥有全球最大的区块链开源平台和社区,可提供开发人员编写自己的区块链规则和分布式账本。以太坊把这种技术命名为智能合约。智能合约是运行在区块链上的一段代码,这段代码规定了该区块链上的交易规则,所以在这个链上的节点都必须无条件地遵循这个规则来进行交易。因此,智能合约的编写安全尤为重要,一旦不小心出现逻辑错误和安全漏洞,将有可能导致不可挽回的巨大损失。据此,本公开提供一种基于人工智能算法的根据智能合约字节码(bytecode)做漏洞挖掘的方法,提醒开发人员潜在的风险,使得开发人员有效地规避风险。
因为智能合约是一个新兴领域,目前对于智能合约自动化漏洞检测的方法尚不多。当前对于智能合约的主要是有两类方法:对智能合约的字节码/源代码基于代码静态分析方法(包括基于规则逻辑检测、符号执行、污点追踪等算法)发现安全漏洞,另一种是使用形式化证明的方法对智能合约从数学上通过枚举形式化证明其安全性。
当前的这些针对智能合约检测的方法存在以下几点致命的缺陷,使得他们离真正广泛地部署还要相当远的距离:
对于基于代码静态分析挖掘漏洞的方法,往往需要安全人员手动去定义规则。这些逻辑规则繁多复杂,人手定义很容易出现疏漏,如果出现疏漏,即便是静态分析方法完全正确,也会造成安全漏洞的忽视;
(2)对于基于代码静态分析挖掘漏洞的方法,需要大量的人工手动干预,使得其无法被大规模自动化地使用;
(3)当前形式化证明的方法不能从真正意义上证明一个智能合约的安全,因为根据形式化证明的要求,一个系统被证明是安全的必须它所有的有关联的代码都需要证明,因此如果要用形式化证明,需要把整个以太坊系统从底层到上层的每一行代码进行验证,而且每次改动都需要全盘重新验证,目前这种方法是不现实的;
(4)当前的所有方法都缺乏智能的特性,也就是他们都只能对固定的规则进行检测,不具有进化和学习的功能,遇到新的安全漏洞不懂得重新学习。
发明内容
本公开提供一种基于人工智能的智能合约安全漏洞挖掘方法及系统,通过提出一种基于人工智能的智能合约安全漏洞挖掘方法,从而更智能更自动化保证智能合约的安全。
为了实现上述目的,根据本公开的一方面,提供一种基于人工智能的智能合约安全漏洞挖掘方法,所述方法包括以下步骤:
步骤1,智能合约安全漏洞挖掘系统读取待验证的智能合约的二进制代码;
步骤2,启动字节码控制流图生成模块,将待验证的智能合约的二进制代码作为该模块的输入,字节码控制流图生成模块通过字节码解析器将二进制代码反汇编转换成智能合约字节码转成智能合约字节码;
步骤3,字节码控制流图生成模块按照智能合约字节码跳转指令字节码划分成不同模块,然后根据跳转的指令的源和目标代码块生成有向图,该有向图即为该智能合约字节码的控制流图;
步骤4,启动特征提取模块,将字节码的控制流图作为该模块的输入;
步骤5,特征提取模块将控制流图中每个节点的提取m个特征,假设控制流图总共有n个节点,最终该模块将生成n*m的特征矩阵;
步骤6,启动深度学习决策模块,将n*m特征矩阵作为该模块输入。该模块将矩阵分别输入模块中的深度学习模型中,每个模型给出一个k维向量,k是总共可能漏洞的总数。向量中每个元素为[0,1]中的一个分数,表示该智能合约存在某个特定漏洞的概率;
步骤7,深度学习决策模块统计深度学习的决策概率,并整合成一个总概率,输出给用户,提醒用户可能存在的安全漏洞;
步骤8,启动深度学习可解释性模块对深度学习决策模块所有的深度学习模型做可解释性分析并展示给用户,如果用户觉得某个深度学习模型中某个参数不合理,可以进行手动修改;
步骤9,当用户手动修改后,深度学习可解释性模块记录下用户修改的结果,将结果输入到给深度学习决策模块进行再训练。
进一步地,在步骤1中,所述智能合约安全漏洞挖掘系统包括字节码控制流图(CFG)生成模块、特征提取模块、深度学习决策模块及深度学习可解释性(XAI)模块。
进一步地,在步骤1中,所述待验证的智能合约的二进制代码是通过EVM编译器编译该智能合约的solidity源代码生成的,由用户提供。
进一步地,在步骤2中,所述字节码控制流图生成模块用于将一段智能合约字节码转换成字节码控制流图。因为智能合约的二进制代码和传统意义上的基于指令集的二进制代码(如x86/x64、ARM、MIPS、RISC-V等)有很大的区别,因此该模块需要先调用字节码解析器,将智能合约的二进制按照智能合约指令集进行反汇编,变成智能合约汇编。之后,该模块再按照智能合约字节码跳转指令(如jump、jumpdest)等将字节码划分成不同模块,然后根据跳转的指令的源和目标代码块生成有向图(directed graph),源和目标代码块作为有向图的节点,跳转的指令作为有向图的边,该有向图即为该智能合约字节码的控制流图。
进一步地,在步骤3中,所述智能合约字节码跳转指令包括但不限于jump、jumpdest、jumpi、return,revert、fall to、push1、switch。
进一步地,在步骤4中,所述特征提取模块用于对字节码控制流图提取特征,因为字节码控制流图中每个节点都是一个字节码代码段,含有多个的指令,因此具有相当丰富的信息,即指令数、算数指令数、存储指令数、读取指令数等,该特征提取模块的人物就是需要把这些节选这些丰富的信息作为特征转换成特征向量或特征矩阵,并将这些特征向量和特征举证作为输入传给深度学习决策模块,让深度学习决策模块做出决策。
进一步地,在步骤5中,所述控制流图中每个节点为跳转的指令的源和目标代码块。
进一步地,在步骤5中,所述特征包括但不仅限于指令数、算数指令数、存储指令数、读取指令数等。
进一步地,在步骤6中,所述深度学习决策模块用于通过输入的特征向量或特征矩阵,利用一个或多个深度学习模型结合搜索算法,做出判断结果,指出该智能合约可能有哪些安全漏洞或逻辑错误,深度学习模型包括但不限于循环神经网络、卷积神经网络、图神经网络、深度森林等,多个深度学习模型结合的搜索算法包括但不仅限于多数投票算法或加权平均等等。
进一步地,在步骤7中,所述深度学习的决策概率为各深度学习模型结合搜索算法进行深度学习获得的判断结果,即智能合约存在各深度学习模型相对应的各种特定漏洞的概率。
进一步地,在步骤8中,所述深度学习可解释性模块的主要功能是为了更好地把深度学习决策模块中的深度学习模型的决策过程呈献给用户,并允许用户对其中的决策过程进行调整,调整后的数据会返回到深度学习决策模块再训练,从而使得整个决策过程更透明,决策结果更准确,其中,可解释性算法包括但不限于决策树和随机森林,或可视化决策树。
本发明还提供了一种基于人工智能的智能合约安全漏洞挖掘系统,所述系统包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序运行在智能合约安全漏洞挖掘系统的字节码控制流图生成模块、特征提取模块、深度学习决策模块及深度学习可解释性模块的各自单元中,
其中,字节码控制流图生成模块,包括以下单元:
智能合约反汇编单元,用于读取待验证的智能合约的二进制代码,并通过字节码解析器将二进制代码反汇编转换成智能合约字节码转成智能合约字节码;
控制流图生成单元,用于字节码控制流图生成模块按照智能合约字节码跳转指令字节码划分成不同模块,然后根据跳转的指令的源和目标代码块生成有向图,该有向图即为该智能合约字节码的控制流图;
其中,特征提取模块,包括以下单元:
特征提取单元,用于特征提取模块将控制流图中每个节点的提取m个特征;
其中,深度学习决策模块,包括以下单元:
深度学习单元,用于将n*m特征矩阵作为该模块输入,该模块将矩阵分别输入模块中的深度学习模型中,每个模型给出一个k维向量,k是总共可能漏洞的总数,向量中每个元素为[0,1]中的一个分数,表示该智能合约存在某个特定漏洞的概率;
决策统计输出单元,用于统计深度学习的决策概率,并整合成一个总概率,输出给用户,提醒用户可能存在的安全漏洞;
其中,深度学习可解释性模块,包括以下单元:
可解释性分析单元,用于对深度学习决策模块所有的深度学习模型做可解释性分析并展示给用户,并可以进行手动修改模型的参数;
再训练单元,用于当用户手动修改后,深度学习可解释性模块记录下用户修改的结果,将结果输入到给深度学习决策模块进行再训练。
本公开的有益效果为:本发明提供一种基于人工智能的智能合约安全漏洞挖掘方法及系统,可以极大地减少人工干预成本,最大程度地避免其他防御中人工干预出错对安全漏洞检测的疏忽;本公开的技术可以大范围地运用在产业界平台;本公开的技术具有智能学习功能,在发现新型漏洞样本的时候,可以快速学习漏洞样本的特征,从而避免漏洞的大范围扩散。
附图说明
通过对结合附图所示出的实施方式进行详细说明,本公开的上述以及其他特征将更加明显,本公开附图中相同的参考标号表示相同或相似的元素,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,在附图中:
图1所示为一种基于人工智能的智能合约安全漏洞挖掘方法的流程图;
图2所示为一种基于人工智能的智能合约安全漏洞挖掘系统图。
具体实施方式
以下将结合实施例和附图对本公开的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本公开的目的、方案和效果。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
如图1所示为根据本公开的一种基于人工智能的智能合约安全漏洞挖掘方法的流程图,下面结合图1来阐述根据本公开的实施方式的一种基于人工智能的智能合约安全漏洞挖掘方法。
本公开提出一种基于人工智能的智能合约安全漏洞挖掘方法,具体包括以下步骤:
步骤1,智能合约安全漏洞挖掘系统读取待验证的智能合约的二进制代码;
步骤2,启动字节码控制流图生成模块,将待验证的智能合约的二进制代码作为该模块的输入,字节码控制流图生成模块通过字节码解析器将二进制代码反汇编转换成智能合约字节码转成智能合约字节码;
步骤3,字节码控制流图生成模块按照智能合约字节码跳转指令字节码划分成不同模块,然后根据跳转的指令的源和目标代码块生成有向图,该有向图即为该智能合约字节码的控制流图;
步骤4,启动特征提取模块,将字节码的控制流图作为该模块的输入;
步骤5,特征提取模块将控制流图中每个节点的提取m个特征,假设控制流图总共有n个节点,最终该模块将生成n*m的特征矩阵;
步骤6,启动深度学习决策模块,将n*m特征矩阵作为该模块输入。该模块将矩阵分别输入模块中的深度学习模型中,每个模型给出一个k维向量,k是总共可能漏洞的总数。向量中每个元素为[0,1]中的一个分数,表示该智能合约存在某个特定漏洞的概率;
步骤7,深度学习决策模块统计深度学习的决策概率,并整合成一个总概率,输出给用户,提醒用户可能存在的安全漏洞;
步骤8,启动深度学习可解释性模块对深度学习决策模块所有的深度学习模型做可解释性分析并展示给用户,如果用户觉得某个深度学习模型中某个参数不合理,可以进行手动修改;
步骤9,当用户手动修改后,深度学习可解释性模块记录下用户修改的结果,将结果输入到给深度学习决策模块进行再训练。
进一步地,在步骤1中,所述智能合约安全漏洞挖掘系统包括字节码控制流图(CFG)生成模块、特征提取模块、深度学习决策模块及深度学习可解释性(XAI)模块。
进一步地,在步骤1中,所述待验证的智能合约的二进制代码是通过EVM编译器编译该智能合约的solidity源代码生成的,由用户提供。
进一步地,在步骤2中,所述字节码控制流图生成模块用于将一段智能合约字节码转换成字节码控制流图。因为智能合约的二进制代码和传统意义上的基于指令集的二进制代码(如x86/x64、ARM、MIPS、RISC-V等)有很大的区别,因此该模块需要先调用字节码解析器,将智能合约的二进制按照智能合约指令集进行反汇编,变成智能合约汇编。之后,该模块再按照智能合约字节码跳转指令(如jump、jumpdest)等将字节码划分成不同模块,然后根据跳转的指令的源和目标代码块生成有向图(directed graph),源和目标代码块作为有向图的节点,跳转的指令作为有向图的边,该有向图即为该智能合约字节码的控制流图。
进一步地,在步骤3中,所述智能合约字节码跳转指令包括但不限于jump、jumpdest、jumpi、return,revert、fall to、push1、switch。
进一步地,在步骤4中,所述特征提取模块用于对字节码控制流图提取特征,因为字节码控制流图中每个节点都是一个字节码代码段,含有多个的指令,因此具有相当丰富的信息,即指令数、算数指令数、存储指令数、读取指令数等,该特征提取模块的人物就是需要把这些节选这些丰富的信息作为特征转换成特征向量或特征矩阵,并将这些特征向量和特征举证作为输入传给深度学习决策模块,让深度学习决策模块做出决策。
进一步地,在步骤5中,所述控制流图中每个节点为跳转的指令的源和目标代码块。
进一步地,在步骤5中,所述特征包括但不仅限于指令数、算数指令数、存储指令数、读取指令数等。
进一步地,在步骤6中,所述深度学习决策模块用于通过输入的特征向量或特征矩阵,利用一个或多个深度学习模型结合搜索算法,做出判断结果,指出该智能合约可能有哪些安全漏洞或逻辑错误,深度学习模型包括但不限于循环神经网络、卷积神经网络、图神经网络、深度森林等,多个深度学习模型结合的搜索算法包括但不仅限于多数投票算法或加权平均等等。
进一步地,在步骤7中,所述深度学习的决策概率为各深度学习模型结合搜索算法进行深度学习获得的判断结果,即智能合约存在各深度学习模型相对应的各种特定漏洞的概率。
进一步地,在步骤8中,所述深度学习可解释性模块的主要功能是为了更好地把深度学习决策模块中的深度学习模型的决策过程呈献给用户,并允许用户对其中的决策过程进行调整,调整后的数据会返回到深度学习决策模块再训练,从而使得整个决策过程更透明,决策结果更准确,其中,可解释性算法包括但不限于决策树和随机森林,或可视化决策树。
本实施给出一个具体实施例,阐述该方法如该方法如何完成一次漏洞的查询
实施例,某开发人员用solidity语言写了一个转帐的智能合约,里面包含有如下主要的功能性语句:
mapping(address=>uint)balances;
Function withdraw(){
uint amount=balances[msg.sender];
msg.sender.call.value(amount);
balances[msg.sender]=0;};
其中,withdraw函数主要的规定了该区块链转帐的规则。
根据代码的逻辑,一个钱包中的钱会先转帐到一个目标地址(msg.sender.call.value(amount);)然后该智能合约才会将钱包的余额清空,这是一个严重的逻辑错误,该逻辑漏洞称之为重入漏洞(re-entrancy)。
根据上述的逻辑错误,一个恶意攻击者可以写一个恶意的智能合约交易协议,协议对于转账语句进行重写,在call.value()函数中重复调用withdraw函数,这样做就会导致攻击者可以不停地从钱包里面转账,但合约却不知道钱包中的余额已经为0(因为(balances[msg.sender]=0;语句永远不会被执行)。造成巨额损失。
本公开所提的方法以下步骤可有效防止该漏洞的触发。
S1,在该段代码被转换成字节码之后,字节码控制流图生成模块将withdraw函数生成为一个拥有两个节点的控制流图。第一个节点包括uint amount=balances[msg.sender];和balances[msg.sender]=0;语句的字节码,第二个节点msg.sender.call.value(amount);的字节码;
S2,特征提取模块对于两个节点分别提取n个特征,并生成2*n维向量;
S3,深度学习决策模块检查所生成的2*n维向量,其中的循环神经网络模型(RNN)发现msg.sender.call.value(amount);所对应的字节码永远都在balances[msg.sender]=0;所对应的字节码之前,因此RNN模型会输出决策,指出该智能合约可能有很大的概率会产生重入漏洞并警告开发人员;
S4,开发人员根据相关警告,将msg.sender.call.value(amount);balances[msg.sender]=0;这两句语句顺序调换,从而修复漏洞。
本公开的实施例提供的一种基于人工智能的智能合约安全漏洞挖掘系统,如图2所示为本公开的一种基于人工智能的智能合约安全漏洞挖掘系统图,该实施例的一种基于人工智能的智能合约安全漏洞挖掘系统包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序运行在智能合约安全漏洞挖掘系统的字节码控制流图生成模块、特征提取模块、深度学习决策模块及深度学习可解释性模块的各自单元中,
其中,字节码控制流图生成模块,包括以下单元:
智能合约反汇编单元,用于读取待验证的智能合约的二进制代码,并通过字节码解析器将二进制代码反汇编转换成智能合约字节码转成智能合约字节码;
控制流图生成单元,用于字节码控制流图生成模块按照智能合约字节码跳转指令字节码划分成不同模块,然后根据跳转的指令的源和目标代码块生成有向图,该有向图即为该智能合约字节码的控制流图;
其中,特征提取模块,包括以下单元:
特征提取单元,用于特征提取模块将控制流图中每个节点的提取m个特征;
其中,深度学习决策模块,包括以下单元:
深度学习单元,用于将n*m特征矩阵作为该模块输入,该模块将矩阵分别输入模块中的深度学习模型中,每个模型给出一个k维向量,k是总共可能漏洞的总数,向量中每个元素为[0,1]中的一个分数,表示该智能合约存在某个特定漏洞的概率;
决策统计输出单元,用于统计深度学习的决策概率,并整合成一个总概率,输出给用户,提醒用户可能存在的安全漏洞;
其中,深度学习可解释性模块,包括以下单元:
可解释性分析单元,用于对深度学习决策模块所有的深度学习模型做可解释性分析并展示给用户,并可以进行手动修改模型的参数;
再训练单元,用于当用户手动修改后,深度学习可解释性模块记录下用户修改的结果,将结果输入到给深度学习决策模块进行再训练。
所述一种基于人工智能的智能合约安全漏洞挖掘系统可以运行于桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备中。所述一种基于人工智能的智能合约安全漏洞挖掘系统,可运行的系统可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述例子仅仅是一种基于人工智能的智能合约安全漏洞挖掘系统的示例,并不构成对一种基于人工智能的智能合约安全漏洞挖掘系统的限定,可以包括比例子更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述一种基于人工智能的智能合约安全漏洞挖掘系统还可以包括输入输出设备、网络接入设备、总线等。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述一种基于人工智能的智能合约安全漏洞挖掘系统运行系统的控制中心,利用各种接口和线路连接整个一种基于人工智能的智能合约安全漏洞挖掘系统可运行系统的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述一种基于人工智能的智能合约安全漏洞挖掘系统的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
尽管本公开的描述已经相当详尽且特别对几个所述实施例进行了描述,但其并非旨在局限于任何这些细节或实施例或任何特殊实施例,而是应当将其视作是通过参考所附权利要求考虑到现有技术为这些权利要求提供广义的可能性解释,从而有效地涵盖本公开的预定范围。此外,上文以发明人可预见的实施例对本公开进行描述,其目的是为了提供有用的描述,而那些目前尚未预见的对本公开的非实质性改动仍可代表本公开的等效改动。

Claims (6)

1.一种基于人工智能的智能合约安全漏洞挖掘方法,其特征在于,所述方法包括以下步骤:
步骤1,智能合约安全漏洞挖掘系统读取待验证的智能合约的二进制代码;
步骤2,启动字节码控制流图生成模块,将待验证的智能合约的二进制代码作为该模块的输入,字节码控制流图生成模块通过字节码解析器将二进制代码反汇编转换成智能合约字节码;
步骤3,字节码控制流图生成模块按照智能合约字节码跳转指令字节码划分成不同模块,然后根据跳转的指令的源和目标代码块生成有向图,该有向图即为该智能合约字节码的控制流图;
步骤4,启动特征提取模块,将字节码的控制流图作为该模块的输入;
步骤5,特征提取模块将控制流图中每个节点的提取m个特征;
步骤6,启动深度学习决策模块,将n*m特征矩阵作为该模块输入,该模块将矩阵分别输入模块中的深度学习模型中,每个模型给出一个k维向量,k是总共可能漏洞的总数,向量中每个元素为[0,1]中的一个分数,表示该智能合约存在某个特定漏洞的概率;
步骤7,深度学习决策模块统计深度学习的决策概率,并整合成一个总概率,输出给用户,提醒用户可能存在的安全漏洞;
步骤8,启动深度学习可解释性模块对深度学习决策模块所有的深度学习模型做可解释性分析并展示给用户,并可以进行手动修改模型的参数;
步骤9,当用户手动修改后,深度学习可解释性模块记录下用户修改的结果,将结果输入到给深度学习决策模块进行再训练;
在步骤2中,所述字节码控制流图生成模块用于将一段智能合约字节码转换成字节码控制流图,调用字节码解析器,将智能合约的二进制按照智能合约指令集进行反汇编,变成智能合约汇编,按照智能合约字节码跳转指令将字节码划分成不同模块,然后根据跳转的指令的源和目标代码块生成有向图,该有向图即为该智能合约字节码的控制流图;
在步骤6中,所述深度学习决策模块用于通过输入的特征向量或特征矩阵,利用一个或多个深度学习模型结合搜索算法,做出判断结果,指出该智能合约可能有哪些安全漏洞或逻辑错误,深度学习模型包括但不限于循环神经网络、卷积神经网络、图神经网络、深度森林等,多个深度学习模型结合的搜索算法包括但不仅限于多数投票算法或加权平均;
在步骤8中,所述深度学习可解释性模块的主要功能是为了更好地把深度学习决策模块中的深度学习模型的决策过程呈献给用户,并允许用户对其中的决策过程进行调整,调整后的数据会返回到深度学习决策模块再训练,从而使得整个决策过程更透明,决策结果更准确,其中,可解释性算法包括但不限于决策树和随机森林。
2.根据权利要求1所述的一种基于人工智能的智能合约安全漏洞挖掘方法,其特征在于,在步骤1中,所述智能合约安全漏洞挖掘系统包括字节码控制流图生成模块、特征提取模块、深度学习决策模块及深度学习可解释性模块。
3.根据权利要求1所述的一种基于人工智能的智能合约安全漏洞挖掘方法,其特征在于,在步骤1中,所述待验证的智能合约的二进制代码是通过EVM编译器编译该智能合约的solidity源代码生成。
4.根据权利要求1所述的一种基于人工智能的智能合约安全漏洞挖掘方法,其特征在于,在步骤4中,所述特征提取模块用于对字节码控制流图提取特征,因为字节码控制流图中每个节点都是一个字节码代码段,含有多个的指令,因此具有相当丰富的信息,即指令数、算数指令数、存储指令数、读取指令数等,该特征提取模块的任务就是需要把这些节选这些丰富的信息作为特征转换成特征向量或特征矩阵,并将这些特征向量和特征矩阵作为输入传给深度学习决策模块,让深度学习决策模块做出决策。
5.根据权利要求1所述的一种基于人工智能的智能合约安全漏洞挖掘方法,其特征在于,在步骤5中,所述特征包括但不仅限于指令数、算数指令数、存储指令数、读取指令数。
6.一种基于人工智能的智能合约安全漏洞挖掘系统,其特征在于,所述系统包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序运行在智能合约安全漏洞挖掘系统的字节码控制流图生成模块、特征提取模块、深度学习决策模块及深度学习可解释性模块的各自单元中,
其中,字节码控制流图生成模块,包括以下单元:
智能合约反汇编单元,用于读取待验证的智能合约的二进制代码,并通过字节码解析器将二进制代码反汇编转换成智能合约字节码转成智能合约字节码;
控制流图生成单元,用于字节码控制流图生成模块按照智能合约字节码跳转指令字节码划分成不同模块,然后根据跳转的指令的源和目标代码块生成有向图,该有向图即为该智能合约字节码的控制流图;
其中,特征提取模块,包括以下单元:
特征提取单元,用于特征提取模块将控制流图中每个节点的提取m个特征;
其中,深度学习决策模块,包括以下单元:
深度学习单元,用于将n*m特征矩阵作为该模块输入,该模块将矩阵分别输入模块中的深度学习模型中,每个模型给出一个k维向量,k是总共可能漏洞的总数,向量中每个元素为[0,1]中的一个分数,表示该智能合约存在某个特定漏洞的概率;
决策统计输出单元,用于统计深度学习的决策概率,并整合成一个总概率,输出给用户,提醒用户可能存在的安全漏洞;
其中,深度学习可解释性模块,包括以下单元:
可解释性分析单元,用于对深度学习决策模块所有的深度学习模型做可解释性分析并展示给用户,并可以进行手动修改模型的参数;
再训练单元,用于当用户手动修改后,深度学习可解释性模块记录下用户修改的结果,将结果输入到给深度学习决策模块进行再训练;
所述字节码控制流图生成模块用于将一段智能合约字节码转换成字节码控制流图,调用字节码解析器,将智能合约的二进制按照智能合约指令集进行反汇编,变成智能合约汇编,按照智能合约字节码跳转指令将字节码划分成不同模块,然后根据跳转的指令的源和目标代码块生成有向图,该有向图即为该智能合约字节码的控制流图;
所述深度学习决策模块用于通过输入的特征向量或特征矩阵,利用一个或多个深度学习模型结合搜索算法,做出判断结果,指出该智能合约可能有哪些安全漏洞或逻辑错误,深度学习模型包括但不限于循环神经网络、卷积神经网络、图神经网络、深度森林等,多个深度学习模型结合的搜索算法包括但不仅限于多数投票算法或加权平均;
所述深度学习可解释性模块的主要功能是为了更好地把深度学习决策模块中的深度学习模型的决策过程呈献给用户,并允许用户对其中的决策过程进行调整,调整后的数据会返回到深度学习决策模块再训练,从而使得整个决策过程更透明,决策结果更准确,其中,可解释性算法包括但不限于决策树和随机森林。
CN201910317989.1A 2019-04-19 2019-04-19 一种基于人工智能的智能合约安全漏洞挖掘方法及系统 Active CN110175454B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910317989.1A CN110175454B (zh) 2019-04-19 2019-04-19 一种基于人工智能的智能合约安全漏洞挖掘方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910317989.1A CN110175454B (zh) 2019-04-19 2019-04-19 一种基于人工智能的智能合约安全漏洞挖掘方法及系统

Publications (2)

Publication Number Publication Date
CN110175454A CN110175454A (zh) 2019-08-27
CN110175454B true CN110175454B (zh) 2021-03-26

Family

ID=67689747

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910317989.1A Active CN110175454B (zh) 2019-04-19 2019-04-19 一种基于人工智能的智能合约安全漏洞挖掘方法及系统

Country Status (1)

Country Link
CN (1) CN110175454B (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10783082B2 (en) 2019-08-30 2020-09-22 Alibaba Group Holding Limited Deploying a smart contract
CN110675256B (zh) * 2019-08-30 2020-08-21 阿里巴巴集团控股有限公司 部署和执行智能合约的方法及装置
CN110569033B (zh) * 2019-09-12 2022-11-01 北京工商大学 一种数字化交易类智能合约基础代码生成方法
CN110737899B (zh) * 2019-09-24 2022-09-06 暨南大学 一种基于机器学习的智能合约安全漏洞检测方法
CN110674503B (zh) * 2019-09-24 2021-06-15 杭州云象网络技术有限公司 一种基于图卷积神经网络的智能合约死循环检测方法
CN110807195B (zh) * 2019-09-26 2023-08-25 图灵人工智能研究院(南京)有限公司 一种智能合约的发布方法、发布平台装置及发布系统
CN110866255B (zh) * 2019-11-07 2022-04-12 博雅正链(北京)科技有限公司 一种智能合约漏洞检测方法
CN111125697B (zh) * 2019-11-14 2022-03-04 北京理工大学 基于缺陷摘要的智能合约缺陷可触发性检测方法及系统
CN111062038B (zh) * 2019-11-23 2022-06-24 同济大学 一种基于状态空间的智能合约形式化验证系统及方法
CN111125716B (zh) * 2019-12-19 2022-05-31 中国人民大学 一种以太坊智能合约漏洞检测方法及装置
CN111274134B (zh) * 2020-01-17 2023-07-11 扬州大学 基于图神经网络的漏洞识别与预测方法、系统、计算机设备和存储介质
CN111310191B (zh) * 2020-02-12 2022-12-23 广州大学 一种基于深度学习的区块链智能合约漏洞检测方法
CN111488582B (zh) * 2020-04-01 2023-09-29 杭州云象网络技术有限公司 一种基于图神经网络的智能合约重入性漏洞检测的方法
CN111680271A (zh) * 2020-06-02 2020-09-18 浙江大学 基于智能合约字节码特征的合约代码混淆平台和混淆方法
CN111783100B (zh) * 2020-06-22 2022-05-17 哈尔滨工业大学 基于图卷积网络对代码图表示学习的源代码漏洞检测方法
CN112035841B (zh) * 2020-08-17 2024-05-14 杭州云象网络技术有限公司 一种基于专家规则与序列化建模的智能合约漏洞检测方法
CN112131587B (zh) * 2020-09-21 2024-07-12 杭州云象网络技术有限公司 一种智能合约伪随机数安全检验方法、系统、介质和装置
CN112711760B (zh) * 2020-12-29 2022-11-29 华南师范大学 检测智能合约恶意消除重入影响漏洞的检测方法和装置
CN112749389B (zh) * 2020-12-29 2023-03-14 华南师范大学 一种检测智能合约破坏敏感数据漏洞的检测方法及装置
CN112631611B (zh) * 2021-01-06 2022-06-03 中山大学 一种智能庞氏骗局合约识别方法及装置
CN113051574B (zh) * 2021-03-11 2023-03-21 哈尔滨工程大学 一种智能合约二进制代码的漏洞检测方法
CN113449303B (zh) * 2021-06-28 2022-11-11 杭州云象网络技术有限公司 基于教师-学生网络模型的智能合约漏洞检测方法和系统
CN113626827A (zh) * 2021-07-29 2021-11-09 西安电子科技大学 一种智能合约漏洞检测方法、系统、设备、介质、终端
CN113904844B (zh) * 2021-10-08 2023-09-12 浙江工商大学 基于跨模态教师-学生网络的智能合约漏洞检测方法
CN113688402A (zh) * 2021-10-26 2021-11-23 江苏通付盾科技有限公司 一种智能合约漏洞挖掘方法及装置
CN114385185B (zh) * 2021-12-24 2024-09-06 深圳前海微众银行股份有限公司 一种智能合约的控制流图生成方法及装置
CN114297665A (zh) * 2021-12-31 2022-04-08 杭州趣链科技有限公司 基于深度学习的智能合约漏洞检测方法和装置
US11928438B1 (en) 2023-07-07 2024-03-12 Northern Trust Corporation Computing technologies for large language models

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10181948B1 (en) * 2018-01-25 2019-01-15 Fortress Cyber Security, LLC Secure storage of hashes within a distributed ledger

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108073513A (zh) * 2017-04-21 2018-05-25 富士通株式会社 对基于区块链的智能合约进行测试的装置和方法
US20180315055A1 (en) * 2017-05-01 2018-11-01 International Business Machines Corporation Blockchain For Issue/Defect Tracking System
CN107423565A (zh) * 2017-07-26 2017-12-01 中山大学 一种基于智能合约技术的医疗抢救合约方法
CN107844704B (zh) * 2017-11-01 2019-12-31 浪潮集团有限公司 一种基于区块链可信智能合约加固方法
CN108108622B (zh) * 2017-12-13 2021-03-16 上海交通大学 基于深度卷积网络和控制流图的漏洞检测系统
CN108256337B (zh) * 2018-02-26 2020-07-17 北京阿尔山区块链联盟科技有限公司 智能合约漏洞检测方法、装置及电子设备
CN108647520B (zh) * 2018-05-15 2020-05-29 浙江大学 一种基于脆弱性学习的智能模糊测试方法与系统
CN108985066B (zh) * 2018-05-25 2021-09-28 北京金山安全软件有限公司 一种智能合约安全漏洞检测方法、装置、终端及存储介质
CN109063477B (zh) * 2018-07-18 2021-04-20 成都链安科技有限公司 一种自动化的智能合约代码缺陷检测系统和方法
CN109492402A (zh) * 2018-10-25 2019-03-19 杭州趣链科技有限公司 一种基于规则引擎的智能合约安全评测方法
CN109460663A (zh) * 2018-11-12 2019-03-12 北京知道创宇信息技术有限公司 一种智能合约审计方法、装置及其存储介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10181948B1 (en) * 2018-01-25 2019-01-15 Fortress Cyber Security, LLC Secure storage of hashes within a distributed ledger

Also Published As

Publication number Publication date
CN110175454A (zh) 2019-08-27

Similar Documents

Publication Publication Date Title
CN110175454B (zh) 一种基于人工智能的智能合约安全漏洞挖掘方法及系统
US20230154176A1 (en) Analyzing data using a hierarchical structure
Raff et al. Malware detection by eating a whole exe
CN110287702B (zh) 一种二进制漏洞克隆检测方法及装置
Zhang et al. A study of effectiveness of deep learning in locating real faults
CN113672515B (zh) 一种基于符号执行的wasm智能合约漏洞检测方法
KR101963756B1 (ko) 소프트웨어 취약점 예측 모델 학습 장치 및 방법, 소프트웨어 취약점 분석 장치 및 방법
US10970449B2 (en) Learning framework for software-hardware model generation and verification
CN111092894A (zh) 一种基于增量学习的webshell检测方法、终端设备及存储介质
CN112989363B (zh) 漏洞定位方法、装置、电子设备和存储介质
CN115758388A (zh) 一种基于低维字节码特征的智能合约的漏洞检测方法
KR102327026B1 (ko) Gcn 기반의 어셈블리 코드 학습 장치 및 방법과 이를 이용한 보안 약점 탐지 장치 및 방법
Wei et al. Toward identifying APT malware through API system calls
Poorhadi et al. Analysing the impact of security attacks on safety using SysML and event-B
US10169190B2 (en) Call trace generation via behavior computation
Pranav et al. Detection of botnets in IoT networks using graph theory and machine learning
US7996798B2 (en) Representing binary code as a circuit
KR102671575B1 (ko) 교차 아키텍처 바이너리에 대한 이진 비교 방법
Pandey et al. Evading malware classifiers using RL agent with action-mask
US20240354424A1 (en) System and methods for unbiased transformer source code vulnerability learning with semantic code graph
CN116578979B (zh) 一种基于代码特征的跨平台二进制代码匹配方法及系统
Zurowska et al. A customizable execution engine for models of embedded systems
US20230205882A1 (en) Detecting malicious queries using syntax metrics
CN112434294A (zh) 一种恶意代码检测方法、终端设备及存储介质
Marcos Tolerance to Complexity: Automatic Prioritisation of Testing on Large Scale and Distributed Software Development Projects

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
TA01 Transfer of patent application right

Effective date of registration: 20210218

Address after: 511, Block E, National Torch Innovation and entrepreneurship Park, No. 13, Huabao South Road, Zhangcha street, Chancheng District, Foshan City, Guangdong Province

Applicant after: Foshan Fengfeng Technology Co.,Ltd.

Address before: 528000 room 505, building 1, No. 6, Haisan Road, Guicheng Street, Nanhai District, Foshan City, Guangdong Province

Applicant before: Xiao Yinhao

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20230927

Address after: Room 15, 8th Floor, Building 4, Zone 4, No. 186 South Fourth Ring West Road, Fengtai District, Beijing, 100071

Patentee after: Han Hou Technology Group Co.,Ltd.

Address before: 511, Block E, National Torch Innovation and entrepreneurship Park, No. 13, Huabao South Road, Zhangcha street, Chancheng District, Foshan City, Guangdong Province

Patentee before: Foshan Fengfeng Technology Co.,Ltd.

TR01 Transfer of patent right