基于效用调节策略的智能合约漏洞检测方法技术

技术编号:39002264 阅读:8 留言:0更新日期:2023-10-07 10:34
本发明专利技术公开一种基于效用调节策略的智能合约模糊测试方法和系统,首先,模糊测试系统对待测智能合约进行预处理,获取合约中各函数相关的结构信息和分支信息,随机生成初始测试用例并同等地分配到模糊器所生成的分支覆盖测试用例池和数据依赖测试用例池中;然后,模糊测试系统会根据不同测试用例池中自身测试用例优化策略对各自包含的测试用例进行优化迭代;最后,模糊测试系统分别执行不同测试用例池中的测试用例,分析其字节码执行逻辑并报告漏洞,执行完毕后计算不同测试用例池的效用值并重新分配测试用例池中测试用例的个数。本发明专利技术有效地提升了智能合约模糊测试的测试效率,能探索到被测智能合约中更多分支,并能发现更多合约漏洞。现更多合约漏洞。现更多合约漏洞。

【技术实现步骤摘要】
基于效用调节策略的智能合约漏洞检测方法


[0001]本专利技术属于智能合约安全漏洞检测
,具体涉及一种基于效用调节策略的智能合约漏洞检测方法和系统。

技术介绍

[0002]智能合约是在区块链基础设施上执行的图灵完备程序,与传统程序不同,智能合约一旦部署就无法针对暴露出的漏洞进行修补。智能合约模糊测试作为智能合约漏洞检测的一种手段,具有自动化、检测准确率高优点。
[0003]基于模糊测试的智能合约漏洞检测相关的开源工具和专利如下:
[0004]ContractFuzzer是第一个将模糊测试技术引入到智能合约漏洞检测的工具,其通过合约的ABI文件来生成智能合约模糊测试输入并通过预言机方式来检测漏洞问题。sFuzz工具考虑到了智能合约中如何突破复杂分支的问题,提出基于距离度量的模糊测试方法。SMARTIAN通过静动态相结合的方式来生成更有效的交易序列,并通过模糊执行阶段来分析智能合约的漏洞问题。ConFuzzius是一款混合模糊测试工具,当模糊器没有进展时,会开启符号执行器来求解有效参数。
[0005]CN115794625A提出了一种基于遗传算法的模糊测试方法,通过对包含测试用例的种群不断进行选择、交叉和变异来生成新的可供模糊化的测试用例。
[0006]CN115659358A通过特定变异方式对各待测交易序列及其函数参数进行变异,生成可供执行的测试用例。CN115455435A利用测试用例执行过程中的覆盖率信息来指导后续测试用例的生成。CN114840857A采用了一种多级覆盖策略的方式,利用测试用例是否出现新的覆盖特性来指导测试用例的迭代过程。
[0007]但是,上述智能合约模糊测试工具和专利都是采用的单一的测试用例优化策略,并未考虑到根据智能合约运行过程来动态调整检测策略,无法对当前智能合约针对性的进行漏洞检测。导致模糊资源会浪费在正常的测试用例执行过程中,从而降低模糊测试在当前智能合约漏洞检测上的效率。针对上述问题,本专利技术提出了基于效用调节策略的智能合约模糊测试方法和系统,其特点是:模糊系统中存在多个测试用例优化方案,通过在模糊执行过程中,不同测试用例对于漏洞检测能力的不同,将模糊器资源更多的分配到更适合检测当前智能合约漏洞的测试用例优化方案中。

技术实现思路

