智能合约交易顺序依赖漏洞变异模糊测试方法技术

技术编号:25347244 阅读:75 留言:0更新日期:2020-08-21 17:06
本发明专利技术属于软件测试技术领域,具体涉及智能合约漏洞测试问题,提供了智能合约交易顺序依赖漏洞变异模糊测试方法,解决交易顺序依赖漏洞检测误报多和开销大的问题。本方法调换智能合约中最后两个函数调用顺序,通过插桩记录测试数据执行时的智能合约分支覆盖信息和发送的以太币值,基于调换前后的以太币值是否一致来检测智能合约中的交易顺序依赖漏洞,在特定时间内变异生成新的覆盖新分支的测试数据来持续测试被测智能合约。本发明专利技术提供一种误报少且开销小的交易顺序依赖漏洞测试方法,用于智能合约交易顺序依赖漏洞的自动化检测。

【技术实现步骤摘要】
智能合约交易顺序依赖漏洞变异模糊测试方法
本专利技术属于软件测试
,具体涉及到智能合约中的交易顺序依赖漏洞测试问题,提供了一种智能合约交易顺序依赖漏洞变异模糊测试方法,主要解决现有的交易顺序依赖漏洞检测方法中误报数多、开销大的问题,实现智能合约交易顺序依赖漏洞的高效测试。
技术介绍
以智能合约为代表的区块链技术在数字支付、金融资产处置、云计算、物联网、共享经济等方面有着广阔的应用前景,但是智能合约漏洞频出,智能合约中出现频率最高的10类漏洞为:代码重入、访问控制、整数溢出、未检查call调用返回值、拒绝服务、可预测的随机处理、交易顺序依赖、时间戳依赖、短地址攻击以及其他未知漏洞类型,交易顺序依赖作为智能合约中经常发生的漏洞备受关注。当任何智能合约功能依赖于要确认的交易顺序时,同一个区块内的交易顺序很容易受到操纵,产生交易顺序依赖(Transaction-OrderingDependence,TOD)漏洞。交易顺序依赖也称为竞争条件/非法预先交易问题,即区块中不同的交易顺序会产生不同的交易状态,因此攻击者可以监视交易池中的交易,利用本文档来自技高网...

【技术保护点】
1.智能合约交易顺序依赖漏洞变异模糊测试方法,其特征在于包括以下步骤:/n(1)编译被测智能合约,生成智能合约字节码和智能合约应用程序二进制接口,其中编译后的智能合约字节码以十六进制形式表示,包含三个部分:部署代码、智能合约代码、智能合约加密指纹;/n(2)根据被测智能合约应用程序二进制接口模糊生成测试数据,具体过程为:首先解析被测智能合约应用程序二进制接口,提取所有函数签名,函数签名包括函数描述以及每个函数参数的数据类型,智能合约函数参数数据类型如果是地址类型,地址数据类型的测试数据模糊生成过程为:首先对被测智能合约的每一个应用程序二进制接口生成私有的智能合约池,智能合约池中存放所有支持该应...

【技术特征摘要】
1.智能合约交易顺序依赖漏洞变异模糊测试方法,其特征在于包括以下步骤:
(1)编译被测智能合约,生成智能合约字节码和智能合约应用程序二进制接口,其中编译后的智能合约字节码以十六进制形式表示,包含三个部分:部署代码、智能合约代码、智能合约加密指纹;
(2)根据被测智能合约应用程序二进制接口模糊生成测试数据,具体过程为:首先解析被测智能合约应用程序二进制接口,提取所有函数签名,函数签名包括函数描述以及每个函数参数的数据类型,智能合约函数参数数据类型如果是地址类型,地址数据类型的测试数据模糊生成过程为:首先对被测智能合约的每一个应用程序二进制接口生成私有的智能合约池,智能合约池中存放所有支持该应用程序二进制接口中的函数所调用的智能合约的地址,然后随机选择智能合约池中存放的智能合约地址作为测试数据;如果智能合约函数参数数据类型是定长类型参数,随机地从参数的合法测试数据域中选择一组数值作为测试数据;如果智能合约函数参数数据类型是不定长类型参数,首先随机地生成一个正数作为该参数的长度,随后再对参数中的各个元素随机地从合法测试数据域中选择一组数值作为测试数据;
(3)被测智能合约插桩,具体过程为:调换智能合约中最后两个函数产生的两个不同函数调用顺序的被测智能合约,对原被测智能合约和调换最后两个函数后的被测智能合约字节码都进行函数插桩和分支覆盖插桩:被测智能合约的每个函数插入函数桩,函数内每个分支点插入分支桩;
(4)部署被测智能合约,具体过程为:以太坊虚拟机创建智能合约账户,运行步骤(3)插桩后的两个被测智能合约的部署代码,并将智能合约代码和智能合约加密指纹存储到区块链上,再将二者的存储地址赋值给智能合约账户中的代码哈希字段;
(5...

【专利技术属性】
技术研发人员:孙家泽余盼盼王曙燕
申请(专利权)人:西安邮电大学
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1