[发明专利]一种链码测试种子生成方法、系统、设备及存储介质在审
申请号: | 202110454744.0 | 申请日: | 2021-04-26 |
公开(公告)号: | CN113190441A | 公开(公告)日: | 2021-07-30 |
发明(设计)人: | 王晨旭;刘琛;杨子江 | 申请(专利权)人: | 交叉信息核心技术研究院(西安)有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F21/56;G06F21/57 |
代理公司: | 北京中巡通大知识产权代理有限公司 11703 | 代理人: | 张弘 |
地址: | 710077 陕西省西安市高新*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 测试 种子 生成 方法 系统 设备 存储 介质 | ||
本发明提供一种链码测试种子生成方法、系统、设备及存储介质:方法包括获取链码程序中目标函数的相关信息,并为该目标函数生成一个测试文件;将目标函数的全排列种子组中的种子依次执行测试文件,得到每个种子产生的覆盖率;选择覆盖率最高的种子作为初始种子;将初始种子中的整型数字分别进行可设置固定时长的优化处理,确定最终种子;保存链码程序中所有目标函数的最终种子,输出链码测试种子。该方法可以给不同的链码生成高覆盖率的种子输入,有了能产生较高覆盖率的种子输入,就可以提高漏洞检测的准确性,降低漏报率。另外,格式良好的种子输入,也可以帮助模糊测试更快地发现程序中的一些未知漏洞。
技术领域
本发明涉及区块链技术领域,特别涉及一种链码测试种子生成方法、系统、设备及存储介质。
背景技术
区块链是一种采用包括密码学,共识算法等技术的分布式系统。采用区块链可以对金融、供应链等多领域提供去中心化、透明、可追溯的信息平台。在区块链上的智能合约可以进一步满足用户的自定义需求,例如投票、众筹和金融交易等。智能合约本质上是一种在区块链上自动执行的电脑程序,根据区块链平台的不同,基于不同的理论和不同的程序语言实现。例如以太坊(Ethereum)上的智能合约(smart contract)和Hyperledger Fabric上的链码(chaincode)。
Hyperledger Fabric是由Linux基金会提出并维护的区块链平台,专注于私有性和安全性。其支持的智能合约又称为链码(chaincode)。该种技术被众多大型公司采用,因此链码的安全性要求也逐渐提高。
对于链码安全性的提高随之带来了对链码安全的检测技术的更高要求。当前已有技术分别是基于静态分析,或者静态分析与模糊测试相结合的方法来分析链码的安全漏洞。静态分析不实际运行程序,因此不需要为程序提供种子输入,然而模糊测试或者其他动态测试方法则需要程序的种子输入,以实际将程序运行起来,这样能够检测到程序中与输入相关的漏洞。
静态分析有如下缺点:1.安全漏洞误报率高:静态分析会报告出更多在实际运行中不存在的错误;2.无法实际证明安全漏洞在实际中存在:静态分析报告的安全漏洞必须依靠实际运行程序来进行证明;3.无法证明与实际链码输入有关的安全漏洞:由于静态分析不实际运行链码,因此无法分析与实际输入有关的安全漏洞;4.静态程序分析还面临着路径爆炸问题,可能会分析到代码实际运行过程中根本不可能执行到的路径。
针对以上缺点,出现了第二种漏洞检测方法:通过模糊测试,对链码进行安全漏洞挖掘,在模糊测试过程中,会产生多个链码输入并以每个链码输入对链码进行模拟运行,分析链码的运行安全漏洞,并根据链码运行的结果,结合静态分析来分析链码的静态安全漏洞。此时,静态分析只分析链码模拟运行过程中执行到的部分(同时避免了路径爆炸),即只能对模糊测试过程中产生的输入所能覆盖到的代码进行检测。
代码覆盖(Code coverage)是软件测试中的一种度量,描述程序中源代码被测试的比例和程度,所得比例称为代码覆盖率。虽然覆盖率达到100%,也不一定能够检测出所有漏洞。但是如果代码没有被执行到,若其中包含漏洞,则一定不会被检测出来。覆盖率越低,那么没有被执行到的代码包含潜在漏洞的可能性就越大。因此,结合上面对Fabric链码漏洞检测方法的描述,代码覆盖率在智能合约漏洞检测方面也起着至关重要的作用,覆盖率的高低可以直接表现出漏洞检测的完全程度。
发明内容
本文基于强化学习,提出了一种链码测试种子生成方法、系统、设备及存储介质,具体是一种为Hyperledger Fabric链码自动生成高覆盖率种子输入的方法,也可以看作是对链码进行模糊测试时对模糊测试流程中“生成种子输入”这一步骤的优化。该方法可以自动为给定链码生成高覆盖率的测试种子组,比较人工编写测试用例节省时间及相关资源。
为达到上述目的,本发明采用了以下技术方案:
一种链码测试种子生成方法,包括以下步骤:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于交叉信息核心技术研究院(西安)有限公司,未经交叉信息核心技术研究院(西安)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110454744.0/2.html,转载请声明来源钻瓜专利网。