[发明专利]一种针对智能合约跨合约漏洞的模糊测试方法在审
申请号: | 202110370702.9 | 申请日: | 2021-04-07 |
公开(公告)号: | CN112860588A | 公开(公告)日: | 2021-05-28 |
发明(设计)人: | 薛吟兴;叶家鸣;张威 | 申请(专利权)人: | 中国科学技术大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F21/57 |
代理公司: | 北京凯特来知识产权代理有限公司 11260 | 代理人: | 郑立明;韩珂 |
地址: | 230026 安*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 针对 智能 合约 漏洞 模糊 测试 方法 | ||
本发明公开了一种针对智能合约跨合约漏洞的模糊测试方法,使用导向型模糊测试的方法完成智能合约跨合约安全漏洞的检测,在更大程度上保证智能合约的安全。在具体实现上,生成包含函数选择器,函数参数,合约成员变量,合约余额等数据的测试用例;选择测试用例的距离度量值作为反馈指标,用以挑选优异的测试用例;结合CG(Call Graph,调用图)和CFG(Control Flow Graph,控制流程图)引导模糊测试的演进方向,对合约间的调用行为进行了重点测试。采用本发明的技术方法,在对7838个智能合约进行检测中,发现了27个跨合约重入漏洞,证明了本发明在检测跨合约漏洞方面的有效性和实用性,该方法保证了智能合约相互调用期间的安全性,并提升了测试效率。
技术领域
本发明涉及区块链技术领域,尤其涉及一种针对智能合约跨合约漏洞的模糊测试方法。
背景技术
智能合约是一种特殊协议,运行在区块链上。智能合约部署到区块链上后便无法更改,这意味着合约中的安全漏洞也无法修复。因此在智能合约部署前得到充分的测试是十分必要的。
目前,一些测试工具被开发出来用于智能合约的检测。但这些工具大都关注于单个合约的安全漏洞,忽视了跨合约安全漏洞。跨合约安全漏洞是指智能合约调用其他合约存在的漏洞,这种漏洞涉及至少二个智能合约。实际应用中,智能合约之间的调用是普遍存在的。比如一个DApp(Decentralized Application,去中心化应用)往往包含了多个合约。相比于单个智能合约的安全漏洞,跨合约安全漏洞更为隐蔽,蕴藏着更大的安全风险。
目前,主要存在如下两种方案:
方案一、专利“一种智能合约模糊测试的方法、装置及存储介质”,这项专利中提出了将模糊测试技术用于检测智能合约漏洞。
该方案可归纳为图1所示流程,主要包括:1)生成初始的测试用例。根据合约函数名和函数参数,生成测试用例。2)测试用例的变异。它提出对测试用例进行字节替换,字节翻转等方法。这些变异方法在以前的模糊测试技术中已被广泛使用。3)测试用例的执行。它提出二种执行方式,一种是先对智能合约插桩再执行,另一种是在虚拟机沙箱运行。针对这两种执行方式,分别提出了如何收集智能合约执行的结果。4)反馈指标。根据程序执行的反馈指标,确定是否继续对测试用例变异以生成更多的测试用例。反馈指标包括,测试用例的执行路径和异常测试结果。
方案一的缺陷在于:1)关注于对单个智能合约测试。多个合约的调用需要突破很多程序分支,简单的进行模糊测试,很难发生合约调用行为。2)测试用例的组成有待改进。测试用例选取了函数名和函数参数,这是不够的。因为一个合约函数的执行结果,不仅取决于函数中的参数,也可能与合约状态(合约中的成员变量,账户余额)有关;比如,一个合约函数存在向其他账户转账指令,如果此合约账户余额为0,那么就无法发生转账。3)结果中选取的反馈指标有待改进。选取执行路径作为反馈指标,是在检测其他程序语言时的常用做法,但在智能合约模糊测试中,这样做的效果不好。因为智能合约的代码短,执行路径简单,有大量重复的执行路径。4)对智能合约中的所有部分都检测,没有测试重点。智能合约的安全漏洞只存在少量的函数中,对没有安全漏洞的函数进行检测,浪费了许多不必要时间。
方案二、文献(sFuzz:An Efficient Adaptive Fuzzer for Solidity SmartContracts)。
该方案可归纳为图2所示流程,主要包括:1)生成初始的测试用例。测试用例的组成上包括了函数名,函数的参数,和合约账户余额。但是没有包括合约成员变量。2)测试用例的变异。与方案一的方法相同。3)测试用例的执行。与方案一的第2种执行方法相同,是在虚拟机沙箱运行。4)结果反馈。选取了分支距离作为反馈指标,分支距离在模糊测试其他程序语言时也被用到。
方案二的缺陷在于:1)工具只支持对单个智能合约测试。2)与方案一类似的,测试用例的组成有待改进。3)结果中选取的反馈指标有待改进,只选取了分支距离,没有包含执行路径。4)对智能合约中的所有部分都检测,没有测试重点。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学技术大学,未经中国科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110370702.9/2.html,转载请声明来源钻瓜专利网。