System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
一种基于混合模糊测试的智能合约漏洞检测方法和系统,用于eosio智能合约漏洞检测,属于网络安全。
技术介绍
1、eosio智能合约是一种关键的区块链技术,旨在提供一个可靠、高效的环境,支持在沙盒式内存中执行的程序。这种独特的设计使得合约能够在安全的环境中运行,同时为开发者提供了强大的功能。eosio作为主要的区块链平台之一,采用了wasm(webassembly)智能合约,这种先进的技术被广泛认可并被应用于各种领域。wasm智能合约以其跨平台性、高性能、安全性、紧凑的字节码和多语言支持著称,在不同系统上运行并提供快速响应,为区块链生态系统带来更多优势。随着时间的推移,eosio区块链上已部署了大量智能合约,覆盖金融服务至供应链管理等多个行业,为用户和开发者带来了广泛的可能性。
2、然而,尽管eosio智能合约具有令人瞩目的潜力,但它们也面临着重大的安全挑战。这些挑战包括来自恶意攻击者的各种漏洞利用,可能导致严重的安全漏洞和系统威胁。最大的问题之一是合约源代码的开放审查不足,这使得发现潜在漏洞的难度增加。缺乏对合约代码的透明性和开放性审查成为了安全性的潜在隐患。智能合约的漏洞不仅仅对合约本身构成威胁,还对整个eosio平台的安全性带来潜在风险。因此,开发eosio智能合约漏洞检测工具变得尤为重要。
3、在eosio智能合约漏洞检测领域,已有方法通常集中在符号执行和模糊测试方面。eosafe和wasmod采用了符号执行技术,但受到路径爆炸问题的制约。尽管它们采用了一些启发式方法以缓解这个问题,但在复杂的合约中
4、通过对eosio智能合约检测工具进行仔细审查,得出以下观察结果。(1)当前的一些系统(例如sfuzz和harvey)倾向于随机生成函数调用序列,却忽略了函数之间的数据依赖性,而智能合约在其生命周期中会经历多种状态。(2)现有的混合模糊器(如wasai)在符号执行求解过程中通常一视同仁地对待程序分支,并在选取下一轮种子时使用深度优先搜索方法。这可能导致在对正常分支进行模糊测试时浪费大量资源,并且无法深入研究那些罕见或更可能存在错误的关键分支。(3)当前的工具通常仅通过识别函数中调用的敏感函数来标记漏洞,未能准确追踪参数值的传播路径。这种方法存在局限性,因为与敏感函数相关的敏感值未必会被用于触发转账或其他潜在危险操作,过度依赖敏感函数调用的检测可能会导致漏洞误报。
技术实现思路
1、本专利技术为了应对上述挑战,提出了一种基于混合模糊测试的智能合约漏洞检测方法,具体步骤如下:
2、s1:转换智能合约的wasm字节码为wat文件,判断合约中是否存在函数依赖,使用基于数据依赖和权重分配的策略生成函数调用序列,解决内部函数依赖,通过静态分析应用程序二进制接口(application binary interface,abi)文件生成测试用例,执行交易并记录日志;
3、s2:根据执行日志构建符号约束,利用wasm指令模拟器模拟合约执行,采用基于启发式的路径选择策略,优先选择易受攻击的分支,利用求解器解决约束,生成新的种子,以进一步探索路径;
4、s3:分析合约执行日志,结合漏洞检测规则和基于依赖关系的污点分析技术,追踪数据流动路径并识别潜在安全漏洞,生成漏洞检测报告。
5、本专利技术的技术方案特征和改进为:
6、对于步骤s1,本专利技术采用了一种基于数据依赖和权重分配的策略,为合约生成函数调用序列以解决合约内的函数依赖。这种策略能更智能地构建合约测试用例,模拟不同的使用场景。关键在于为数据库读写应用程序编程接口(application programminginterface,api)分配权重值,分别赋予写操作和读操作较高和较低权重,计算合约内每个函数的总权重值,赋予高权重函数较高的优先级,生成函数调用序列;
7、对于步骤s2,本专利技术采用了基于启发式的路径选择策略。根据各个分支中是否存在敏感函数的调用来选择重要的分支进行求解,以优化资源分配,确保首先关注最可能引发安全风险的分支。这一改进的路径选择策略不仅提高了分析的效率,还有助于更准确地识别潜在的安全问题,从而加强了代码审查和安全性测试的质量。同时,为了缓解符号执行中的路径爆炸,本方法跳过了其它冗余信息,只分析执行的交易信息;
8、对于步骤s3,本专利技术采用了一种基于依赖关系的污点分析技术,动态的跟踪污染数据的传播路径。这种分析技术有助于准确定位潜在漏洞,提高智能合约的安全性评估准确性,确保真正的风险能够被有效检测出来。
9、一种智能合约安全漏洞检测系统,包括:
10、序列生成模块:用于生成测试输入,转换智能合约的wasm字节码为wat文件,判断合约中是否存在函数依赖,使用基于数据依赖和权重分配的策略生成函数调用序列,解决内部函数依赖,通过静态分析abi文件生成测试用例,执行交易并记录日志;
11、符号执行模块:用于生成新的种子数据,根据执行日志构建符号约束,利用wasm指令模拟器模拟合约执行,采用基于启发式的路径选择策略,优先选择易受攻击的分支,利用求解器解决约束,生成新的种子,以进一步探索路径;
12、漏洞检测模块:用于检测合约漏洞,分析合约执行日志,结合漏洞检测规则和基于依赖关系的污点分析技术,追踪数据流动路径并识别潜在安全漏洞,生成漏洞检测报告。
13、本专利技术基于混合模糊测试的智能合约漏洞检测方法,解决了现有技术存在不能有效生成函数调用序列以跟踪函数之间的依赖关系、缺乏对敏感信息流的有效追踪、存在大量误报等问题,具有以下优点:
14、采用了基于数据依赖和权重分配策略,以识别函数间的依赖关系,并生成相应的函数调用序列。尽可能全面地覆盖智能合约的各种执行路径,从而帮助检测潜在的漏洞;
15、采用了基于启发式的路径选择策略,以增强测试用例的选择并更快拓展到新的执行路径;
16、采用了基于依赖关系的污点分析技术,以详细追踪敏感值的传播路径,显著地降低了误报率。
本文档来自技高网...【技术保护点】
1.一种基于混合模糊测试的智能合约漏洞检测方法,其特征在于,包括如下操作:
2.根据权利要求1所述的智能合约漏洞检测方法,其特征在于,所述S1中生成函数调用序列的操作具体为:
3.根据权利要求1所述的智能合约漏洞检测方法,其特征在于,所述S2中基于启发式的路径选择策略的操作具体为:
4.根据权利要求1所述的智能合约漏洞检测方法,其特征在于,所述S3中基于依赖关系的污点分析技术的操作具体为:
5.一种基于混合模糊测试的智能合约漏洞检测系统,其特征在于,包括:
【技术特征摘要】
1.一种基于混合模糊测试的智能合约漏洞检测方法,其特征在于,包括如下操作:
2.根据权利要求1所述的智能合约漏洞检测方法,其特征在于,所述s1中生成函数调用序列的操作具体为:
3.根据权利要求1所述的智能合约漏洞检测方法,其特征在...
【专利技术属性】
技术研发人员:陈矗,王暄,任平红,于斌,袁子轩,李瑞雪,
申请(专利权)人:曲阜师范大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。