System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于分布式符号执行的智能合约漏洞检测技术制造技术_技高网

一种基于分布式符号执行的智能合约漏洞检测技术制造技术

技术编号:40000014 阅读:6 留言:0更新日期:2024-01-09 03:17
本发明专利技术属于区块链技术领域,尤其是一种基于分布式符号执行的智能合约漏洞检测技术,针对现有的缺少全局信息状态监控,不能保证信息的完整性的问题,现提出如下方案,其包括如下步骤:步骤一,初始化,主要分为节点初始化和状态队列初始化,节点初始化为主节点启动并初始化系统状态和参数,启动默认参数数量的工作节点,并告知主节点当前可用性和负载情况,状态队列初始化为主节点以合约的操作码为输入,进行初步的符号执行得到初始符号状态推入状态队列中;将进一步缩短约束求解时间,进而缩短整体检测时间。

【技术实现步骤摘要】

本专利技术涉及区块链,尤其涉及一种基于分布式符号执行的智能合约漏洞检测技术


技术介绍

1、智能合约漏洞检测工具基于的技术方案有多种,如符号执行,模糊测试,静态分析等。目前基于符号执行技术的检测工具种类较多,检测效果较好,但是它所消耗的检测时间也更长。导致上述问题的原因主要是符号执行本身可能存在的路径爆炸和约束求解的风险。当分析的智能合约代码量较大,代码中的分支路径较多时,符号执行树的分支数量也将呈指数级别增长。而目前的检测工具大部分都是运行在单机环境中,面对这些大型的合约时,无法在规定时间内完成路径探索,进而无法完成相应的漏洞检测。

2、智能合约是一种基于区块链的自动化合约,其执行过程有可能存在潜在的漏洞和安全隐患,从而造成无可预估的经济损失,为了检测和修复这些漏洞,工业界和学术界提出了各种方法,其中符号执行是大部分漏洞检测工具采取的核心方案。符号执行是一种程序分析方法,通过对程序的每个路径进行符号计算,可以自动生成所有可能的输入条件和执行路径。通过对智能合约进行符号执行,可以发现合约中存在的潜在漏洞。然而目前的漏洞检测工具都无法突破符号执行本身带来的性能限制,即路径爆炸和约束求解困难问题。随着链上智能合约的代码量越来越大,该检测性能问题也将越加严重;现有的技术缺点有:

3、1、缺少全局信息状态监控,当前的智能合约漏洞检测工具,由于其单进程的架构,其漏洞检测和符号执行的信息均分散在各个步骤中,简单粗暴地进行并行化后,将不能保证信息的完整性;

4、2、并行化程度不足,现有并行符号执行技术大部分无法直接迁移到智能合约漏洞检测场景,即使小部分是针对智能合约场景,其并行也仅限于单机的并行,即利用单机下多核cpu的特性做多进程并行,但当代码检测量过大时,仍然会受到单机资源的限制。

5、针对上述问题,本专利技术文件提出了一种基于分布式符号执行的智能合约漏洞检测技术。


技术实现思路

1、本专利技术提供了一种基于分布式符号执行的智能合约漏洞检测技术,解决了现有技术中存在缺少全局信息状态监控,当前的智能合约漏洞检测工具,由于其单进程的架构,其漏洞检测和符号执行的信息均分散在各个步骤中,简单粗暴地进行并行化后,将不能保证信息的完整性的缺点。

2、本专利技术提供了如下技术方案:

3、一种基于分布式符号执行的智能合约漏洞检测技术,包括如下步骤:

4、步骤一:初始化,主要分为节点初始化和状态队列初始化,节点初始化为主节点启动并初始化系统状态和参数,启动默认参数数量的工作节点,并告知主节点当前可用性和负载情况,状态队列初始化为主节点以合约的操作码为输入,进行初步的符号执行得到初始符号状态推入状态队列中;

5、步骤二:任务分派,主节点从状态队列中获取一个待处理的符号执行子树任务,并将它分派给一个空闲的工作节点;

6、步骤三:符号执行与漏洞检测,工作节点接收到任务后,开始执行符号执行子树任务和漏洞检测任务,对于符号执行子树任务,工作节点按照符号执行的方式逐步探索不同的执行路径和输入条件,并生成相应的符号执行约束集合,对于智能合约漏洞检测任务,工作节点利用漏洞规则模块进行检测,此处的漏洞规则在不同的工作节点中均为相同的检测逻辑;

7、步骤四:缓存查询,如果在工作节点执行任务的过程中需要进行约束求解,工作节点可以从主节点的约束求解缓存中获取历史结果,以减少约束求解的开销,主节点负责维护和更新约束求解缓存;

8、步骤五:负载均衡,主节点监测工作节点的负载情况,根据负载情况动态地将符号状态分配给工作节点;

9、步骤六:结果汇总,当主节点和各个工作节点中的状态队列均为空时,表示符号执行树已执行完毕,此时各个工作节点将本地的漏洞检测报告和符号执行历史信息传递至主节点进行汇总,主节点做去重等操作汇总后,生成最终的漏洞检测报告。

10、在一种可能的设计中,所述主节点做分配时的信息主要来源于工作节点和主节点间的信息通道,所述信息通道周期性地将工作节点的内部执行信息传递给主节点,所述主节点基于内部执行信息可以获取各个工作节点的当前状态用于做符号状态分配平衡各个工作节点的负载。

11、在一种可能的设计中,所述主节点用于收集工作节点的状态信息,所述状态信息包括节点的可用性、当前负载情况、处理能力、cpu可用核数、内存当前可用大小、工作节点状态队列长度,所述主节点根据收集到的工作节点信息能计算每个工作节点的负载指标,所述负载指标可以根据cpu利用率、任务队列长度或任务队列任务平均等待时间进行计算。

