当前位置: 首页 > 专利查询>浙江大学专利>正文

一种高分支覆盖率的智能合约动态模糊测试方法及系统技术方案

技术编号:37993411 阅读:18 留言:0更新日期:2023-06-30 10:07
本发明专利技术提出了一种高分支覆盖率的智能合约动态模糊测试方法及系统;本发明专利技术分析函数对状态变量的读写依赖关系,生成有序的函数调用序列;分析函数内状态变量的自身读写数据依赖,延长变异函数调用序列;利用基于分支距离反馈方法,迭代地选择优质函数测试输入;通过基于遮罩引导变异方法,快速生成有效的测试输入;动态地调整模糊测试能量的分配,使得合约中每个分支能够得到相对平等的测试资源。本发明专利技术显著地提高了代码覆盖率,能够对智能合约进行更全面、更精准的漏洞分析,具有很好的实用价值和现实意义。价值和现实意义。价值和现实意义。

【技术实现步骤摘要】
一种高分支覆盖率的智能合约动态模糊测试方法及系统


[0001]本专利技术涉及区块链智能合约安全领域,具体涉及一种高分支覆盖率的智能合约动态模糊测试方法及系统。

技术介绍

[0002]区块链是当下最具创新性的互联网技术之一,已经在物联网、医疗、版权保护、供应链金融等各类行业中产生了巨大的推动作用。智能合约运行在区块链上,是一种以信息化方式传播、验证或执行合同的计算机协议(代码)。智能合约的出现革新了传统的中心化应用模式,掀起了去中心化应用的热潮。
[0003]与传统的计算机代码一样,智能合约代码中也可能存在安全漏洞,与传统代码不一样的是,智能合约代码一旦部署到区块链上后便不可更改,这会导致链上合约的漏洞无法修补。特别是,智能合约操纵着数以亿计的加密货币存储和交易,因此很容易成为黑客攻击的目标。当前,频发的智能合约安全事件不仅造成了巨大经济损失,也破坏了区块链的信用体系,制约着区块链的发展,亟待研究有效的漏洞检测方法,在合约上链之前对其进行准确的检测与验证,从而保证区块链上合约的安全性,这是迫在眉睫且具有现实意义的。r/>[0004]模本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种高分支覆盖率的智能合约动态模糊测试方法,其特征在于,包括以下步骤:步骤1:给定一个待测合约,找出合约中所有的状态变量以及包含状态变量的函数;分析每个函数对状态变量的读写操作,根据状态变量的读写数据依赖,计算函数在合约中的调用优先级,从而生成有序的函数调用序列S;其中,调用优先级越高的函数排在序列中越靠前的位置;步骤2:基于步骤1生成的函数调用序列S,执行序列延长变异策略,使得序列S中对状态变量有读写操作的函数被重复调用,并生成延长后的函数调用序列S
m
;步骤3:基于步骤2生成的序列S
m
,初始化序列S
m
中各函数的测试输入,如果测试输入成功覆盖了新的分支语句,则将该测试输入存储到种子队列Q中;如果测试输入未覆盖新的分支语句,则计算测试输入到达该分支语句的距离,保存当前距离最小的测试输入存储到种子队列Q中;根据分支距离反馈,从存储到种子队列Q的测试输入中迭代地选择新的测试输入,进一步利用基于遮罩引导的测试输入变异方法,从而使得生成的测试输入离到达新分支的距离越来越小,最终实现分支的覆盖;步骤4:基于步骤3生成的用于覆盖目标合约分支的测试输入,执行动态模糊测试,对合约中多层嵌套的分支语句以及包含漏洞指令的分支语句分配更高的测试权重值,并在测试过程中动态地调整模糊测试能量,使得合约中所有分支语句在模糊测试过程中都能得到相对平等的测试资源;步骤5:根据模糊测试生成的报告,结合相应的漏洞判断规则,输出漏洞检测结果。2.根据权利要求1所述的智能合约动态模糊测试方法,其特征在于,步骤1具体包括以下步骤:1.1)给定一个待测合约,找出合约中所有的状态变量以及包含状态变量的函数;1.2)分析函数对状态变量执行的读写操作,根据状态变量的读写数据依赖,计算函数在合约中的调用优先级:如果函数F1对状态变量V执行写操作,而函数F2对状态变量V执行读操作,那么可以得出:函数F2读取的状态变量V依赖函数F1对状态变量V进行写操作后的返回值,这说明函数对状态执行写操作拥有更高的调用优先级,同时也表明F1应该在F2之前被执行;1.3)根据上述函数调用优先级的计算,优先级越高的排在序列中越靠前的位置,由此生成有序的函数调用序列S。3.根据权利要求2所述面向智能合约动态模糊测试的高分支覆盖率方法,其特征在于,步骤1.2)具体为:给定合约的函数集合为F={F1,F2,

,F
n
},其中,n表示函数的个数;对于某个函数F
i
,F
i
中出现的状态变量集合为V
i
={V
i1
,V
i2
,

,V
im
},其中m表示F
i
中状态变量出现的次数,V
ik
表示F
i
中出现的第k个状态变量;对于每个状态变量V
ik
,都有有唯一的标识符ID,记为对于给定的函数F
i
,其调用优先级Caller_Priority_
i
的计算过程如下:其中,1≤i≤n,1≤j≤n且i≠j,M
i
表示F
i
中状态变量出现的次数,表示标识符为ID、在F
j
中出现的第p个的状态变量,表示标识符为OP、在F
j
中出现的第p个的状态变量,函数cmp()用于判断两个状态变量是否相同,即是否具有相同的标识符,若相同则为1,否则
为0;约定调用优先级小的函数拥有更高的执行优先级;当函数的调用优先级计算结果相同时,规定参数列表数量更多的函数拥有更高的调用优先级;且默认合约中的构造函数具有最高的调用优先级。4.根据权利要求2所述的智能合约动态模糊测试方法,其特征在于,步骤1.3)还包括对合约中函数间的调用关系进行分析,记录函数调用关系对,(F
j
,F
k
)表示合约中的函数F
j
调用了函数F
...

【专利技术属性】
技术研发人员:钱鹏朱骏驰陈建海刘振广何钦铭
申请(专利权)人:浙江大学
类型:发明
国别省市:

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

1