CN117992358B - 基于区块链的智能合约跨合约测试方法及装置 - Google Patents
基于区块链的智能合约跨合约测试方法及装置 Download PDFInfo
- Publication number
- CN117992358B CN117992358B CN202410397235.2A CN202410397235A CN117992358B CN 117992358 B CN117992358 B CN 117992358B CN 202410397235 A CN202410397235 A CN 202410397235A CN 117992358 B CN117992358 B CN 117992358B
- Authority
- CN
- China
- Prior art keywords
- call
- contract
- chains
- calling
- chain
- 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
- 238000010998 test method Methods 0.000 title description 5
- 238000012360 testing method Methods 0.000 claims abstract description 160
- 230000006870 function Effects 0.000 claims abstract description 30
- 238000004590 computer program Methods 0.000 claims description 22
- 238000012545 processing Methods 0.000 claims description 7
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000006399 behavior Effects 0.000 claims description 2
- 239000000203 mixture Substances 0.000 claims description 2
- 239000000523 sample Substances 0.000 claims 1
- 238000000034 method Methods 0.000 abstract description 21
- 230000007547 defect Effects 0.000 abstract description 3
- 230000008569 process Effects 0.000 description 9
- 206010033307 Overweight Diseases 0.000 description 6
- 239000000243 solution Substances 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 206010010144 Completed suicide Diseases 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000013101 initial test Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000035772 mutation Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
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
-
- 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/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/3696—Methods or tools to render software testable
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
发明提供一种基于区块链的智能合约跨合约测试方法及装置,所述方法包括通过使用模糊测试工具分析确定待测试的智能合约及其调用链,根据调用链的长度、调用方式、调用次数的任意一种或多种,对调用路径长、直接使用函数来调用其他调用链、调用次数少的调用链设置高优先级;生成模糊测试数据,根据设置的优先级,对优先级高的调用链优先生成测试用例进行测试;使用模糊数据执行测试,通过二分法将监控存在漏洞的调用链拆分成两个长度相同的子链,并分别对子链进行测试,记录缺陷,确定可利用性。与相关技术相比,其能有效的提高模糊测试定位漏洞的效率,且降低模糊测试的成本。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种基于区块链的智能合约跨合约测试方法及装置。
背景技术
目前智能合约跨合约模糊测试的主要采用导向型模糊测试技术,导向型模糊测试通过测试特定目标位置,对存在调用关系的智能合约进行检测。公开号为CN112860588A的专利申请,公开了一种针对智能合约跨合约漏洞的模糊测试,对一组待测智能合约进行调用图和控制流程图扫描分析,根据调用图找到待测智能合约之间的调用链;对于任一条调用链,根据调用链头部函数选择器和调用参数生成测试用例;执行所有测试用例,记录每一测试用例的执行情况和执行路径;根据执行路径,结合控制流程图计算距离度量值,并根据距离度量值,对测试用例进行排序与变异,生成新的测试用例后转入步骤3;对测试用例的执行情况进行分析,判断待测智能合约之间是否存在安全漏洞。
该方案的缺陷在于:测试重点不够清晰,该方案会遍历待测智能合约所有的调用链,由于没有设置调用链的测试顺序,没有测试的优先级,可能会存在先测试了短调用链后测试长调用链,先测试的短调用链被后测试的长调用链覆盖的现象,造成大量冗余重复的测试。
调用链的长度过长问题,调用链路径过长,在分析和追踪问题时就会变得非常困难,需要逐级追踪每个服务的调用过程。
测试成本高。由于每次调用都会消耗一定的费用,如果智能合约之间的调用次数过多,可能会导致执行成本过高。
因此,有必要提供一种新型的基于区块链的智能合约跨合约测试方法及装置,以克服上述缺陷。
发明内容
本发明的目的在于提供一种新型的基于区块链的智能合约跨合约测试方法及装置,其能有效的提高模糊测试定位漏洞的效率,且降低模糊测试的成本。
为了达到上述目的, 本发明提供一种基于区块链的智能合约跨合约测试方法,包括:
通过使用模糊测试工具分析确定待测试的智能合约及其调用链,根据调用链的长度、调用方式、调用次数的任意一种或多种,对调用路径长、直接使用函数来调用其他调用链、调用次数少的调用链设置高优先级;
生成模糊测试数据,根据设置的优先级,对优先级高的调用链优先生成测试用例进行测试;
使用模糊数据执行测试,通过二分法将监控存在漏洞的调用链拆分成两个长度相同的子链,并分别对子链进行测试,记录漏洞,确定可利用性。
本发明还提供一种基于区块链的智能合约跨合约测试装置,该装置包括:
模糊测试工具模块,采用基于AFL框架的模糊测试工具,用于跨合约调调用链的测试;
区块链系统,用来部署模糊测试工具模块和智能合约模块;
智能合约模块,用于部署智能合约和调用其他智能合约,并处理调用异常。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述基于区块链的智能合约跨合约测试方法的步骤。
本发明还提供一种计算机终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述基于区块链的智能合约跨合约测试方法的步骤。
与相关技术相比较,本发明在智能合约跨合约模糊测试技术的基础上,采用智能合约跨合约模糊测试效率的工具,通过使用模糊测试工具识别、扫描、分析调用链,识别输入数据并生成测试用例,分析测试用例所经过的执行路径,对调用链设定优先级,最后再对长调用链进行拆分测试,从而提高模糊测试的效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图,其中:
图1为本发明基于区块链的智能合约跨合约测试方法的工作流程图;
图2为本发明基于区块链的智能合约跨合约测试方法的AFL框架结构图;
图3为本发明基于区块链的智能合约跨合约测试方法的模糊测试工作流程图。
具体实施方式
下面将对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明主要解决智能合约跨合约模糊测试调用链过长、测试重点不清晰、测试成本高等问题。为了更好的解决上述问题,本发明在智能合约跨合约模糊测试技术的基础上,采用智能合约跨合约模糊测试效率的工具,通过使用模糊测试工具识别、扫描、分析调用链,识别输入数据并生成测试用例,分析测试用例所经过的执行路径,对调用链设定优先级,最后再对长调用链进行拆分测试,从而提高模糊测试的效率。
代码覆盖率是模糊测试中一个极其重要的概念,使用代码覆盖率可以评估和改进测试过程,执行到的代码越多,找到缺陷的可能性就越大。在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况。但是对所有代码片段都进行覆盖的做法效率很低,为了对重点代码段进行测试,本发明实施例中采用覆盖引导型模糊测试方式,它通过记录输入样本的代码覆盖率,从而调整输入样本以提高覆盖率,增加发现漏洞的概率。当需要测试的程序有源码时,通过对源码重新编译时插桩(插入分析代码)的方法来探测程序内部的执行路径。
如图1,本发明提供了一种基于区块链的智能合约跨合约测试方法的具体实施步骤如下:
步骤1:识别目标系统,确定待测试的智能合约及其调用链。通过使用模糊测试工具分析来确定合约之间的关系和调用路径,分析智能合约的字节码,对待测智能合约进行扫描分析,找到待测智能合约之间所有的调用链。
步骤2:识别输入数据,设置调用链的优先级。可选的,根据合约调用链的长度、调用方式、调用次数等,对多个合约调用链进行优先级设置。示例的,根据调用链的长度,对调用路径长的设置高权重为高优先级,优先对高权重的合约调用链生成测试用例进行测试;
或根据调用链的调用方式,将直接使用函数来调用其他调用链的设置高优先级,优先对高优先级的调用链生成测试用例进行测试。具体的:在 solidity 中合约之间的相互调用有两种方式:1)使用封装的方式,将合约地址封装成一个合约对象来调用它的函数;2 )直接使用函数来调用其他合约;示例的,在使用方式1)中,solidity 提供了 call()、delegatecall()、callcode() 三个函数来实现合约直接的调用及交互,这些函数的滥用导致了各种安全风险和漏洞,如果处理不当很可能产生致命的漏——跨合约调用漏洞,主要就是call()注入函数导致的。所以对于直接使用函数来调用其他合约的调用链应当设置高的优先级;
或根据调用链的调用次数,对调用次数多的设置高权重,优先对高权重的调用链生成测试用例进行测试。具体的,测试存在自杀倾向的合约时,即进行默认的两次交易并不能检查出错误,而是要调用三次以上函数才能触发,触发合约后合约的所有者(或受委托的第三方)可以使用自杀或自毁方法销毁合约。 取消合约时,将删除其关联的字节码和存储。因此,对于需要调用多次的自毁合约应当会设置低优先级。
优选的,还可选根据调用链的长度、调用方式、调用次数中的一个或多个参数,设置高优先级。示例的,根据调用链的长度,对调用路径长的设置高评分;根据调用链的调用方式,对直接使用函数来调用其他调用链的设置高评分;根据调用链的调用次数,对调用次数少的设置高评分;
根据调用链的长度、调用方式、调用次数的任意一种或多种,对综合评分高的调用链设置高优先级。
步骤3:生成模糊测试数据。根据设置的优先级,对高权重的合约调用链生成测试用例进行测试。在本发明中模糊测试的起点在调用链的起始函数,终点在调用链的终止函数。在测试数据的参数组成上,不仅有函数选择器(FunctionSelector)和调用参数,还有调用链上合约的成员变量值和合约余额,可以对合约进行更充分的测试。
步骤4:使用模糊数据执行测试。本发明实施例中,测试用例从调用链起始函数开始执行,执行时首先根据测试用例更新合约成员变量值和合约余额。合约变量存储在运行合约代码的虚拟机中,可以在对应的虚拟机存储区域中更新数值。然后,执行函数调用运行合约,运行过程中将记录执行路径和指令的执行情况,指令的执行情况包括指令的操作数和执行是否出现异常。
步骤5:监控系统行为。对存在漏洞的调用链,使用二分法将该调用链拆分成两个长度相同的子链,并分别对子链生成测试用例进行测试,循环拆分存在漏洞的子链,直至待测的调用链的长度小于2,即可转入另一调用链进行测试,不断重复,直至完成所有调用链的测试,通过以上过程查找出待测智能合约之间的所有漏洞。
步骤6:记录缺陷,确定可利用性。本发明实施例中,可结合分析结果与漏洞的定义和表现形式,对测试用例的执行情况进行分析,来判断待测智能合约之间是否存在安全漏洞。
如图2和图3所示,本发明的模糊测试工具具体架构如下,基于AFL框架开发的模糊测试工具依赖于使用一小组变异函数将一组有效程序输入转换为新的“子”输入。这些变异函数相当简单,执行诸如翻转输入中的随机字节、插入特殊字符或删除部分输入等操作。因此,这个产生的子输入与其父输入相似但又不同。如果子输入通过影响以前未探索的代码路径来增加代码覆盖率,则将其添加到有效输入队列中,并重复该过程。
而对于每个输入,模糊测试工具覆盖了哪些程序以及它们被执行的大致频率。检测通常在编译时完成,即将程序源代码编译为可执行二进制文件时。此时,可以使用虚拟机(例如QEMU)或动态检测工具(例如Intel PinTool)等在未检测的二进制文件上运行AFL。
模糊测试时,AFL通过记录输入样本的代码覆盖率,从而调整输入样本以提高覆盖率,增加发现漏洞的概率。当需要测试的程序有源码时,AFL通过对源码重新编译时插桩(插入分析代码)的方法来探测程序内部的执行路径。其工作流程大致如下:
步骤1:从源码编译程序时进行插桩,以记录代码覆盖率(Code Coverage);
步骤2:选择一些输入文件,作为初始测试集加入输入队列(queue);
步骤3:将队列中的文件按一定的策略进行“突变”;
步骤4:如果经过变异文件更新了覆盖范围,则将其保留添加到队列中;
步骤5:上述过程会一直循环进行,期间触发了异常结果(crash)的文件会被记录下来。
本发明采用的模糊测试工具,基于AFL框架,通过变异生成大量的测试用例,分析测试用例所经过的执行路径,从而区分引发新的执行路径的更有价值的输入,可以在保证了智能合约相互调用期间的安全性前提下,更快、更有效的找到跨合约漏洞。
本发明采用设定模糊测试用例优先级的方法,通过识别待测试的智能合约及其调用链,分析合约之间的关系和调用路径,以及智能合约的字节码,合约之间所有的调用链。再根据调用链长度来设定优先级,可以优先对高权重的调用链生成测试用例进行测试。
本发明提供的提高模糊测试效率的方法,通过监控测试用例执行,可以对出现漏洞的长调用链进行拆分成子链,再对子链并行测试直至找出漏洞,可以提高模糊测试定位漏洞的效率。
以下为本发明的系统工作模型。
包含模糊测试工具模块,采用基于AFL框架的模糊测试工具,用于跨合约调调用链的测试;
区块链系统,用来部署模糊测试工具模块和智能合约模块;
智能合约模块,用于部署智能合约和调用其他智能合约,并处理调用异常。
与相关技术相比较, 本发明设计的基于区块链的智能合约跨合约漏洞模糊测试,能为智能合约跨合约漏洞测试带来以下益处:
(1)明确测试重点,本发明能够设定调用链的测试优先级,根据调用链调用路径长度逐级向下测试,不会出现短调用链测试被长调用链覆盖的现象,减少了冗余测试。
(2)减少了追踪和定位漏洞的时间,本发明可以通过对出现漏洞的长调用链进行拆分,使用二分法对调用链逐级测试,从而大大减少了定位漏洞的时间。
(3)减少了测试成本,智能合约调用次数过多,会消耗一定的费用,本发明可以减少每次进行模糊测试的成本。
本发明另一方面还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于区块链的智能合约跨合约测试方法的步骤。
作为本发明另一方面的延伸还提供一种计算机终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于区块链的智能合约跨合约测试方法的步骤。
所述处理器执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在终端设备中的执行过程。
所述计算机终端可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。可包括但不仅限于,处理器、存储器。可以包括更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备、总线等。
所述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器可以是内部存储单元,例如硬盘或内存。所述存储器也可以是外部存储设备,例如插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(SecureDigital, SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器还可以既包括内部存储单元也包括外部存储设备。所述存储器用于存储所述计算机程序以及其他程序和数据。所述存储器还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种基于区块链的智能合约跨合约测试方法,其特征在于,包括:
通过使用模糊测试工具分析确定待测试的智能合约及其调用链,根据调用链的长度、调用方式、调用次数的任意一种或多种,对调用路径长、直接使用函数来调用其他调用链、调用次数少的调用链设置高优先级;
生成模糊测试数据,根据设置的优先级,对优先级高的调用链优先生成测试用例进行测试;
使用模糊数据执行测试,通过二分法将监控存在漏洞的调用链拆分成两个长度相同的子链,并分别对子链进行测试,记录漏洞,结合分析结果与漏洞的定义和表现形式,对测试用例的执行情况进行分析,判断待测智能合约之间是否存在安全漏洞。
2.根据权利要求1所述的基于区块链的智能合约跨合约测试方法,其特征在于,所述通过使用模糊测试工具分析确定待测试的智能合约及其调用链包括:
识别目标系统,确定待测试的智能合约及其调用链,通过使用模糊测试工具分析来确定合约之间的关系和调用路径;
分析智能合约的字节码,对待测智能合约进行扫描分析,找到待测智能合约之间所有的调用链;
识别输入数据,确定调用链的长度、调用方式、调用次数的任意一种或多种,以设置调用链的优先级。
3.根据权利要求2所述的基于区块链的智能合约跨合约测试方法,其特征在于,所述识别输入数据,确定调用链的长度、调用方式、调用次数的任意一种或多种,以设置调用链的优先级包括:
根据调用链的长度,对调用路径长的设置高评分;根据调用链的调用方式,对直接使用函数来调用其他调用链的设置高评分;根据调用链的调用次数,对调用次数少的设置高评分;
根据调用链的长度、调用方式、调用次数的任意一种或多种,对综合评分高的调用链设置高优先级。
4.根据权利要求3所述的基于区块链的智能合约跨合约测试方法,其特征在于,所述生成模糊测试数据,根据设置的优先级,对优先级高的调用链优先生成测试用例进行测试包括:
模糊测试的起点在调用链的起始函数,终点在调用链的终止函数;
测试数据的参数组成包括函数选择器和调用参数,以及调用链上合约的成员变量值和合约余额。
5.根据权利要求4所述的基于区块链的智能合约跨合约测试方法,其特征在于,所述使用模糊数据执行测试,通过二分法将监控存在漏洞的调用链拆分成两个长度相同的子链,并分别对子链进行测试,包括:
使用模糊数据执行测试,测试用例从调用链起始函数开始执行,执行时首先根据测试用例更新合约成员变量值和合约余额;
执行函数调用运行合约,记录执行路径和指令的执行情况;
监控系统行为,对存在漏洞的调用链,使用二分法将该调用链拆分成两个长度相同的子链,分别对子链生成测试用例进行测试,循环拆分存在漏洞的子链,直至待测的调用链的长度小于2,查找出待测智能合约之间的所有漏洞。
6.根据权利要求5所述的基于区块链的智能合约跨合约测试方法,其特征在于,所述模糊测试工具采用基于AFL框架的模糊测试工具。
7.根据权利要求6所述的基于区块链的智能合约跨合约测试方法,其特征在于,所述使用模糊数据执行测试包括:
AFL通过记录输入样本的代码覆盖率,从而调整输入样本以提高覆盖率,增加发现漏洞的概率;
AFL通过对源码重新编译时插入分析代码的方法来探测程序内部的执行路径。
8.一种应用如权利要求1-7任一所述的基于区块链的智能合约跨合约测试方法的装置,其特征在于,该装置包括:
模糊测试工具模块,采用基于AFL框架的模糊测试工具,用于跨合约调调用链的测试;
区块链系统,用来部署模糊测试工具模块和智能合约模块;
智能合约模块,用于部署智能合约和调用其他智能合约,并处理调用异常。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述基于区块链的智能合约跨合约测试方法的步骤。
10.一种计算机终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述基于区块链的智能合约跨合约测试方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410397235.2A CN117992358B (zh) | 2024-04-03 | 2024-04-03 | 基于区块链的智能合约跨合约测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410397235.2A CN117992358B (zh) | 2024-04-03 | 2024-04-03 | 基于区块链的智能合约跨合约测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117992358A CN117992358A (zh) | 2024-05-07 |
CN117992358B true CN117992358B (zh) | 2024-07-09 |
Family
ID=90895516
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410397235.2A Active CN117992358B (zh) | 2024-04-03 | 2024-04-03 | 基于区块链的智能合约跨合约测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117992358B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491885A (zh) * | 2018-09-26 | 2019-03-19 | 深圳壹账通智能科技有限公司 | 测试问题定位方法、装置、计算机设备和存储介质 |
CN111782266A (zh) * | 2020-06-28 | 2020-10-16 | 中国工商银行股份有限公司 | 软件性能基准确定方法及装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9720813B2 (en) * | 2015-08-13 | 2017-08-01 | Ca, Inc. | Method and apparatus for recommending regression tests |
CN112860588B (zh) * | 2021-04-07 | 2024-03-29 | 中国科学技术大学 | 一种针对智能合约跨合约漏洞的模糊测试方法 |
CN113138927B (zh) * | 2021-04-30 | 2024-04-16 | 北京沃东天骏信息技术有限公司 | 一种软件功能测试方法和装置 |
CN114840426A (zh) * | 2022-05-10 | 2022-08-02 | 支付宝(杭州)信息技术有限公司 | 一种代码测试的方法及装置 |
CN115562987A (zh) * | 2022-09-30 | 2023-01-03 | 浙江工商大学 | 针对智能合约调用序列优化与资源分配导向的模糊测试方法 |
CN115659335A (zh) * | 2022-10-18 | 2023-01-31 | 哈尔滨工业大学(深圳) | 基于混合模糊测试的区块链智能合约漏洞检测方法及装置 |
CN116610575A (zh) * | 2023-05-23 | 2023-08-18 | 中国电信股份有限公司上海研究院 | 一种软件测试的方法、装置及电子设备 |
CN116795701A (zh) * | 2023-06-21 | 2023-09-22 | 京东科技信息技术有限公司 | 一种接口程序的通用测试实例的生成方法和装置 |
-
2024
- 2024-04-03 CN CN202410397235.2A patent/CN117992358B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491885A (zh) * | 2018-09-26 | 2019-03-19 | 深圳壹账通智能科技有限公司 | 测试问题定位方法、装置、计算机设备和存储介质 |
CN111782266A (zh) * | 2020-06-28 | 2020-10-16 | 中国工商银行股份有限公司 | 软件性能基准确定方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117992358A (zh) | 2024-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Petsios et al. | Slowfuzz: Automated domain-independent detection of algorithmic complexity vulnerabilities | |
Xue et al. | xfuzz: Machine learning guided cross-contract fuzzing | |
EP2976716B1 (en) | Prioritization of tests of computer program code | |
Iannillo et al. | Chizpurfle: A gray-box android fuzzer for vendor service customizations | |
CN110941552A (zh) | 一种基于动态污点分析的内存分析方法及装置 | |
WO2023035751A1 (zh) | 移动端应用的智能混淆 | |
CN115455435A (zh) | 一种智能合约模糊测试方法、装置、存储介质及电子设备 | |
CN110851352A (zh) | 一种模糊测试系统及终端设备 | |
CN115659335A (zh) | 基于混合模糊测试的区块链智能合约漏洞检测方法及装置 | |
CN109446053A (zh) | 应用程序的测试方法、计算机可读存储介质及终端 | |
CN115438351A (zh) | 一种面向eosio智能合约的灰盒模糊测试方法 | |
CN113778890B (zh) | 代码测试方法、装置、电子设备及存储介质 | |
Suneja et al. | Towards reliable AI for source code understanding | |
CN113726613B (zh) | 面向Fabric区块链的性能测试方法 | |
Singh et al. | Parallel chopped symbolic execution | |
Yang et al. | CrossFuzz: Cross-contract fuzzing for smart contract vulnerability detection | |
CN117992358B (zh) | 基于区块链的智能合约跨合约测试方法及装置 | |
CN112416733B (zh) | 一种内存检测方法、内存检测装置及智能设备 | |
Kundu et al. | A UML model-based approach to detect infeasible paths | |
CN117493188A (zh) | 接口测试方法及装置、电子设备及存储介质 | |
Pozza et al. | Comparing lexical analysis tools for buffer overflow detection in network software | |
CN116992453A (zh) | 一种基于栈哈希的漏洞根因自动定位方法及系统 | |
CN116305164A (zh) | 跨合约漏洞检测方法、装置及电子设备 | |
CN114282221B (zh) | 注入类漏洞检测方法、系统、终端及存储介质 | |
Yuan et al. | A method for detecting buffer overflow vulnerabilities |
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 |