12、在一种可能的设计中,所述主节点根据负载指标和任务队列中的情况将符号状态分配给不同的工作节点,所述主节点根据负载指标选择合适的工作节点执行任务,所述工作节点默认选择cpu利用率最高、节点内任务队列长度最短的。

13、在一种可能的设计中,所述工作节点从队列中按照探索策略获得对应的待处理符号状态。

14、在一种可能的设计中,所述工作节点利用并行符号执行模块通过以待处理符号状态为输入,并行执行子树内容,所述工作节点在过程中生成的新状态将重新被推入到状态队列中。

15、在一种可能的设计中,所述工作节点在做状态符号执行和漏洞检测的过程中会遇到约束集合求解的任务,所述工作节点遇到求解任务时将先去访问主节点中的求解缓存集合,所述求解缓存集合中有相同约束时将直接复用之前的求解结果以提高整体的执行速度。

16、在一种可能的设计中,所述工作节点将于两类时间点主动向主节点提交自身信息,所述自身信息包括状态队列长度、当前可用资源,所述两类时间点分别为当工作节点队列长度为0且该状态保持超过1个时间片后和周期时间点。

17、应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本专利技术。

18、本技术方案中,本专利技术中阐述的工作节点的并行符号执行模块将充分利用本机的cpu资源并行执行符号执行子树,同时约束缓存查询也将进一步缩短约束求解时间,进而缩短整体检测时间;

19、本技术方案中,本专利技术中阐述的主节点-工作节点框架,不仅限于单机模式,而是可以扩展到多机分布式场景下,具体实现基于云服务器的弹性计算等服务,做到按需扩展工作节点计算集群,框架整体扩展性和灵活性都较强。

本文档来自技高网...

【技术保护点】

1.一种基于分布式符号执行的智能合约漏洞检测技术,其特征在于,包括如下步骤:

2.根据权利要求1所述的一种基于分布式符号执行的智能合约漏洞检测技术,其特征在于,所述主节点做分配时的信息主要来源于工作节点和主节点间的信息通道,所述信息通道周期性地将工作节点的内部执行信息传递给主节点,所述主节点基于内部执行信息可以获取各个工作节点的当前状态用于做符号状态分配平衡各个工作节点的负载。

3.根据权利要求2所述的一种基于分布式符号执行的智能合约漏洞检测技术,其特征在于,所述主节点用于收集工作节点的状态信息,所述状态信息包括节点的可用性、当前负载情况、处理能力、CPU可用核数、内存当前可用大小、工作节点状态队列长度,所述主节点根据收集到的工作节点信息能计算每个工作节点的负载指标,所述负载指标可以根据CPU利用率、任务队列长度或任务队列任务平均等待时间进行计算。

4.根据权利要求3所述的一种基于分布式符号执行的智能合约漏洞检测技术,其特征在于,所述主节点根据负载指标和任务队列中的情况将符号状态分配给不同的工作节点,所述主节点根据负载指标选择合适的工作节点执行任务,所述工作节点默认选择CPU利用率最高、节点内任务队列长度最短的。

5.根据权利要求4所述的一种基于分布式符号执行的智能合约漏洞检测技术,其特征在于,所述工作节点从队列中按照探索策略获得对应的待处理符号状态。

6.根据权利要求5所述的一种基于分布式符号执行的智能合约漏洞检测技术,其特征在于,所述工作节点利用并行符号执行模块通过以待处理符号状态为输入,并行执行子树内容,所述工作节点在过程中生成的新状态将重新被推入到状态队列中。

7.根据权利要求6所述的一种基于分布式符号执行的智能合约漏洞检测技术,其特征在于,所述工作节点在做状态符号执行和漏洞检测的过程中会遇到约束集合求解的任务,所述工作节点遇到求解任务时将先去访问主节点中的求解缓存集合,所述求解缓存集合中有相同约束时将直接复用之前的求解结果以提高整体的执行速度。

8.根据权利要求7所述的一种基于分布式符号执行的智能合约漏洞检测技术,其特征在于,所述工作节点将于两类时间点主动向主节点提交自身信息,所述自身信息包括状态队列长度、当前可用资源,所述两类时间点分别为当工作节点队列长度为0且该状态保持超过1个时间片后和周期时间点。

...

【技术特征摘要】

1.一种基于分布式符号执行的智能合约漏洞检测技术,其特征在于,包括如下步骤:

2.根据权利要求1所述的一种基于分布式符号执行的智能合约漏洞检测技术,其特征在于,所述主节点做分配时的信息主要来源于工作节点和主节点间的信息通道,所述信息通道周期性地将工作节点的内部执行信息传递给主节点,所述主节点基于内部执行信息可以获取各个工作节点的当前状态用于做符号状态分配平衡各个工作节点的负载。

3.根据权利要求2所述的一种基于分布式符号执行的智能合约漏洞检测技术,其特征在于,所述主节点用于收集工作节点的状态信息,所述状态信息包括节点的可用性、当前负载情况、处理能力、cpu可用核数、内存当前可用大小、工作节点状态队列长度,所述主节点根据收集到的工作节点信息能计算每个工作节点的负载指标,所述负载指标可以根据cpu利用率、任务队列长度或任务队列任务平均等待时间进行计算。

4.根据权利要求3所述的一种基于分布式符号执行的智能合约漏洞检测技术,其特征在于,所述主节点根据负载指标和任务队列中的情况将符号状态分配给不同的工作节点,所述主节点根据负载指标选择合适的工作节点执行任务,所述工作节点默认...

【专利技术属性】
技术研发人员:李志伟
申请(专利权)人:广东启链科技有限公司
类型:发明
国别省市:

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

1