CN110399730A - 智能合约漏洞的检查方法、系统及介质 - Google Patents
智能合约漏洞的检查方法、系统及介质 Download PDFInfo
- Publication number
- CN110399730A CN110399730A CN201910672086.5A CN201910672086A CN110399730A CN 110399730 A CN110399730 A CN 110399730A CN 201910672086 A CN201910672086 A CN 201910672086A CN 110399730 A CN110399730 A CN 110399730A
- Authority
- CN
- China
- Prior art keywords
- transaction
- stain
- reward
- function
- transaction sequence
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种智能合约漏洞的检查方法、系统和介质,包括:Solidity程序静态污点分析步骤:从语法上分析Solidity程序的源代码,针对Solidity程序的源代码中的每个函数,遍历所有可能的执行流程,形成控制流程图,再标记所有可能的污点数据,获得并存储污点分析结果;State矩阵生成步骤:生成交易序列,再进行交易序列的重组,生成重组后的交易序列,再根据获得的污点分析结果,获得State矩阵。本发明结合了深度学习和模糊测试,利用深度强化学习模型与污点分析优化了模糊测试技术,大大提升了模糊测试的覆盖率与效率。本发明实现了一个高覆盖率、高效率与低误判率兼具的智能合约漏洞检测技术。
Description
技术领域
本发明涉及以太坊智能合约安全技术领域,具体地,涉及智能合约漏洞的检查方法、系统及介质。尤其地,涉及基于深度强化学习与模糊测试技术的智能合约漏洞检测方法。进一步地,涉及一种基于深度强化学习(Deep Q-Learning)与模糊测试技术(fuzzing)的智能合约漏洞检测方法。
背景技术
近年来,随着区块链成为全球市场上一个炙手可热的话题,越来越多的黑客将目光锁定在区块链的安全漏洞上。以太坊作为目前市值第二的区块链平台,它支持虚拟机中的智能合约在交易到达时执行一串预先配置规则的代码。而攻击者们正是通过攻击智能合约代码中存在的漏洞,非法获得数目巨大的以太币,对区块链市场造成严重危害。以区块链业界最大的众筹项目The DAO为例,黑客通过攻击漏洞转移了约360万以太币,直接导致了以太坊的硬分叉和市值的暴跌。
安全研究人员对智能合约代码存在的漏洞进行了分析,分为了两个层面的研究方向。第一个层面,即漏洞,是已被黑客攻击造成巨大损失或被白帽子发现的可能引发损失的代码问题,例如整形溢出漏洞、重入漏洞、时间戳依赖性漏洞等,是静态的代码问题;第二个层面,即利用程序(exploit),是一段通过触发一个漏洞(或者几个漏洞)进而达成某种目的的代码。例如存在调用路径使得某账户能获得非法盈利或者某账户能越过特权执行合约析构等危险操作,是动态的攻击载核分析。针对以上两个角度的研究,分别进行训练:使用模糊测试生成交易组,调用EVM虚拟执行交易组,输出测试日志供DQN神经网络处理反馈给模糊测试器更新交易组,该闭环循环执行直到测试到触发漏洞,然后根据日志进行测试结果生成。
智能合约漏洞检测方法已有学者或企业进行了一定的研究。Bo Jiang等人设计了一套基于fuzz的智能合约审计工具Contract Fuzzer,此工具发现漏洞的准确率较高,但由于预先设置的测试准则有限,它能够找到的漏洞数量较少。Johannes Krupp等人开发的一款审计工具teEther能够在给定二进制字节码的情况下进行智能合约的自动漏洞识别和漏洞利用,但审计速度和误报率还有待加强。
目前没有发现同本发明类似技术的说明或报道,也尚未收集到国内外类似的资料。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种智能合约漏洞的检查方法、系统及介质。
根据本发明提供的一种智能合约漏洞的检查方法,包括:
Solidity程序静态污点分析步骤:从语法上分析Solidity程序的源代码,针对Solidity程序的源代码中的每个函数,遍历所有可能的执行流程,形成控制流程图,再标记所有可能的污点数据,获得并存储污点分析结果;
State矩阵生成步骤:生成交易序列,再进行交易序列的重组,生成重组后的交易序列,再根据获得的污点分析结果,获得State矩阵;
智能合约漏洞检测步骤:使用模糊测试技术,输入State矩阵,获得奖励Reward并输入到神经网络,神经网络根据当前记忆选择触发奖励的机会最大的动作Action,根据该动作Action对当前state矩阵进行更新,生成检测漏洞效率更高的模糊测试的输入交易序列样本,对智能合约进行检测以发现智能合约错误。
优选地,所述Solidity程序静态污点分析步骤:
所述标记所有可能的污点数据:
将源代码中的状态变量、和函数传入参数以及Solidity内置变量归入污点类变量,遍历一次控制流程图,将被污点类变量修改过的变量归入污点类;
所述存储污点分析结果:
针对每个函数生成json格式字典来存储污点分析结果。
优选地,所述State矩阵生成步骤包括:
所述生成交易序列包括:
合约源码经过ABI解析后从中间挑选一个可调用的非静态函数;
为非静态函数生成列参数,即从种子seed集合中随机抽取一个种子seed生成参数;
生成交易的发送方和交易价值value;
根据获得的非静态函数、生成的列参数、生成的交易的发送方以及交易价值value,生成交易序列;
所述进行交易序列的重组指:
指替换交易序列中某个交易调用的函数、函数传入的参数、交易的交易价值和发送方,形成一个新的交易序列;
所述State矩阵包括:
生成的重组的交易序列、交易调用的函数的污点分析结果。
优选地,所述智能合约漏洞检测步骤:
所述奖励Reward与检查出错误所用的输入次数的数学期望有关,期望越大,奖励Reward越小,反之则越大;
所述触发奖励的机会指:
对一个合约进行多次错误检查后,尝试次数的数学期望越多,触发奖励的机会越小;
所述动作Action包括:
交易函数的改变、参数替换、发送方替换以及交易额替换。
优选地,所述智能合约漏洞检测步骤:
所述获得奖励Reward指:
将生成的重组后的交易序列放入以太坊智能合约虚拟机EVM中执行,获得交易执行反馈信息,再根据污点分析结果获得漏洞检测信息,根据交易执行反馈信息和漏洞检测信息获得奖励Reward;
所述对智能合约进行检测以发现智能合约错误:
若检查出错误,则终止;若未检查出错误,则判断检测次数是否达到预设的模糊测试尝试次数上限:若是,则检测结束;否则,则继续检测。
根据本发明提供的一种智能合约漏洞的检查系统,包括:
Solidity程序静态污点分析模块:从语法上分析Solidity程序的源代码,针对Solidity程序的源代码中的每个函数,遍历所有可能的执行流程,形成控制流程图,再标记所有可能的污点数据,获得并存储污点分析结果;
State矩阵生成模块:生成交易序列,再进行交易序列的重组,生成重组后的交易序列,再根据获得的污点分析结果,获得State矩阵;
智能合约漏洞检测模块:使用模糊测试技术,输入State矩阵,获得奖励Reward并输入到神经网络,神经网络根据当前记忆选择触发奖励的机会最大的动作Action,根据该动作Action对当前state矩阵进行更新,生成检测漏洞效率更高的模糊测试的输入交易序列样本,对智能合约进行检测以发现智能合约错误。
优选地,所述Solidity程序静态污点分析模块:
所述标记所有可能的污点数据:
将源代码中的状态变量、和函数传入参数以及Solidity内置变量归入污点类变量,遍历一次控制流程图,将被污点类变量修改过的变量归入污点类;
所述存储污点分析结果:
针对每个函数生成json格式字典来存储污点分析结果。
优选地,所述State矩阵生成模块包括:
所述生成交易序列包括:
合约源码经过ABI解析后从中间挑选一个可调用的非静态函数;
为非静态函数生成列参数,即从种子seed集合中随机抽取一个种子seed生成参数;
生成交易的发送方和交易价值value;
根据获得的非静态函数、生成的列参数、生成的交易的发送方以及交易价值value,生成交易序列;
所述进行交易序列的重组指:
指替换交易序列中某个交易调用的函数、函数传入的参数、交易的交易价值和发送方,形成一个新的交易序列;
所述State矩阵包括:
生成的重组的交易序列、交易调用的函数的污点分析结果。
优选地,所述智能合约漏洞检测模块:
所述奖励Reward与检查出错误所用的输入次数的数学期望有关,期望越大,奖励Reward越小,反之则越大;
所述触发奖励的机会指:
对一个合约进行多次错误检查后,尝试次数的数学期望越多,触发奖励的机会越小;
所述动作Action包括:
交易函数的改变、参数替换、发送方替换以及交易额替换;
所述智能合约漏洞检测模块:
所述获得奖励Reward指:
将生成的重组后的交易序列放入以太坊智能合约虚拟机EVM中执行,获得交易执行反馈信息,再根据污点分析结果获得漏洞检测信息,根据交易执行反馈信息和漏洞检测信息获得奖励Reward;
所述对智能合约进行检测以发现智能合约错误:
若检查出错误,则终止;若未检查出错误,则判断检测次数是否达到预设的模糊测试尝试次数上限:若是,则检测结束;否则,则继续检测。
根据本发明提供的一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现上述中任一项所述的智能合约漏洞的检查系统的模块。
与现有技术相比,本发明具有如下的有益效果:
1、本发明相比于动态符号执行或形式化证明的检测方法,本发明对于智能合约的漏洞有优良的检测能力,且有着更低的误报率和更快的检测速度;
2、本发明相比于使用传统的模糊测试的检测方法,本发明使用污点分析提取代码静态信息,并使用深度强化学习模型,通过在神经网络中的学习,大大减少了传统模糊测试中无意义的试错,保证了每次的输入尝试都是有一定倾向的,大幅降低了检错时间,增强了检错能力。
3、本发明相比于一些现有的适用于区块链的模糊测试对智能合约漏洞的检测,本发明无需将被测合约部署在私有链或者公有链上,减小了操作难度和对环境的依赖。
4、本发明从生成输入所产生的结果是否发生错误来反推合约的漏洞,大大提高了检错的准确率。
5本发明结合了深度学习和模糊测试,利用深度强化学习模型与污点分析优化了模糊测试技术,大大提升了模糊测试的覆盖率与效率,实现了一个高覆盖率、高效率与低误判率兼具的智能合约漏洞检测技术。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明提供的一实施例的系统总体架构示意图。
图2为本发明提供的State Dictionary组成示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
根据本发明提供的一种智能合约漏洞的检查方法,包括:
Solidity程序静态污点分析步骤:从语法上分析Solidity程序的源代码,针对Solidity程序的源代码中的每个函数,遍历所有可能的执行流程,形成控制流程图,再标记所有可能的污点数据,获得并存储污点分析结果;
State矩阵生成步骤:生成交易序列,再进行交易序列的重组,生成重组后的交易序列,再根据获得的污点分析结果,获得State矩阵;
智能合约漏洞检测步骤:使用模糊测试技术,输入State矩阵,获得奖励Reward并输入到神经网络,神经网络根据当前记忆选择触发奖励的机会最大的动作Action,根据该动作Action对当前state矩阵进行更新,生成检测漏洞效率更高的模糊测试的输入交易序列样本,对智能合约进行检测以发现智能合约错误。
具体地,所述Solidity程序静态污点分析步骤:
所述标记所有可能的污点数据:
将源代码中的状态变量、和函数传入参数以及Solidity内置变量归入污点类变量,遍历一次控制流程图,将被污点类变量修改过的变量归入污点类;
所述存储污点分析结果:
针对每个函数生成json格式字典来存储污点分析结果。
具体地,所述State矩阵生成步骤包括:
所述生成交易序列包括:
合约源码经过ABI解析后从中间挑选一个可调用的非静态函数;
为非静态函数生成列参数,即从种子seed集合中随机抽取一个种子seed生成参数;
生成交易的发送方和交易价值value;
根据获得的非静态函数、生成的列参数、生成的交易的发送方以及交易价值value,生成交易序列;
所述进行交易序列的重组指:
指替换交易序列中某个交易调用的函数、函数传入的参数、交易的交易价值和发送方,形成一个新的交易序列;
所述State矩阵包括:
生成的重组的交易序列、交易调用的函数的污点分析结果。
具体地,所述智能合约漏洞检测步骤:
所述奖励Reward与检查出错误所用的输入次数的数学期望有关,期望越大,奖励Reward越小,反之则越大;
所述触发奖励的机会指:
对一个合约进行多次错误检查后,尝试次数的数学期望越多,触发奖励的机会越小;
所述动作Action包括:
交易函数的改变、参数替换、发送方替换以及交易额替换。
具体地,所述智能合约漏洞检测步骤:
所述获得奖励Reward指:
将生成的重组后的交易序列放入以太坊智能合约虚拟机EVM中执行,获得交易执行反馈信息,再根据污点分析结果获得漏洞检测信息,根据交易执行反馈信息和漏洞检测信息获得奖励Reward;
所述对智能合约进行检测以发现智能合约错误:
若检查出错误,则终止;若未检查出错误,则判断检测次数是否达到预设的模糊测试尝试次数上限:若是,则检测结束;否则,则继续检测。
本发明提供的智能合约漏洞的检查系统,可以通过本发明给的智能合约漏洞的检查方法的步骤流程实现。本领域技术人员可以将所述智能合约漏洞的检查方法,理解为所述智能合约漏洞的检查系统的一个优选例。
根据本发明提供的一种智能合约漏洞的检查系统,包括:
Solidity程序静态污点分析模块:从语法上分析Solidity程序的源代码,针对Solidity程序的源代码中的每个函数,遍历所有可能的执行流程,形成控制流程图,再标记所有可能的污点数据,获得并存储污点分析结果;
State矩阵生成模块:生成交易序列,再进行交易序列的重组,生成重组后的交易序列,再根据获得的污点分析结果,获得State矩阵;
智能合约漏洞检测模块:使用模糊测试技术,输入State矩阵,获得奖励Reward并输入到神经网络,神经网络根据当前记忆选择触发奖励的机会最大的动作Action,根据该动作Action对当前state矩阵进行更新,生成检测漏洞效率更高的模糊测试的输入交易序列样本,对智能合约进行检测以发现智能合约错误。
具体地,所述Solidity程序静态污点分析模块:
所述标记所有可能的污点数据:
将源代码中的状态变量、和函数传入参数以及Solidity内置变量归入污点类变量,遍历一次控制流程图,将被污点类变量修改过的变量归入污点类;
所述存储污点分析结果:
针对每个函数生成json格式字典来存储污点分析结果。
具体地,所述State矩阵生成模块包括:
所述生成交易序列包括:
合约源码经过ABI解析后从中间挑选一个可调用的非静态函数;
为非静态函数生成列参数,即从种子seed集合中随机抽取一个种子seed生成参数;
生成交易的发送方和交易价值value;
根据获得的非静态函数、生成的列参数、生成的交易的发送方以及交易价值value,生成交易序列;
所述进行交易序列的重组指:
指替换交易序列中某个交易调用的函数、函数传入的参数、交易的交易价值和发送方,形成一个新的交易序列;
所述State矩阵包括:
生成的重组的交易序列、交易调用的函数的污点分析结果。
具体地,所述智能合约漏洞检测模块:
所述奖励Reward与检查出错误所用的输入次数的数学期望有关,期望越大,奖励Reward越小,反之则越大;
所述触发奖励的机会指:
对一个合约进行多次错误检查后,尝试次数的数学期望越多,触发奖励的机会越小;
所述动作Action包括:
交易函数的改变、参数替换、发送方替换以及交易额替换;
所述智能合约漏洞检测模块:
所述获得奖励Reward指:
将生成的重组后的交易序列放入以太坊智能合约虚拟机EVM中执行,获得交易执行反馈信息,再根据污点分析结果获得漏洞检测信息,根据交易执行反馈信息和漏洞检测信息获得奖励Reward;
所述对智能合约进行检测以发现智能合约错误:
若检查出错误,则终止;若未检查出错误,则判断检测次数是否达到预设的模糊测试尝试次数上限:若是,则检测结束;否则,则继续检测。
根据本发明提供的一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现上述中任一项所述的智能合约漏洞的检查系统的模块。
下面通过优选例,对本发明进行更为具体地说明。
优选例1:
本实例提供了一种基于Fuzzing和DQN的检查智能合约漏洞的方法,包括以下步骤:
第一步:从语法上分析Solidity程序的源代码,针对每个函数遍历所有可能的执行流程,形成控制流程图,然后标记所有可能的污点数据,针对每个函数生成json格式字典来存储关键变量的污染情况。
所述关键变量的污染情况,具体形式为:
函数1的id:
变量:状态变量1;操作:写入;依赖于:msg.value,参数2;
变量:状态变量2;操作:发送;依赖于:msg.value,状态变量3;
函数2的id:
变量:状态变量1;操作:条件判断;依赖于:状态变量4,参数1;
......
第二步:生成State矩阵。使用一个可调用的非静态函数,通过编译智能合约得到函数的ABI接口,与第一步的污点分析结果相关联。通过所选定的seed(即种子,各类型最有可能情况)生成参数,根据参数从预先定义好的账户集合抽取一个账户并产生一个value,进行交易序列的重组。结合步骤S1中成果,生成Solidity程序中合约所对应的State矩阵,从形式上看,就是生成的交易序列和交易调用的函数的污点分析结果。
所述选定的seed,具体为不同的输入类型均有多个seed作为参数,且采用的seed可以涵盖尽可能多的代码执行路径。本实施例中各个输入类型的seed为:
"uint":无符号整型,长度为256位;
"int":有符号整型,长度为256位;
"address":地址类型,长度为160位;
"byte":字节型,长度为8位;
"bytes":字节数组型,长度为256位;
"bool":布尔类型,长度位1位;
"string":字符串类型,无长度选择
"payment":无符号类型,长度为128位
所述State,具体为生成的交易及其参数所组成的矩阵,具体组成示意图如图2。
交易1,交易1的污点分析结果;
交易2,交易2的污点分析结果;
交易3,交易3的污点分析结果;
其中transaction(交易)的格式如下所示,其中具体数据仅作示例:
{"from":address,"data":"0xaafafbf30134b4...","to",ddress,"value":8475,gasprise:0}
taintList的元素格式为[variable_id|operation_id|taint_source1|taint_source2|...]
第三步,智能合约漏洞检测。使用模糊测试器,将生产的交易序列其放入EVM环境中执行并得到执行过程操作码和以太坊状态变化反馈,将反馈输入到神经网络之中,根据反馈给予奖励Reward,该神经网络将会根据当前记忆选择最有机会触发奖励的动作Action,该动作会对当前state矩阵进行更新,不断生成检测漏洞效率越来越高的模糊测试输入交易序列样本,对智能合约进行检测以更高效地发现智能合约错误。
所述action,具体为以下四种:
1.修改交易调用的函数id;
2.修改交易调用函数传入的参数;
3.修改交易的Sender属性;
4.修改交易的Value属性。
所述reward,具体为以下五类:
1."valid_mutation_reward":1,即生成可执行的交易的奖励;
2."vulnerability_reward":1,即当前交易序列发现漏洞的奖励;
3."exploit_reward":2,即当前交易序列触发利用程序的奖励;
4."path_variaty_reward":0.4,即当前交易序列覆盖率的奖励;
5."path_discovery_reward":0.6,即当前交易发现新的执行路径的奖励。
所述模糊测试器,具体有以下四个参数
1."seed_prob":0.4,即使用已有seed生成所占权重;
2."random_action_prob":0.6,即使用随机生成所占权重
3."account_balance":"0xffffffffffffffffffffffffffffffffff",即初始虚拟账户余额;
4."max_attempt":500,即模糊测试测试步数上限。
进一步地,我们选的的DQN算法,其具体参数为
replay_memory_size=500000,
replay_memory_init_size=50000,
update_target_estimator_every=10000,
discount_factor=0.99,
epsilon_start=1.0,
epsilon_end=0.1,
epsilon_decay_steps=500000,
batch_size=32,
record_video_every=50
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。
优选例2:
一种基于Fuzzing和DQN的检查智能合约漏洞的方法,其特征在于,包括以下步骤:
步骤S1,Solidity程序静态污点分析。Solidity是一门类似JavaScript的、面向以太坊智能合约的高级编程语言。从语法上分析Solidity程序的源代码,针对源代码中的每个函数遍历所有可能的执行流程,形成控制流程图。然后将源代码中的状态变量、和函数传入参数以及Solidity内置变量归入污点类,遍历一次控制流程图,将被污点类变量修改过的变量归入污点类,以此标记所有可能的污点数据,针对每个函数生成json格式字典来存储关键变量的污染情况。
步骤S2,生成State矩阵。一个交易就是调用合约的一个函数,传入函数的参数以及交易的发起方、接收方、交易价值。使用一个可调用的非静态函数,通过编译智能合约得到函数的ABI接口,与第一步的污点分析结果相关联,即每个函数都有一个步骤S1中生成的污染情况与之对应。
通过所选定的一些原始输入生成参数,这些原始输入通常选择为常用的输入,称之为输入种子。根据参数从预先定义好的账户集合(智能合约由账户来使用,所以在测试时,我们有一个集合,用于存储预先定义好的账户)抽取一个账户并产生一个交易价值(value),进行交易序列的重组(对于一个交易序列的重组,指替换交易序列中某个交易调用的函数、函数传入的参数、交易的交易价值和发送方,形成一个新的交易序列)。结合步骤S1中成果,生成Solidity程序中合约所对应的State矩阵,从形式上看,就是生成的重组的交易序列和交易调用的函数的污点分析结果。
步骤S3,智能合约漏洞检测。使用fuzzing,将生产的交易序列放入以太坊智能合约虚拟机(EVM,用来执行合约代码)中执行并得到执行过程操作码和以太坊状态变化反馈,将反馈输入到神经网络之中,根据反馈给予奖励Reward,该Reward与检查出错误所用的输入次数的数学期望有关,期望越大,Reward越小,反之则越大,该神经网络将会根据当前记忆选择最有机会触发奖励的动作Action(Fuzzing需要通过多次随机生成输入来检查出合约对的错误,这里认为,对一个合约进行多次错误检查后,尝试次数的数学期望越多,触发奖励的机会越小),动作action主要包括:1、交易函数的改变;2、参数替换;3、发送方替换;4、交易额替换。该动作会对当前state矩阵进行更新(即对fuzzing的输入交易序列进行更新),不断生成检测漏洞效率越来越高的模糊测试输入交易序列样本,对智能合约进行检测以更高效地发现智能合约错误。
其中,交易序列首先放入虚拟机中执行,而污点分析和交易执行反馈两部分为后续找出合约函数中敏感变量的污点源奠定基础,即帮助发现漏洞。另一方面,污点分析与交易执行反馈共同用于计算出reward并送入神经网络。因此,Fuzzing的输入格式是一整个state矩阵而非单独的交易序列。
在步骤S2中选取seed值时,应保证不同的输入类型均有多个seed作为参数,其值应保证能够遍历尽可能多的智能合约程序路径。
步骤S3中对智能合约的检测,若检查出错误,则终止,若未检查出错误,将以模糊测试尝试次数上限为指标将检测结束。
所述的seed选定,其特征是seed的值应包括输入类型的边界值和常见值。
优选例3:
本发明针对现有技术存在的上述不足,提供了一种基于模糊测试和深度强化学习模型的检查智能合约漏洞的方法,它将现今已经较为成熟的模糊测试方法和深度强化学习方法相结合并加以改进,完成了一个可以高效率高准确率检查智能合约漏洞的系统。其中,模糊测试是一种通过产生一系列非法的、非预期的或者随机的输入向量给目标程序,从而完成自动化的触发和挖掘目标程序中的安全漏洞的软件测试技术,深度强化学习(DQN)是一种结合了强化学习(Q-Learning)和深度学习(Deep Learning)的机器学习方法。它通过模糊测试技术生成一组输入样本,利用虚拟执行环境进行反馈,结合深度强化学习模型对样本进行不断的更新,同时进行合约的漏洞分析,实现了一个高效率与低误判率相结合的智能合约漏洞检测系统并提出合约存在的隐患及修改意见。
该系统采用模糊测试技术,基于智能合约ABI解析以及seed生成技术,并结合静态污点分析的方法,得到Solidity程序中合约所对应的函数污点分析字典。用交易序列和交易对应函数的污点分析结果组成state矩阵,放入DQN模型中,通过与Action,Environment以及Reward的交互,最终在神经网络中训练出很有可能触发智能合约漏洞的输入数据,从而更高效地完成自动化的触发和挖掘目标程序中的安全漏洞的目的。
本发明是通过以下技术方案具体实现的。
一种基于Fuzzing和DQN的检查智能合约漏洞的方法,包括以下步骤:
步骤S1,Solidity程序静态污点分析。从语法上分析Solidity程序的源代码,针对每个函数遍历所有可能的执行流程,形成控制流程图,然后标记所有可能的污点数据,针对每个函数生成json格式字典来存储关键变量的污染情况。
步骤S2,生成State矩阵。使用一个可调用的非静态函数,对编译智能合约后所得的ABI文件进行解析。通过所选定的seed生成参数,根据参数从预先定义好的账户集合抽取一个账户并产生一个value,进行交易序列的重组。结合步骤S1中成果,生成Solidity程序中合约所对应的State矩阵,从形式上看,就是生成的交易序列和交易调用的函数的污点分析结果。
步骤S3,智能合约漏洞检测。使用模糊测试器,将生产的交易序列其放入EVM环境中执行并得到执行过程操作码和以太坊状态变化反馈,将反馈输入到神经网络之中,根据反馈给予奖励Reward,该神经网络将会根据当前记忆选择最有机会触发奖励的动作Action,该动作会对当前state矩阵进行更新,不断生成检测漏洞效率越来越高的模糊测试输入交易序列样本,对智能合约进行检测以更高效地发现智能合约错误。
优选地,在步骤S1中,污点分析首先通过将Solidity语言转换为特定的中间语言IR进行控制流图转换获得函数CFG,然后对CFG中环路剪切,形成树状路径,最后通过深度遍历遍历所有路径,生成如状态变量A依赖于参数B、C这样的字典。
优选地,在步骤S2中,不同的输入类型均有多个seed作为参数,且采用的seed可以保证能够遍历尽可能多的智能合约程序路径。
优选地,神经网络的参数为:
replay_memory_size=500000,
replay_memory_init_size=50000,
update_target_estimator_every=10000,
discount_factor=0.99,
epsilon_start=1.0,
epsilon_end=0.1,
epsilon_decay_steps=500000,
batch_size=32,
record_video_every=50
优选地,对智能合约检测进行的测试步数上限为500。
在本申请的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种智能合约漏洞的检查方法,其特征在于,包括:
Solidity程序静态污点分析步骤:从语法上分析Solidity程序的源代码,针对Solidity程序的源代码中的每个函数,遍历所有可能的执行流程,形成控制流程图,再标记所有可能的污点数据,获得并存储污点分析结果;
State矩阵生成步骤:生成交易序列,再进行交易序列的重组,生成重组后的交易序列,再根据获得的污点分析结果,获得State矩阵;
智能合约漏洞检测步骤:使用模糊测试技术,输入State矩阵,获得奖励Reward并输入到神经网络,神经网络根据当前记忆选择触发奖励的机会最大的动作Action,根据该动作Action对当前state矩阵进行更新,生成检测漏洞效率更高的模糊测试的输入交易序列样本,对智能合约进行检测以发现智能合约错误。
2.根据权利要求1所述的智能合约漏洞的检查方法,其特征在于,所述Solidity程序静态污点分析步骤:
所述标记所有可能的污点数据:
将源代码中的状态变量、和函数传入参数以及Solidity内置变量归入污点类变量,遍历一次控制流程图,将被污点类变量修改过的变量归入污点类;
所述存储污点分析结果:
针对每个函数生成json格式字典来存储污点分析结果。
3.根据权利要求2所述的智能合约漏洞的检查方法,其特征在于,所述State矩阵生成步骤包括:
所述生成交易序列包括:
合约源码经过ABI解析后从中间挑选一个可调用的非静态函数;
为非静态函数生成列参数,即从种子seed集合中随机抽取一个种子seed生成参数;
生成交易的发送方和交易价值value;
根据获得的非静态函数、生成的列参数、生成的交易的发送方以及交易价值value,生成交易序列;
所述进行交易序列的重组指:
指替换交易序列中某个交易调用的函数、函数传入的参数、交易的交易价值和发送方,形成一个新的交易序列;
所述State矩阵包括:
生成的重组的交易序列、交易调用的函数的污点分析结果。
4.根据权利要求3所述的智能合约漏洞的检查方法,其特征在于,所述智能合约漏洞检测步骤:
所述奖励Reward与检查出错误所用的输入次数的数学期望有关,期望越大,奖励Reward越小,反之则越大;
所述触发奖励的机会指:
对一个合约进行多次错误检查后,尝试次数的数学期望越多,触发奖励的机会越小;
所述动作Action包括:
交易函数的改变、参数替换、发送方替换以及交易额替换。
5.根据权利要求4所述的智能合约漏洞的检查方法,其特征在于,所述智能合约漏洞检测步骤:
所述获得奖励Reward指:
将生成的重组后的交易序列放入以太坊智能合约虚拟机EVM中执行,获得交易执行反馈信息,再根据污点分析结果获得漏洞检测信息,根据交易执行反馈信息和漏洞检测信息获得奖励Reward;
所述对智能合约进行检测以发现智能合约错误:
若检查出错误,则终止;若未检查出错误,则判断检测次数是否达到预设的模糊测试尝试次数上限:若是,则检测结束;否则,则继续检测。
6.一种智能合约漏洞的检查系统,其特征在于,包括:
Solidity程序静态污点分析模块:从语法上分析Solidity程序的源代码,针对Solidity程序的源代码中的每个函数,遍历所有可能的执行流程,形成控制流程图,再标记所有可能的污点数据,获得并存储污点分析结果;
State矩阵生成模块:生成交易序列,再进行交易序列的重组,生成重组后的交易序列,再根据获得的污点分析结果,获得State矩阵;
智能合约漏洞检测模块:使用模糊测试技术,输入State矩阵,获得奖励Reward并输入到神经网络,神经网络根据当前记忆选择触发奖励的机会最大的动作Action,根据该动作Action对当前state矩阵进行更新,生成检测漏洞效率更高的模糊测试的输入交易序列样本,对智能合约进行检测以发现智能合约错误。
7.根据权利要求6所述的智能合约漏洞的检查系统,其特征在于,所述Solidity程序静态污点分析模块:
所述标记所有可能的污点数据:
将源代码中的状态变量、和函数传入参数以及Solidity内置变量归入污点类变量,遍历一次控制流程图,将被污点类变量修改过的变量归入污点类;
所述存储污点分析结果:
针对每个函数生成json格式字典来存储污点分析结果。
8.根据权利要求7所述的智能合约漏洞的检查系统,其特征在于,所述State矩阵生成模块包括:
所述生成交易序列包括:
合约源码经过ABI解析后从中间挑选一个可调用的非静态函数;
为非静态函数生成列参数,即从种子seed集合中随机抽取一个种子seed生成参数;
生成交易的发送方和交易价值value;
根据获得的非静态函数、生成的列参数、生成的交易的发送方以及交易价值value,生成交易序列;
所述进行交易序列的重组指:
指替换交易序列中某个交易调用的函数、函数传入的参数、交易的交易价值和发送方,形成一个新的交易序列;
所述State矩阵包括:
生成的重组的交易序列、交易调用的函数的污点分析结果。
9.根据权利要求8所述的智能合约漏洞的检查系统,其特征在于,所述智能合约漏洞检测模块:
所述奖励Reward与检查出错误所用的输入次数的数学期望有关,期望越大,奖励Reward越小,反之则越大;
所述触发奖励的机会指:
对一个合约进行多次错误检查后,尝试次数的数学期望越多,触发奖励的机会越小;
所述动作Action包括:
交易函数的改变、参数替换、发送方替换以及交易额替换;
所述智能合约漏洞检测模块:
所述获得奖励Reward指:
将生成的重组后的交易序列放入以太坊智能合约虚拟机EVM中执行,获得交易执行反馈信息,再根据污点分析结果获得漏洞检测信息,根据交易执行反馈信息和漏洞检测信息获得奖励Reward;
所述对智能合约进行检测以发现智能合约错误:
若检查出错误,则终止;若未检查出错误,则判断检测次数是否达到预设的模糊测试尝试次数上限:若是,则检测结束;否则,则继续检测。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的智能合约漏洞的检查系统的模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910672086.5A CN110399730B (zh) | 2019-07-24 | 2019-07-24 | 智能合约漏洞的检查方法、系统及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910672086.5A CN110399730B (zh) | 2019-07-24 | 2019-07-24 | 智能合约漏洞的检查方法、系统及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110399730A true CN110399730A (zh) | 2019-11-01 |
CN110399730B CN110399730B (zh) | 2021-05-04 |
Family
ID=68325049
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910672086.5A Active CN110399730B (zh) | 2019-07-24 | 2019-07-24 | 智能合约漏洞的检查方法、系统及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110399730B (zh) |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110866255A (zh) * | 2019-11-07 | 2020-03-06 | 博雅正链(北京)科技有限公司 | 一种智能合约漏洞检测方法 |
CN110990843A (zh) * | 2019-12-25 | 2020-04-10 | 刘士刚 | 人工智能和模糊测试漏洞扫描系统(AIFuzz) |
CN111221731A (zh) * | 2020-01-03 | 2020-06-02 | 华东师范大学 | 一种快速获取到达程序指定点测试用例的方法 |
CN111259395A (zh) * | 2020-01-16 | 2020-06-09 | 图灵人工智能研究院(南京)有限公司 | 智能合约的利用程序获取方法、装置及存储介质 |
CN111310191A (zh) * | 2020-02-12 | 2020-06-19 | 广州大学 | 一种基于深度学习的区块链智能合约漏洞检测方法 |
CN111460454A (zh) * | 2020-03-13 | 2020-07-28 | 中国科学院计算技术研究所 | 一种基于栈指令序列的智能合约相似度检索方法及系统 |
CN111563742A (zh) * | 2020-05-11 | 2020-08-21 | 西安邮电大学 | 智能合约交易顺序依赖漏洞变异模糊测试方法 |
CN111753306A (zh) * | 2020-05-29 | 2020-10-09 | 西安深信科创信息技术有限公司 | 一种智能合约漏洞检测方法、装置、电子设备及存储介质 |
CN111831562A (zh) * | 2020-07-08 | 2020-10-27 | 信联科技(南京)有限公司 | 一种基于机器学习的模糊测试用例生成方法及运行该方法的计算机设备与可读存储介质 |
CN111833188A (zh) * | 2020-07-17 | 2020-10-27 | 辽宁大学 | 基于智能合约的非接触式知识产权变更方法 |
CN112035359A (zh) * | 2020-08-31 | 2020-12-04 | 北京字节跳动网络技术有限公司 | 程序测试方法、装置、电子设备及存储介质 |
CN112131115A (zh) * | 2020-09-23 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 一种智能合约模糊测试的方法、装置及存储介质 |
CN112581140A (zh) * | 2020-12-24 | 2021-03-30 | 西安深信科创信息技术有限公司 | 一种智能合约验证方法、计算机存储介质 |
CN112767155A (zh) * | 2021-01-19 | 2021-05-07 | 华南师范大学 | 智能合约安全交易序列生成方法、装置、介质和设备 |
CN113051574A (zh) * | 2021-03-11 | 2021-06-29 | 哈尔滨工程大学 | 一种智能合约二进制代码的漏洞检测方法 |
CN113190441A (zh) * | 2021-04-26 | 2021-07-30 | 交叉信息核心技术研究院(西安)有限公司 | 一种链码测试种子生成方法、系统、设备及存储介质 |
CN113326050A (zh) * | 2021-07-07 | 2021-08-31 | 浙江工商大学 | 基于神经网络与动态模糊测试结合的智能合约漏洞检测方法 |
CN113656280A (zh) * | 2021-07-09 | 2021-11-16 | 中国科学院信息工程研究所 | 基于符号执行的漏洞利用点查找方法及装置 |
CN113836009A (zh) * | 2021-09-14 | 2021-12-24 | 广东新安怀科技发展有限公司 | 一种基于强化学习的智能合约模糊测试方法及系统 |
CN113886225A (zh) * | 2021-09-18 | 2022-01-04 | 国网河南省电力公司电力科学研究院 | 一种面向未知工控协议的模糊测试系统和方法 |
CN114282227A (zh) * | 2022-01-12 | 2022-04-05 | 北京大学 | 一种Fabric区块链系统智能合约的安全分析检测方法 |
CN114707152A (zh) * | 2022-02-23 | 2022-07-05 | 北京邮电大学 | 联盟链智能合约的安全漏洞检测方法及装置 |
CN114840857A (zh) * | 2022-04-29 | 2022-08-02 | 哈尔滨工程大学 | 基于深度强化学习与多级覆盖策略的智能合约模糊测试方法及系统 |
CN115292172A (zh) * | 2022-08-01 | 2022-11-04 | 哈尔滨工业大学 | 一种提高智能合约检测覆盖率的方法、电子设备及存储介质 |
CN115659358A (zh) * | 2022-12-28 | 2023-01-31 | 北京邮电大学 | 一种智能合约模糊测试方法及装置 |
CN116361816A (zh) * | 2023-06-01 | 2023-06-30 | 江西农业大学 | 一种智能合约漏洞检测方法、系统、存储介质及设备 |
CN116933266A (zh) * | 2023-07-05 | 2023-10-24 | 浙江工业大学 | 一种跨链智能合约的污点追踪方法 |
CN118094570A (zh) * | 2024-04-24 | 2024-05-28 | 北京航空航天大学 | 一种基于大语言模型和强化学习的智能合约模糊测试方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023287183A1 (ko) * | 2021-07-12 | 2023-01-19 | 서울대학교산학협력단 | 다중-트랜잭션 차등 퍼징을 통한 컨센서스 버그 탐지 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108255182A (zh) * | 2018-01-30 | 2018-07-06 | 上海交通大学 | 一种基于深度强化学习的服务机器人行人感知避障方法 |
CN108595185A (zh) * | 2018-04-11 | 2018-09-28 | 暨南大学 | 一种将以太坊智能合约转换成超级账本智能合约的方法 |
CN108805348A (zh) * | 2018-06-05 | 2018-11-13 | 北京京东金融科技控股有限公司 | 一种交叉口信号配时控制优化的方法和装置 |
CN109063477A (zh) * | 2018-07-18 | 2018-12-21 | 成都链安科技有限公司 | 一种自动化的智能合约代码缺陷检测系统和方法 |
US20190172073A1 (en) * | 2012-09-28 | 2019-06-06 | Rex Wiig | System and method of a requirement, active compliance and resource management for cyber security application |
CN109933991A (zh) * | 2019-03-20 | 2019-06-25 | 杭州拜思科技有限公司 | 一种智能合约漏洞检测的方法、装置 |
CN109952582A (zh) * | 2018-09-29 | 2019-06-28 | 区链通网络有限公司 | 一种强化学习模型的训练方法、节点、系统及存储介质 |
CN109977682A (zh) * | 2019-04-01 | 2019-07-05 | 中山大学 | 一种基于深度学习的区块链智能合约漏洞检测方法及装置 |
CN110008710A (zh) * | 2019-04-15 | 2019-07-12 | 上海交通大学 | 基于深度强化学习和程序路径插桩的漏洞检测方法 |
-
2019
- 2019-07-24 CN CN201910672086.5A patent/CN110399730B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190172073A1 (en) * | 2012-09-28 | 2019-06-06 | Rex Wiig | System and method of a requirement, active compliance and resource management for cyber security application |
CN108255182A (zh) * | 2018-01-30 | 2018-07-06 | 上海交通大学 | 一种基于深度强化学习的服务机器人行人感知避障方法 |
CN108595185A (zh) * | 2018-04-11 | 2018-09-28 | 暨南大学 | 一种将以太坊智能合约转换成超级账本智能合约的方法 |
CN108805348A (zh) * | 2018-06-05 | 2018-11-13 | 北京京东金融科技控股有限公司 | 一种交叉口信号配时控制优化的方法和装置 |
CN109063477A (zh) * | 2018-07-18 | 2018-12-21 | 成都链安科技有限公司 | 一种自动化的智能合约代码缺陷检测系统和方法 |
CN109952582A (zh) * | 2018-09-29 | 2019-06-28 | 区链通网络有限公司 | 一种强化学习模型的训练方法、节点、系统及存储介质 |
CN109933991A (zh) * | 2019-03-20 | 2019-06-25 | 杭州拜思科技有限公司 | 一种智能合约漏洞检测的方法、装置 |
CN109977682A (zh) * | 2019-04-01 | 2019-07-05 | 中山大学 | 一种基于深度学习的区块链智能合约漏洞检测方法及装置 |
CN110008710A (zh) * | 2019-04-15 | 2019-07-12 | 上海交通大学 | 基于深度强化学习和程序路径插桩的漏洞检测方法 |
Non-Patent Citations (3)
Title |
---|
BO JIANG等: "《ContractFuzzer: Fuzzing Smart Contracts for Vulnerability Detection》", 《ACM》 * |
W.K.CHAN等: "《Fuse: An Architecture for Smart Contract Fuzz Testing Service》", 《2018 25TH ASIA-PACIFIC SOFTWARE ENGINEERING CONFERENCE (APSEC)》 * |
付梦琳等: "《智能合约安全漏洞挖掘技术研究》", 《计算机应用》 * |
Cited By (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110866255A (zh) * | 2019-11-07 | 2020-03-06 | 博雅正链(北京)科技有限公司 | 一种智能合约漏洞检测方法 |
CN110866255B (zh) * | 2019-11-07 | 2022-04-12 | 博雅正链(北京)科技有限公司 | 一种智能合约漏洞检测方法 |
CN110990843A (zh) * | 2019-12-25 | 2020-04-10 | 刘士刚 | 人工智能和模糊测试漏洞扫描系统(AIFuzz) |
CN110990843B (zh) * | 2019-12-25 | 2024-02-02 | 刘士刚 | 人工智能和模糊测试漏洞扫描系统(AIFuzz) |
CN111221731B (zh) * | 2020-01-03 | 2021-10-15 | 华东师范大学 | 一种快速获取到达程序指定点测试用例的方法 |
CN111221731A (zh) * | 2020-01-03 | 2020-06-02 | 华东师范大学 | 一种快速获取到达程序指定点测试用例的方法 |
CN111259395A (zh) * | 2020-01-16 | 2020-06-09 | 图灵人工智能研究院(南京)有限公司 | 智能合约的利用程序获取方法、装置及存储介质 |
CN111259395B (zh) * | 2020-01-16 | 2022-10-18 | 图灵人工智能研究院(南京)有限公司 | 智能合约的利用程序获取方法、装置及存储介质 |
CN111310191A (zh) * | 2020-02-12 | 2020-06-19 | 广州大学 | 一种基于深度学习的区块链智能合约漏洞检测方法 |
CN111310191B (zh) * | 2020-02-12 | 2022-12-23 | 广州大学 | 一种基于深度学习的区块链智能合约漏洞检测方法 |
CN111460454A (zh) * | 2020-03-13 | 2020-07-28 | 中国科学院计算技术研究所 | 一种基于栈指令序列的智能合约相似度检索方法及系统 |
CN111563742A (zh) * | 2020-05-11 | 2020-08-21 | 西安邮电大学 | 智能合约交易顺序依赖漏洞变异模糊测试方法 |
CN111563742B (zh) * | 2020-05-11 | 2023-08-15 | 西安邮电大学 | 智能合约交易顺序依赖漏洞变异模糊测试方法 |
CN111753306A (zh) * | 2020-05-29 | 2020-10-09 | 西安深信科创信息技术有限公司 | 一种智能合约漏洞检测方法、装置、电子设备及存储介质 |
CN111753306B (zh) * | 2020-05-29 | 2022-08-05 | 西安深信科创信息技术有限公司 | 一种智能合约漏洞检测方法、装置、电子设备及存储介质 |
CN111831562A (zh) * | 2020-07-08 | 2020-10-27 | 信联科技(南京)有限公司 | 一种基于机器学习的模糊测试用例生成方法及运行该方法的计算机设备与可读存储介质 |
CN111833188B (zh) * | 2020-07-17 | 2024-03-22 | 辽宁大学 | 基于智能合约的非接触式知识产权变更方法 |
CN111833188A (zh) * | 2020-07-17 | 2020-10-27 | 辽宁大学 | 基于智能合约的非接触式知识产权变更方法 |
CN112035359A (zh) * | 2020-08-31 | 2020-12-04 | 北京字节跳动网络技术有限公司 | 程序测试方法、装置、电子设备及存储介质 |
CN112035359B (zh) * | 2020-08-31 | 2023-05-02 | 抖音视界有限公司 | 程序测试方法、装置、电子设备及存储介质 |
CN112131115A (zh) * | 2020-09-23 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 一种智能合约模糊测试的方法、装置及存储介质 |
CN112581140A (zh) * | 2020-12-24 | 2021-03-30 | 西安深信科创信息技术有限公司 | 一种智能合约验证方法、计算机存储介质 |
CN112767155B (zh) * | 2021-01-19 | 2024-02-13 | 华南师范大学 | 智能合约安全交易序列生成方法、装置、介质和设备 |
CN112767155A (zh) * | 2021-01-19 | 2021-05-07 | 华南师范大学 | 智能合约安全交易序列生成方法、装置、介质和设备 |
CN113051574A (zh) * | 2021-03-11 | 2021-06-29 | 哈尔滨工程大学 | 一种智能合约二进制代码的漏洞检测方法 |
CN113190441A (zh) * | 2021-04-26 | 2021-07-30 | 交叉信息核心技术研究院(西安)有限公司 | 一种链码测试种子生成方法、系统、设备及存储介质 |
CN113190441B (zh) * | 2021-04-26 | 2024-03-26 | 交叉信息核心技术研究院(西安)有限公司 | 一种链码测试种子生成方法、系统、设备及存储介质 |
CN113326050B (zh) * | 2021-07-07 | 2023-10-17 | 浙江工商大学 | 基于神经网络与动态模糊测试结合的智能合约漏洞检测方法 |
CN113326050A (zh) * | 2021-07-07 | 2021-08-31 | 浙江工商大学 | 基于神经网络与动态模糊测试结合的智能合约漏洞检测方法 |
CN113656280A (zh) * | 2021-07-09 | 2021-11-16 | 中国科学院信息工程研究所 | 基于符号执行的漏洞利用点查找方法及装置 |
CN113656280B (zh) * | 2021-07-09 | 2024-04-05 | 中国科学院信息工程研究所 | 基于符号执行的漏洞利用点查找方法及装置 |
CN113836009A (zh) * | 2021-09-14 | 2021-12-24 | 广东新安怀科技发展有限公司 | 一种基于强化学习的智能合约模糊测试方法及系统 |
CN113886225A (zh) * | 2021-09-18 | 2022-01-04 | 国网河南省电力公司电力科学研究院 | 一种面向未知工控协议的模糊测试系统和方法 |
CN114282227A (zh) * | 2022-01-12 | 2022-04-05 | 北京大学 | 一种Fabric区块链系统智能合约的安全分析检测方法 |
CN114707152A (zh) * | 2022-02-23 | 2022-07-05 | 北京邮电大学 | 联盟链智能合约的安全漏洞检测方法及装置 |
CN114840857A (zh) * | 2022-04-29 | 2022-08-02 | 哈尔滨工程大学 | 基于深度强化学习与多级覆盖策略的智能合约模糊测试方法及系统 |
CN115292172B (zh) * | 2022-08-01 | 2023-03-10 | 哈尔滨工业大学 | 一种提高智能合约检测覆盖率的方法、电子设备及存储介质 |
CN115292172A (zh) * | 2022-08-01 | 2022-11-04 | 哈尔滨工业大学 | 一种提高智能合约检测覆盖率的方法、电子设备及存储介质 |
CN115659358A (zh) * | 2022-12-28 | 2023-01-31 | 北京邮电大学 | 一种智能合约模糊测试方法及装置 |
CN116361816B (zh) * | 2023-06-01 | 2023-08-11 | 江西农业大学 | 一种智能合约漏洞检测方法、系统、存储介质及设备 |
CN116361816A (zh) * | 2023-06-01 | 2023-06-30 | 江西农业大学 | 一种智能合约漏洞检测方法、系统、存储介质及设备 |
CN116933266A (zh) * | 2023-07-05 | 2023-10-24 | 浙江工业大学 | 一种跨链智能合约的污点追踪方法 |
CN118094570A (zh) * | 2024-04-24 | 2024-05-28 | 北京航空航天大学 | 一种基于大语言模型和强化学习的智能合约模糊测试方法 |
CN118094570B (zh) * | 2024-04-24 | 2024-07-09 | 北京航空航天大学 | 一种基于大语言模型和强化学习的智能合约模糊测试方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110399730B (zh) | 2021-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110399730A (zh) | 智能合约漏洞的检查方法、系统及介质 | |
CN104881608B (zh) | 一种基于模拟浏览器行为的xss漏洞检测方法 | |
CN102844759B (zh) | 用于将输入串与正则表达式匹配的设备和方法 | |
CN110175454A (zh) | 一种基于人工智能的智能合约安全漏洞挖掘方法及系统 | |
CN109426722A (zh) | Sql注入缺陷检测方法、系统、设备及存储介质 | |
CN105144187B (zh) | 提供预测的安全产品以及评分现有安全产品的方法与产品 | |
CN104881607B (zh) | 一种基于模拟浏览器行为的xss漏洞检测系统 | |
CN108647520A (zh) | 一种基于脆弱性学习的智能模糊测试方法与系统 | |
CN110232280A (zh) | 一种基于树结构卷积神经网络的软件安全漏洞检测方法 | |
Zhou et al. | Vulnerability analysis of smart contract for blockchain-based IoT applications: a machine learning approach | |
CN109005145A (zh) | 一种基于自动特征抽取的恶意url检测系统及其方法 | |
CN103116540A (zh) | 基于全局超级块支配图的动态符号执行方法及其装置 | |
CN106503496A (zh) | 基于操作码替换与合并的Python脚本程序防逆转方法 | |
CN113326050A (zh) | 基于神经网络与动态模糊测试结合的智能合约漏洞检测方法 | |
CN112492059A (zh) | Dga域名检测模型训练方法、dga域名检测方法、装置及存储介质 | |
CN111159012A (zh) | 一种基于深度学习的智能合约漏洞检测方法 | |
CN116361810A (zh) | 一种基于符号执行的智能合约漏洞检测方法 | |
CN107491691A (zh) | 一种基于机器学习的远程取证工具安全分析系统 | |
CN114996126A (zh) | 一种针对eosio智能合约的漏洞检测方法及系统 | |
Yuste et al. | Optimization of code caves in malware binaries to evade machine learning detectors | |
Zhao et al. | A new framework of security vulnerabilities detection in PHP web application | |
Rai et al. | Mining interesting positive and negative association rule based on improved genetic algorithm (MIPNAR_GA) | |
Yu et al. | Pscvfinder: a prompt-tuning based framework for smart contract vulnerability detection | |
Mei et al. | Detecting vulnerabilities in IoT software: New hybrid model and comprehensive data analysis | |
Zhang et al. | SVScanner: Detecting smart contract vulnerabilities via deep semantic extraction |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |