System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测装置及检测方法制造方法及图纸_技高网
当前位置: 首页 > 专利查询>河南大学专利>正文

一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测装置及检测方法制造方法及图纸

技术编号:40763135 阅读:8 留言:0更新日期:2024-03-25 20:14
本发明专利技术公开一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测装置及检测方法,该装置包括:模糊引擎模块、交易执行模块、跟踪分析模块及反馈模块;所述模糊引擎模块采用自适应遗传算法为智能合约的所有函数和参数生成多个测试用例个体,并发送到交易执行模块;所述交易执行模块在虚拟的以太坊执行环境中通过智能合约执行生成的测试用例个体;所述跟踪分析模块监测智能合约的执行过程,对执行过程进行分析;包括:整数溢出漏洞分析;所述反馈模块将跟踪分析模块生成的分析信息反馈给模糊引擎模块。本发明专利技术采用自适应遗传算法生成模糊测试用例个体,提高检测过程中的代码覆盖度,提高工具对漏洞的检出率,且降低了漏报率。

【技术实现步骤摘要】

本专利技术涉及以太坊智能合约安全检测,尤其涉及一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测装置及检测方法


技术介绍

1、以太坊是目前最为流行的智能合约平台之一,在以太坊上开发智能合约是很多区块链开发者的首选。然而与传统软件开发不同,智能合约开发需要特别注意安全问题,因为智能合约可能会涉及重要的资产和机密信息,并且一旦部署到区块链上,就无法被修改。如果智能合约存在安全漏洞,黑客就可以利用这些漏洞攻击智能合约并偷窃资产,会给用户带来极大的损失。

2、目前,符号执行和模糊测试是检测智能合约漏洞的两种主要方法。然而,这些方法在实际使用中存在一些限制,如代码覆盖率低和准确率低等问题。对于符号执行,由于智能合约常常包含大量条件分支和致路径爆炸问题,符号执行很难达到足够高的代码覆盖率。同时,符号执行需要手动注入约束条件,而这往往需要专业的知识和技能。对于模糊测试,虽然可以自动化生成大量测试用例,但由于智能合约具有高度的状态依赖性和非确定性,导致模糊测试产生的测试用例质量参差不齐,代码覆盖率低,同时也很难保证检测的准确率。

3、目前在国内外针对区块链以太坊智能合约安全的研究工作也有一些。针对漏洞检测方法可以分为符号执行和模糊测试。

4、符号执行的原理是将智能合约中的每个变量都抽象的表示为符号变量,对合约进行路径探索。当程序执行到条件分支或循环语句时,符号执行系统会根据当前符号变量的符号值生成相应的约束条件。通过约束求解器对生成的约束条件进行求解,通过判断是否存在满足所有约束条件的解来分析该路径是否存在潜在的漏洞。oyente是最早的使用符号执行方法对智能合约进行漏洞检测的工具,它以智能合约字节码和以太坊状态作为输入,根据合约的控制流语句(如条件分支和循环),会构建合约的控制流图,使用符号执行技术来遍历合约的不同执行路径以捕捉到潜在的安全漏洞。但它也存在缺点,因为符号执行的过程可能受到路径爆炸问题的影响,导致无法完全遍历所有可能的执行路径,因此代码的覆盖率低。

5、模糊测试的原理是从目标应用程序中随机生成大量的测试用例,将生成的测试用例提供给目标应用程序,进行多次重复执行,在执行过程中监测程序的异常行为或状态,从而发现程序的漏洞。contractfuzzer是第一个使用模糊测试技术对以太坊智能合约进行漏洞检测的工具,它根据合约的abi对合约中每个函数的描述,为每个函数生成待选输入集。针对一个函数中的多个参数,为每个参数生成n个候选值,将所有参数的n个候选值进行随机组合,产生函数的测试输入集合。这种生成测试用例的方式比较平实,产生了大量的无效测试用例,具有一定的盲目性,其检测效率也不能满足要求。confuzzius在contractfuzzer工具的基础上进行改进,通过引入遗传算法,使用遗传操作如交叉和变异来产生新的个体作为测试用例,一定程度上引导优化了测试用例的生成。但是传统的遗传算法需要设置一系列固定参数,如交叉和变异概率等。随机的选择交叉概率和变异概率显然具有盲目性,不仅会降低遗传算法的收敛速率,而且会产生早熟收敛,造成实验结果的不稳定性。

6、并且,通过对现有漏洞检测工具测试预言机的调研,我们发现,针对整数溢出漏洞,很多工具只考虑到了由加、乘和减操作引起的溢出,但实际上还有其他操作也可能导致整数溢出,例如移位操作,如图1所示。

7、在上述智能合约中,shiftleft函数接受两个参数num和shift,并要求调用者支付交易费用。然后,它将num左移shift位,将结果存储在newnum变量中;然后将newnum乘以2,将结果存储在result变量中,并通过payable向调用者转账所收到的所有交易费用。但是,如果num被设置为uint的最大值2**256-1时候,如果尝试移位使得newnum变为大于2**256-1的值,那么就会发生整数溢出。


技术实现思路

1、本专利技术针对目前存在的以下问题:(1)现有以太坊智能合约检测工具代码覆盖率低,检测准确度低;(2)现有以太坊智能合约检测工具针对整数溢出漏洞的判断往往只集中在由加、乘和减操作引起的溢出,而缺乏对其他操作引起溢出的判断;提出一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测装置及检测方法,具体设计了一种基于自适应遗传算法的漏洞检测方案,还设计了一种基于加,减,乘和移位操作进行整数溢出漏洞判定的测试预言机。

2、为了实现上述目的,本专利技术采用以下技术方案:

3、本专利技术一方面提出一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测装置,包括:模糊引擎模块、交易执行模块、跟踪分析模块及反馈模块;

4、所述模糊引擎模块用于采用自适应遗传算法为智能合约的所有函数和参数生成多个测试用例个体,并将生成的测试用例个体发送到交易执行模块;

5、所述交易执行模块用于在虚拟的以太坊执行环境中通过智能合约执行生成的测试用例个体;

6、所述跟踪分析模块用于监测智能合约的执行过程,对执行过程进行分析;包括:整数溢出漏洞分析;

7、所述反馈模块用于将跟踪分析模块生成的分析信息反馈给模糊引擎模块。

8、进一步地,还包括:

9、编译模块,用于以智能合约的源代码作为输入,执行编译操作,以获得智能合约程序相应的二进制接口和evm运行时字节码,基于所述二进制接口得到智能合约的所有函数和参数。

10、进一步地,所述自适应遗传算法包括:

11、1)根据智能合约的二进制接口为初始种群生成个体;

12、2)按照下式计算每个个体的适应度:

13、f(i)=αfbranch(i)+βfraw(i)

14、其中fbranch(i)是分支覆盖度,通过计算个体在执行交易过程中未探索的代码分支数量得到;fraw(i)是数据依赖度,通过遍历个体的基因序列,计算个体基因中存在读依赖或写依赖的基因数量得到;α+β=1;

15、3)计算种群中所有个体的适应度值,并且进行升序排序;

16、4)按照下式计算排名为i的个体的被选中概率:

17、

18、其中,pmin为最小选择概率,pmax为最大选择概率,i为个体排名,n为种群大小;

19、5)将种群中每个个体的被选中概率放入wheel列表中进行归一化处理;

20、6)通过随机轮盘的方式基于wheel列表选择父个体;

21、7)遍历剩余个体列表,提取每个个体的数据依赖关系,并与父个体的读写操作进行判断;如果存在数据依赖冲突,则返回父个体和当前个体作为父母个体;如果不存在数据依赖冲突,则采用随机轮盘的方式在当前个体列表随机选择一个作为母个体;

22、8)根据父母个体的个体适应度,来确定他们之间的交叉概率pc:

23、

24、其中fmax是种群最大适应度值,fmin是种群最小适应度值;favg是种群平均适应度值;f′是父母个体中较大适应度值,本文档来自技高网...

【技术保护点】

1.一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测装置,其特征在于,包括:模糊引擎模块、交易执行模块、跟踪分析模块及反馈模块;

2.根据权利要求1所述的一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测装置,其特征在于,还包括:

3.根据权利要求2所述的一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测装置,其特征在于,所述自适应遗传算法包括:

4.根据权利要求3所述的一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测装置,其特征在于,所述个体的编码表示如下:

5.根据权利要求2所述的一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测装置,其特征在于,所述整数溢出漏洞分析包括:

6.一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测方法,其特征在于,包括:

7.根据权利要求6所述的一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测方法,其特征在于,在采用自适应遗传算法为智能合约的所有函数和参数生成多个测试用例个体之前,还包括:

8.根据权利要求7所述的一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测方法,其特征在于,所述自适应遗传算法包括:

9.根据权利要求8所述的一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测方法,其特征在于,所述个体的编码表示如下:

10.根据权利要求7所述的一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测方法,其特征在于,所述整数溢出漏洞分析包括:

...

【技术特征摘要】

1.一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测装置,其特征在于,包括:模糊引擎模块、交易执行模块、跟踪分析模块及反馈模块;

2.根据权利要求1所述的一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测装置,其特征在于,还包括:

3.根据权利要求2所述的一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测装置,其特征在于,所述自适应遗传算法包括:

4.根据权利要求3所述的一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测装置,其特征在于,所述个体的编码表示如下:

5.根据权利要求2所述的一种基于自适应遗传算法的以太坊智能合约整数溢出漏洞检测装置,其特征在于,所述整数溢出漏洞分析包括:

6....

【专利技术属性】
技术研发人员:许昊冉樊劲宇赵辉
申请(专利权)人:河南大学
类型:发明
国别省市:

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

1