[0008]现有的智能合约模糊测试工具和专利都是采用的单一的测试用例优化策略,并未考虑到根据智能合约运行过程来动态调整检测策略,无法对当前智能合约针对性的进行漏洞检测。导致模糊资源会浪费在正常的测试用例执行过程中,从而降低模糊测试在当前智能合约漏洞检测上的效率。针对上述问题,本专利技术提出了一种基于效用调节策略的智能合约模糊测试方法,主要包括三个阶段:预处理阶段、优化处理阶段和执行分析阶段。首先,模糊测试系统对待测智能合约进行预处理,获取合约中各函数与状态变量之间的依赖信息和
各函数中所包含的分支信息,模糊器通过分析合约编译后的ABI文件随机生成初始测试用例并同等地分配到模糊器所生成的分支覆盖测试用例池和数据依赖测试用例池中;然后,模糊测试系统会根据不同测试用例池中自身测试用例优化策略对每个测试用例池中所包含的测试用例进行优化迭代;最后,模糊测试系统分别执行不同测试用例池中的测试用例,分析其字节码执行逻辑并报告漏洞,执行完毕后模糊器计算不同测试用例池的效用值并重新分配各个测试用例池中测试用例的个数。
[0009]1.本专利技术的预处理阶段
[0010]首先,对智能合约进行静态分析并获取智能合约的ABI文件,利用Slither工具将ABI文件转换为Slither的中间表示(Intermediate Representation,IR),即Slither IR,并在Slither IR上使用Slither工具中的数据收集相关API以收集函数与合约状态变量的依赖信息、函数中所包含的分支信息等;
[0011]其次,利用solc工具根据ABI文件提取公开函数签名,构建函数选择器映射表,并循环顺序选择可用函数编码为初始测试用例。
[0012]最后,模糊器创建分支覆盖测试用例池和数据依赖测试用例池并同等的将初始测试用例分配到两个测试用例池中。
[0013]1.1静态分析
[0014]1.1.1ABI文件生成
[0015]模糊测试系统会将用户给定的智能合约编译为应用二进制接口文件(Application Binary Interface,ABI),并通过Slither工具将ABI文件转换为Slither IR中间表示;
[0016]1.1.2合约信息获取
[0017]模糊测试系统在Slither IR上调用Slither工具相关API用于收集合约中的三类信息,并将其用于指导后续测试用例优化过程;
[0018]所收集的三类信息包括:函数与该函数所定义的状态变量信息(F∶S
define
);函数与该函数所使用的状态变量信息(F∶S
use
);函数与该函数分支覆盖数据信息(F∶B);其中,F表示合约中的函数,S
define
表示函数中定义的状态变量,S
use
表示函数中使用的状态变量,B表示函数分支覆盖信息。
[0019]1.1.3可用函数获取
[0020]该模糊测试系统基于JSON格式的ABI文件,使用solc工具提取ABI中所有声明的公开函数签名。系统使用前四字节hash值计算函数签名的选择器m
l
,其中0≤l≤max,max为整个合约中的最大可用函数个数。并使用该选择器构建一个映射M。在映射M中,每个函数选择器都对应一个由函数名称和函数入参信息组成的元组。例如,如果函数名为"transfer",函数入参为"address to,uint256 value",则该元组为("transfer",["address","uint256"]),映射M将所有的函数选择器与其对应的元组关联起来,以便后续的模糊测试能够对所有公开函数进行随机调用。同时,该系统会自动过滤掉ABI文件中不会改变合约状态的函数,如视图函数、纯函数,以确保模糊测试仅针对会更改合约状态的函数进行。
[0021]1.1.4分支覆盖信息排序
[0022]对1.1.2中所获取的(F∶B)信息,依据顺序排列原则将(F∶B)信息按照分支覆盖率由大到小的顺序进行排列,其中最低分支覆盖率函数为F
min
,最高分支覆盖函数为F
max
。特别
地,初始时各函数分支覆盖率为0。每次测试用例执行完毕后,更新(F∶B)信息并对其进行重排序。
[0023]1.1.5用户配置获取
[0024]系统读取用户输入并保存以下配置信息.
[0025]1.2测试用例池初始化
[0026]1.2.1测试用例池生成
[0027]系统首先在内存中生成两个长度为c的测试用例的集合,该集合中保存的是被编码后的测试用例。两个集合初始时分别定义为分支覆盖测试用本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于效用调节策略的智能合约模糊测试方法,其特征在于,包括:预处理阶段,模糊测试系统对待测智能合约进行预处理,获取合约中各函数相关的结构信息和分支信息,随机生成初始测试用例并同等地分配到模糊器所生成的分支覆盖测试用例池和数据依赖测试用例池中;优化处理阶段,模糊测试系统根据不同测试用例池中自身测试用例优化策略对各自包含的测试用例进行优化迭代;执行分析阶段,模糊测试系统分别执行不同测试用例池中的测试用例,分析其字节码执行逻辑并报告漏洞,执行完毕后计算不同测试用例池的效用值并重新分配测试用例池中测试用例的个数。2.根据权利要求1所述的一种基于效用调节策略的智能合约模糊测试方法,其特征在于,预处理阶段包括:对智能合约进行静态分析处理收集智能合约相关信息,包括:函数与该函数所定义的状态变量信息(F:S
define
);函数与该函数所使用的状态变量信息(F:S
use
);函数与该函数分支覆盖数据信息(F:B);其中,F表示合约中的函数,S
define
表示函数中定义的状态变量,S
use
表示函数中使用的状态变量,B表示函数分支覆盖信息;根据ABI文件信息生成初始测试用例;模糊器创建两个测试用例池并分配初始测试用例。3.根据权利要求2所述的一种基于效用调节策略的智能合约模糊测试方法,其特征在于,测试用例池生成,包括:2.1系统在内存中生成两个长度为c的测试用例的集合,该集合中保存的是被编码后的测试用例;两个集合初始时分别定义为分支覆盖测试用例池数据依赖测试用例池其中代表第j个测试用例池中的第i个测试用例,且i=c,j=(1,2),当j=1时代表分支覆盖测试用例池中的测试用例,j=2时代表数据依赖测试用例池中的测试用例;2.2价值量计算公式注册系统会针对分支覆盖测试用例池P
branch
和数据依赖测试用例池P
data
注册不同的价值量计算公式,价值量计算公式用于量化当前测试用例的价值,并用于后续对于测试用例的替换过程;2.3效用值初始化测试用例池P
branch
和P
data
在初始时分配一个数值为0的效用值,该效用值会在执行阶段动态调整并用于P
branch
和P
data
之间测试用例个数的重分配过程;2.4测试用例初始化2.4.1测试用例构造对于测试用例的编码工作将所选取的函数参数信息与环境信息一同编码为一笔交易tx,同时扩展编码字段θ用于记录模糊执行过程中那些参数发生了突变;本发明对每个测试用例T
ij
的形式化描述如下所示:
测试用例T
ij
是第j个测试用例池中的第i个测试用例,是一系列交易tx
k
的有序集合,即交易执行顺序,其中k的最大值通过用户配置中获取,默认值为8,代表测试用例最大长度限于8笔交易;测试用例初始化时k=1;本发明对每笔交易tx
k
的形式化描述如下所示:tx
k
=(δ,ε,θ)
k
交易tx
k
是由环境信息δ、参数信息ε和额外信息θ构成的三元组;三元组(δ,ε,θ)
k
代表第k笔交易tx
k
;本发明对于环境信息δ的形式化描述如下式所示:δ=(b,t,d)环境信息δ由三部分组成,其中b为区块号,t为时间戳,d为区块难度;本发明对于参数信息ε的形式化描述如下式所示:ε=(f,gl)参数信息ε由两部分组成,一个是函数相关信息f,另一个为gas消耗的最低限制gl;本发明对于函数相关信息f的形式化描述如下式所示:f∈(m1(p1,p2,...p
m
),m2(p1,p2,...p
m
),...,m
l
(p1,p2,...p
m
))函数相关信息f中包含:其一为函数选择器m
l
,其中0≤l≤max,其中max为整个合约中的最大可用函数个数;其二为函数入参p
m
,m代表当前函数最大的入参个数,其中0≤m;本发明对于额外信息θ的形式化描述如下式所示:额外信息θ,为了方便模糊测试中实现本发明的引导参数进行突变的关键,θ里面保存的是上一轮次中突变的参数,因此它是函数参数的一个子集;2.4.2初始测试用例分配在2.4.1中初始化时所生成的所有测试用例会被同等地分配到分支覆盖测试用例池P
branch
和数据依赖测试用例池P
data
中,用于后续模糊器根据不同优化策略进行优化。4.根据权利要求3所述的一种基于效用调节策略的智能合约模糊测试方法,其特征在于,价值量计算公式注册,包括:2.2.1分支覆盖测试用例池价值量注册:对于分支覆盖测试用例池中测试用例的价值量Val_b,其判断公式由式(1

1)所示:其中Val_b(T
i1
)代表分支覆盖测试用例池P
branch
中第i个测试用例的价值量;newBranch(T
i1
)为测试用例T
i1
新发现的分支个数,即触发跳转的分支个数;totalFindBranch(T
i1
)为当前测试时用例T
i1
共计发现的分支数量;totalBranch(T
i1
)为该测试用例T
i1
所拥有的所有分支数量;2.2.2数据依赖测试用例池价值量注册:对于数据依赖测试用例池中测试用例的价值量Val_d,其判断公式由式(1

2)所示:其中代表数据依赖测试用例池P
data
中第i个测试用例的价值量;
为当前测试用例新发现的分支个数;代表当前测试用例中各个状态变量读写对的个数,即一个状态变量被先定义后使用的次数。5.根据权利要求2所述的一种基于效用调节策略的智能合约模糊测试方法,其特征在于,优化处理阶段:模糊测试系统会根据不同测试用例池中测试用例优化策略来针对性的进行测试用例优化迭代;包括:对于测试用例中交易序列的优化迭代和对于单笔交易中参数的优化迭代;在模糊测试过程中,每个独立的测试用例池中的测试用例都会进行参数突变以及交易序列优化;其中对于交易序列优化行为,分支覆盖测试用例池对于测试用例的优化更加关注于函数分支覆盖的提升;数据依赖测试用例池对于测试用例的优化更加关注于创建具有数据依赖关系的测试用例。6.根据权利要求5所述的一种基于效用调节策略的智能合约模糊测试方法,其特征在于,测试用例优化,包括:3.1参数突变对于两个测试用例池采用同等的参数突变方案,该方案重点聚焦于函数信息f中的参数部分以及额外信息θ;3.1.1测试用例选取系统会并行遍历测试用例池P
branch
和P
data
中的测试用例,并获取其中测试用例T
ij
;3.1.2待突变交易选取系统遍历测试用例T
ij
中所有的交易tx
k
,并以P的概率确定是否对当前交易参数进行突变,其中包括参数信息ε与环境信息δ;3.1.3参数信息突变测试用例池P
branch
和P
data
采用相同的参数信息突变方案:对函数信息f中的参数部分进行突变;突变方式包括:广度突变α:系统会获取θ信息中保存的函数参数信息(p
i
,p
j
,...,p
k
),并在当前参数突变阶段不再突变参数(p
i
,p
j
,...,p
k
),并随机选择其余参数(p
q
,p
p
,...,p
m
)中的一个或多个进行随机突变;深度突变β:系统会获取θ信息中保存的函数参数信息(p
i
,p
j
,...,p<...

【专利技术属性】
技术研发人员:徐向华王顺
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:

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

1