CN111459786B - 一种基于变异fuzz的智能合约安全测试方法 - Google Patents
一种基于变异fuzz的智能合约安全测试方法 Download PDFInfo
- Publication number
- CN111459786B CN111459786B CN201910051630.4A CN201910051630A CN111459786B CN 111459786 B CN111459786 B CN 111459786B CN 201910051630 A CN201910051630 A CN 201910051630A CN 111459786 B CN111459786 B CN 111459786B
- Authority
- CN
- China
- Prior art keywords
- seed
- test
- input
- intelligent contract
- fuzz
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提出一种基于变异fuzz的智能合约安全测试方法,该方法以智能合约的源代码作为输入,获取智能合约的二进制接口(Application Binary Interface,ABI),从ABI中找到函数类型的元素,提取它们的函数声明;在此基础上,进一步开展测试数据生成:若被测函数没有种子,则随机生成测试数据,否则将会有一定几率基于种子变异产生测试数据;接着,使用测试数据执行私有链上的智能合约,进而开展漏洞检测,更新种子,再次回到测试输入产生步骤,如此反复直到达到事先设置测试终止条件(该终止条件可以为测试时间、路径覆盖率等)。通过该方法,测试人员可以在短时间内检查智能合约是否存在安全性问题,并且可以参考输入复现其问题。
Description
技术领域
本发明属于软件测试领域,特别适用于代码规模较大的智能合约安全性检测,其目的是提高智能合约fuzz测试的效率,是一种帮助智能合约安全测试人员在提高测试效率、保障智能合约质量的方法。
背景技术
智能合约(Smart Contract)的概念于1996年被首次提出,提出者Nick Szabo将它定义为数字化的一组承诺,以及参与者必须履行这些承诺的协议。在区块链诞生之前,智能合约一直没有被很好的实现。区块链的共识机制使这一想法变成了现实。区块链上的合约是由一种具有一定存储空间(状态)的,由特定语言编写的程序,合约的参与者通过调用合约代码来参与合约、发送或是获得资产。其中,基于以太坊的智能合约最具有代表性。以太坊智能合约支持使用图灵完备语言来开发智能合约,人们仅需支付一定的费用便可调用合约完成期望的功能。同时,为了避免智能合约滥用计算资源,以太坊还引入了Gas机制。Gas是指执行智能合约的花费,每个智能合约指令都有不同的Gas消耗,而一次交易中所执行的所有指令的Gas消耗的总和记为本次交易的消耗,它作为执行本次交易的报酬由合约发起者支付给矿工。截止于2018年3月,已有超过2,000,000个智能合约部署在以太坊上,有98,000,000以太币在以太坊上流通,以太坊市值已达到59,000,000美元。
由于智能合约特殊的运行环境以及开发语言(如Solidity),智能合约存在与传统软件不相同的安全性问题(如重入漏洞、合约依赖于交易顺序等)。另一方面,由于智能合约直接与数字货币挂钩,智能合约更容易受到攻击者的关注。
目前,国内外的研究人员已针对于智能合约安全性构建了一些测试工具,如Oyente,ContractFuzzer和ReGuard,它们能够检测出智能合约所存在的部分安全性问题。然而,目前的工具均存在一些缺陷:基于符号执行的检测方法会存在路径爆炸的问题,并且由于没有实际运行,误报率往往很高;基于fuzz测试的检测方法漏洞种类较少,且会产生大量重复测试数据,造成测试资源的浪费。
对此,本发明提出了一种基于变异fuzz的智能合约安全测试方法,其基本思想为:在测试用例数量相同的情况下,测试用例触发的执行路径越多,测试发现漏洞的可能性更高。因此,与传统的fuzz测试相比本发明只需在第一轮测试时随机产生测试输入,在以后的测试中,该方法会通过种子变异生成新的测试输入,种子是先前引起新路径的输入,基于种子变异产生输入更有可能基于以往的路径上找到新分支,因此相较于随机产生的输入更有可能发现新的路径,从而提高fuzz测试的效率。在执行过程中,本方法检测其运行模式是否存在漏洞特征以此来检测是合约是否存在安全漏洞。通过该方法,可以帮助测试人员在短时间内检查智能合约是否存在安全性问题,并且可以参考输入复现其问题。
发明内容
本发明通过提供一种基于变异fuzz的智能合约安全测试方法,来有效解决智能合约fuzz测试效率低下的问题,进而帮助测试人员快速地发现智能合约存在的安全性问题,同时使用测试中产生的测试用例复现其问题。
为达成上述目标,本发明提出一种基于变异fuzz的智能合约安全测试方法,该方法以智能合约的源代码作为输入,获取智能合约的二进制接口(Application BinaryInterface,ABI),ABI中的元素存在修饰器(modify)、事件(event)、函数(function)等类型。由于用户只通过函数与智能合约进行交互,本发明针对智能合约的函数进行测试。首先,从ABI中找到函数类型的元素,提取它们的函数声明;在此基础上,进一步开展测试数据生成:若被测函数没有种子,则随机生成测试数据,否则将会有一定几率基于种子变异产生测试数据;接着,使用测试数据执行私有链上的智能合约,进而开展漏洞检测,更新种子,再次回到测试输入产生步骤,如此反复直到达到事先设置测试终止条件(该终止条件可以为测试时间、路径覆盖率等)。具体而言,该方法包括下列步骤。
1)智能合约信息提取。给定一个智能合约源代码SC,分析其ABI文件,获取SC的函数声明集合;
2)测试数据生成。给定函数声明集合Set_FD、种子集合Set_Seed、基于种子生成输入概率Pseed和参数变异概率Pmutation,从Set_FD中随机选取一些函数,为这些函数产生测试用例,最后输出测试用例集合TS。
函数的测试用例有两种产生方式:(1)根据函数声明中的参数类型随机产生输入;(2)随机从Set_Seed中选取一个该函数的种子进行变异产生输入;对于一个函数,其第一次fuzz由于Set_Seed中没有其种子,测试用例只能通过第(1)种方法产生,在第二次及其以后的fuzz输入将会随机的选择方式(1)或方式(2)产生输入,而选择方式(2)的可能性更大,具体概率由输入Pseed决定。
3)智能合约执行和漏洞检测。给定TS和Set_Seed,运行TS中的每一个测试用例并且根据其运行模式判断合约是否存在安全性问题,同时更新Set_Seed。记录下运行路径path,若该测试用例引发了一条种子集合中不存在的路径,则将其输入和路径加入Set_Seed,回到步骤2),根据新的种子产生新的输入,直至满足测试终止条件,程序最终返回测试结果。
进一步,其中上述步骤1)的具体步骤如下:
步骤1)-1:起始状态;
步骤1)-2:输入智能合约源代码SC;
步骤1)-3:初始化种子集合Set_Seed为空;
步骤1)-4:获取SC的应用二进制接口ABI;
步骤1)-5:初始化函数声明集合Set_FD为空;
步骤1)-6:判断ABI中的元素是否不为空,如果不为空则执行下一步,否则执行步骤1)-11;
步骤1)-7:获取ABI中的一个元素e;
步骤1)-8:判断e的类型是否为function,如果是则执行下一步,否则执行步骤1)-10;
步骤1)-9:将e加入Set_FD;
步骤1)-10:判断ABI中元素是否遍历完成,如果是则执行下一步,否则执行步骤1)-11;
步骤1)-11:输出Set_FD和Set_Seed;
步骤1)-12;结束状态
进一步,其中上述步骤2)的具体步骤如下:
步骤2)-1:起始状态;
步骤2)-2:输入函数声明集合Set_FD、种子集合Set_Seed、基于种子生成输入概率Pseed和参数变异概率Pmutation;
步骤2)-3:初始化测试用例集TS为空;
步骤2)-4:从Set_FD中随机选取一个函数声明fd;
步骤2)-5:判断Set_Seed中是否存在关于fd的种子,如果存在则执行下一步,否则执行步骤2)-13;
步骤2)-6:产生一个随机数r∈[0,1],判断是否小于Pseed,如果是则执行下一步,否则执行步骤2)-13;
步骤2)-7:从Set_Seed中取出一个关于fd的种子seed;
步骤2)-8:从seed中取出一个参数argseed;
步骤2)-9:产生一个随机数r∈[0,1],判断其是否小于Pmutation,如果存在则执行下一步,否则执行步骤2)-11;
步骤2)-10:变异argseed的值,变异主要包含了以下几种方式:(1)按位翻转,随机产生m,n,0≤m<n≤len(argseed),翻转argseed中从m到n的bit;(2)算数加减,将argseed加/减一个随机值;(3)字典替换,将argseed替换成边界值或用户提供的值;(4)嫁接,将argseed的值替换为其他种子中相同类型的值;
步骤2)-11:判断seed参数是否遍历完成,如果是则执行下一步,否则执行步骤2)-8;
步骤2)-12:添加变异后输入至TS;
步骤2)-13:取出fd的一个参数arg;
步骤2)-14:根据arg类型随机生成测试值;
步骤2)-15:判断fd中参数遍历完成,如果是则执行下一步,否则执行步骤2)-13;
步骤2)-16:添加测试输入至TS;
步骤2)-17:判断是否达到循环次数上限,如果是则执行下一步,否则执行步骤2)-4;
步骤2)-18:输出TS;
步骤2)-19:结束状态;
进一步,其中上述步骤3)的具体步骤如下:
步骤3)-1:起始状态;
步骤3)-2:输入TS和Set_Seed;
步骤3)-3:初始化测试结果集Set_Result为空;
步骤3)-4:取出一个测试输入ti;
步骤3)-5:运行ti并分析合约的运行模式,同时记录运行路径path;
步骤3)-6:判断运行模式是否存在漏洞特征,如运行中的代码调用了call语句,并且call的返回结果为ErrOurOfGas,那么该合约存在无气发送的问题;又如运行中的代码运行了timestamp语句,并且执行了send或call语句,那么该合约存在依赖时序的问题;若存在漏洞特征则执行下一步,否则执行步骤3)-8;
步骤3)-7:将<ti,path,typevuln>加入Set_Result;
步骤3)-8:判断path是否在Set_Seed中记录,若是则执行步骤3)-10,否则执行下一步;
步骤3)-9:将<ti,path>加入Set_Seed;
步骤3)-10:判断TS中测试用例遍历完毕,若是则执行下一步,否则执行步骤3)-4;
步骤3)-11:输出Set_Result和Set_Seed;
步骤3)-12:结束状态;
附图说明
图1为本发明实施中的一种基于变异fuzz的智能合约安全测试方法的流程图。
图2为图1中的智能合约信息提取流程图。
图3为图1中的测试数据生成流程图。
图4为图1中的智能合约执行和漏洞检测流程图。
具体实施方式
为了更了解本发明的技术内容,特举具体实施例并配合所附图式说明如下。
图1为本发明实施中的一种基于变异fuzz的智能合约安全测试方法的流程图,其特征在于以下步骤:
S1智能合约信息提取,给定一个已经部署在私有链上的合约源代码,分析其ABI文件,获取合约的函数声明集合;
S2测试数据生成,给定函数声明集合、种子集合、基于种子生成输入概率和参数变异概率,从函数声明中随机选取一些函数,为这些函数产生测试用例,最后输出测试用例集合。
S3智能合约执行和漏洞检测,给定测试用例集和种子集合,运行TS中的每一个测试用例并且根据其运行模式判断合约是否存在安全性问题,同时更新种子集合。记录下运行路径,若该测试用例引发了一条种子集合中不存在的路径,则将其输入和路径加入种子集合,跳回到步骤S2,根据新的种子产生新的输入,直至满足测试终止条件,程序最终返回测试结果。
图2为图1中的智能合约信息提取流程图,针对给定的智能合约,编译获取智能合约ABI,根据智能合约ABI的类型提取出智能合约的函数声明集合,最终输出函数声明集合和一个初始化的种子集合。该具体步骤如下:
步骤1:起始状态;步骤2:输入智能合约源代码SC;步骤3:初始化种子集合Set_Seed为空;步骤4:获取SC的应用二进制接口ABI;步骤5:初始化函数声明集合Set_FD为空;步骤6:判断ABI中的元素是否不为空,如果不为空则执行下一步,否则执行步骤11;步骤7:获取ABI中的一个元素e;步骤8:判断e的类型是否为function,如果是则执行下一步,否则执行步骤10;步骤9:将e加入Set_FD;步骤10:判断ABI中元素是否遍历完成,如果是则执行下一步,否则执行步骤11;步骤11:输出Set_FD和Set_Seed;步骤12:结束状态
图3为图1中的测试数据生成流程图,针对一个函数声明集合,从中随机选择一定数量的函数,针对每一个函数,根据函数及其参数类型随机产生测试用例,从而构建测试用例集合。若该函数是第一次被测试,则根据其参数类型随机生成测试用例,否则有一定几率通过种子变异产生测试用例,最终输出测试用例集合。具体步骤如下:
步骤1:起始状态;步骤2:输入函数声明集合Set_FD、种子集合Set_Seed、基于种子生成输入概率Pseed和参数变异概率Pmutation;步骤3:初始化测试用例集TS为空;步骤4:从Set_FD中随机选取一个函数声明fd;步骤5:判断Set_Seed中是否存在关于fd的种子,如果存在则执行下一步,否则执行步骤13;步骤6:产生一个随机数r∈[0,1],判断是否小于Pseed,如果是则执行下一步,否则执行步骤13;步骤7:从Set_Seed中取出一个关于fd的种子seed;步骤8:从seed中取出一个参数argseed;步骤9:产生一个随机数r∈[0,1],判断其是否小于Pmutation,如果存在则执行下一步,否则执行步骤11;步骤10:变异argseed的值,变异主要包含了以下几种方式:(1)按位翻转,随机产生m,n,0≤m<n≤len(argseed),翻转argseed中从m到n的bit;(2)算数加减,将argseed加/减一个随机值;(3)字典替换,将argseed替换成边界值或用户提供的值;(4)嫁接,将argseed的值替换为其他种子中相同类型的值;步骤11:判断seed参数是否遍历完成,如果是则执行下一步,否则执行步骤8;步骤12:添加变异后输入至TS;步骤13:取出fd的一个参数arg;步骤14:根据arg类型随机生成测试值;步骤15:判断fd中参数遍历完成,如果是则执行下一步,否则执行步骤13;步骤16:添加测试输入至TS;步骤17:判断是否达到循环次数上限,如果是则执行下一步,否则执行步骤4;步骤18:输出TS;步骤19:结束状态;
图4为图1中的智能合约执行和漏洞检测流程图,针对每一个测试用例,调用测试链上的智能合约进行测试,获取其运行模式和路径,若运行模式符合漏洞特征则记录该用例和其检测到的漏洞类型,同时,若运行路径不在种子中则将用例和输入加入种子集合,再次执行图3步骤,直到达到测试终止条件,最终返回测试结果。具体步骤如下:
步骤1:起始状态;步骤2:输入TS和Set_Seed;步骤3:初始化测试结果集Set_Result为空;步骤4:取出一个测试输入ti;步骤5:运行ti并分析合约的运行模式,同时记录运行路径path;步骤6:判断运行模式是否存在漏洞特征,如运行中的代码调用了call语句,并且call的返回结果为ErrOurOfGas,那么该合约存在无气发送的问题;又如运行中的代码运行了timestamp语句,并且执行了send或call语句,那么该合约存在依赖时序的问题;若存在漏洞特征则执行下一步,否则执行步骤8;步骤7:将<ti,path,typevuln>加入Set_Result;步骤8:判断path是否在Set_Seed中记录,若是则执行步骤10,否则执行下一步;步骤9:将<ti,path>加入Set_Seed;步骤10:判断TS中测试用例遍历完毕,若是则执行下一步,否则执行步骤4;步骤11:输出Set_Result和Set_Seed;步骤12:结束状态;
综上所述,本发明解决了目前区块链上fuzz测试中效率低下的问题,通过基于种子变异从而快速生成有特异性的输入,帮助测试人员在有限时间内检测智能合约存在的安全漏洞,最终起到保障智能合约安全的目的。
Claims (4)
1.一种基于变异fuzz的智能合约安全测试方法,其特征在于,只需在第一轮测试时随机产生测试输入,在以后的测试中,该方法会通过种子变异生成新的测试输入,种子是先前引起新路径的输入,基于种子变异产生输入更有可能基于以往的路径上找到新分支,因此相较于随机产生的输入更有可能发现新的路径,从而提高fuzz测试的效率;在执行过程中,本方法检测其运行模式是否存在漏洞特征以此来检测是合约是否存在安全漏洞。包括下列步骤:
1)智能合约信息提取:给定一个智能合约源代码SC,分析其应用二进制接口ABI,获取SC的函数声明集合;
2)测试数据生成:给定函数声明集合Set_FD、种子集合Set_Seed、基于种子生成输入概率Pseed和参数变异概率Pmutation,从Set_FD中随机选取一些函数,为这些函数产生测试用例,最后输出测试用例集合TS。
3)智能合约执行和漏洞检测:给定TS和Set_Seed,运行TS中的每一个测试用例并且根据其运行模式判断合约是否存在安全性问题,同时更新Set_Seed。记录下运行路径path,若该测试用例引发了一条种子集合中不存在的路径,则将其输入和路径加入Set_Seed,跳回到步骤2),根据新的种子产生新的输入,直至满足测试终止条件,程序最终返回测试结果。
2.根据权利要求1所述的一种基于变异fuzz的智能合约安全测试方法,其特征是预先提取智能合约的信息,首先针对给定的智能合约,编译获取智能合约ABI,接着根据智能合约ABI的类型提取出智能合约的函数声明集合,最终输出函数声明集合和一个初始化的种子集合。
3.根据权利要求1所述的一种基于变异fuzz的智能合约安全测试方法,其特征在于,在步骤1)中,测试数据生成,针对一个函数声明集合,从中随机选择一定数量的函数,针对每一个函数,根据函数及其参数类型随机产生测试用例,从而构建测试用例集合;
函数的测试用例有两种产生方式:(1)根据函数声明中的参数类型随机产生输入;(2)随机从Set_Seed中选取一个该函数的种子进行变异产生输入;对于一个函数,其第一次fuzz由于Set_Seed中没有其种子,测试用例只能通过第(1)种方法产生,在第二次及其以后的fuzz输入将会随机的选择方式(1)或方式(2)产生输入,而选择方式(2)的可能性更大,具体概率由输入Pseed决定。变异主要包含了以下几种方式:(1)按位翻转,随机产生m,n,0≤m<n≤len(argseed),翻转argseed中从m到n的bit;(2)算数加减,将argseed加/减一个随机值;(3)字典替换,将argseed替换成边界值或用户提供的值;(4)嫁接,将argseed的值替换为其他种子中相同类型的值,最终输出测试用例集合。
4.根据权利要求1所述的一种基于变异fuzz的智能合约安全测试方法,其特征在于,在步骤1)中,智能合约执行和漏洞检测,针对每一个测试用例,调用测试链上的智能合约进行测试,获取其运行模式和路径,若运行模式符合漏洞特征则记录该用例和其检测到的漏洞类型,同时,若运行路径不在种子中则将用例和输入加入种子集合,再次执行测试数据生成步骤,直到达到测试终止条件,最终返回测试结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910051630.4A CN111459786B (zh) | 2019-01-18 | 2019-01-18 | 一种基于变异fuzz的智能合约安全测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910051630.4A CN111459786B (zh) | 2019-01-18 | 2019-01-18 | 一种基于变异fuzz的智能合约安全测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459786A CN111459786A (zh) | 2020-07-28 |
CN111459786B true CN111459786B (zh) | 2023-08-29 |
Family
ID=71678223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910051630.4A Active CN111459786B (zh) | 2019-01-18 | 2019-01-18 | 一种基于变异fuzz的智能合约安全测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111459786B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112131115B (zh) * | 2020-09-23 | 2021-06-22 | 腾讯科技(深圳)有限公司 | 一种智能合约模糊测试的方法、装置及存储介质 |
CN112202633B (zh) * | 2020-09-24 | 2022-07-12 | 成都质数斯达克科技有限公司 | 区块链网络的测试方法、装置、电子设备及可读存储介质 |
CN111897742B (zh) * | 2020-09-30 | 2021-01-15 | 支付宝(杭州)信息技术有限公司 | 生成智能合约测试案例的方法和装置 |
WO2022140947A1 (zh) * | 2020-12-28 | 2022-07-07 | 杭州趣链科技有限公司 | 智能合约的部署方法、执行方法、装置及终端设备 |
CN113515442A (zh) * | 2021-03-26 | 2021-10-19 | 南京航空航天大学 | 基于函数签名相似度计算的智能合约测试种子推荐方法 |
CN113051580B (zh) * | 2021-04-22 | 2024-02-02 | 南京匡吉信息科技有限公司 | 一种Hyperledger Fabric智能合约问题检测方法 |
CN113190441B (zh) * | 2021-04-26 | 2024-03-26 | 交叉信息核心技术研究院(西安)有限公司 | 一种链码测试种子生成方法、系统、设备及存储介质 |
CN113204765B (zh) * | 2021-04-27 | 2022-09-30 | 交叉信息核心技术研究院(西安)有限公司 | 一种Hyperledger Fabric链码的测试方法及系统 |
CN116662207A (zh) * | 2023-07-24 | 2023-08-29 | 北京银联金卡科技有限公司 | 一种针对区块链网络进行模糊测试的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102736979A (zh) * | 2012-06-29 | 2012-10-17 | 南京大学 | 一种基于符号执行的带反馈测试用例生成方法 |
CN109063477A (zh) * | 2018-07-18 | 2018-12-21 | 成都链安科技有限公司 | 一种自动化的智能合约代码缺陷检测系统和方法 |
-
2019
- 2019-01-18 CN CN201910051630.4A patent/CN111459786B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102736979A (zh) * | 2012-06-29 | 2012-10-17 | 南京大学 | 一种基于符号执行的带反馈测试用例生成方法 |
CN109063477A (zh) * | 2018-07-18 | 2018-12-21 | 成都链安科技有限公司 | 一种自动化的智能合约代码缺陷检测系统和方法 |
Non-Patent Citations (1)
Title |
---|
《ReGuard: Finding Reentrancy Bugs in Smart Contracts》;Chao Liu 等;《2018 IEEE/ACM 40th International Conference on Software Engineering: Companion (ICSE-Companion)》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111459786A (zh) | 2020-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111459786B (zh) | 一种基于变异fuzz的智能合约安全测试方法 | |
Cummins et al. | Programl: A graph-based program representation for data flow analysis and compiler optimizations | |
CN109800175B (zh) | 一种基于代码插桩的以太坊智能合约重入漏洞检测方法 | |
Habibi et al. | Design and verification of SystemC transaction-level models | |
Baresi et al. | Testful: An evolutionary test approach for java | |
US6622298B1 (en) | Method and apparatus for testing software having a user interface | |
Liang et al. | Deepfuzzer: Accelerated deep greybox fuzzing | |
CN100416575C (zh) | 用于集成电路设计的验证系统和方法 | |
Mao et al. | Learning Markov decision processes for model checking | |
Mathis et al. | Learning input tokens for effective fuzzing | |
Jiang et al. | RULF: Rust library fuzzing via API dependency graph traversal | |
CN116361810A (zh) | 一种基于符号执行的智能合约漏洞检测方法 | |
Marre et al. | Test selection strategies for lustre descriptions in gatel | |
CN105653946A (zh) | 基于组合事件行为触发的Android恶意行为检测系统及其检测方法 | |
CN106055479A (zh) | 一种基于强制执行的Android应用软件测试方法 | |
CN114996126A (zh) | 一种针对eosio智能合约的漏洞检测方法及系统 | |
CN115455435A (zh) | 一种智能合约模糊测试方法、装置、存储介质及电子设备 | |
EP3029595B1 (en) | Apparatuses, mobile devices, methods and computer programs for evaluating runtime information of an extracted set of instructions based on at least a part of a computer program | |
Zakeri-Nasrabadi et al. | An ensemble meta-estimator to predict source code testability | |
Schumi et al. | SpecTest: Specification-based compiler testing | |
CN112069050B (zh) | 一种基于多目标优化的智能合约测试方法 | |
CN108334441A (zh) | 一种软件开发工具包的自动化测试方法和系统 | |
CN115795487A (zh) | 漏洞检测方法、装置、设备及存储介质 | |
US9489284B2 (en) | Debugging method and computer program product | |
CN114840856A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |