System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于多模态的智能合约漏洞检测方法和系统技术方案_技高网
当前位置: 首页 > 专利查询>河南大学专利>正文

一种基于多模态的智能合约漏洞检测方法和系统技术方案

技术编号:43333123 阅读:28 留言:0更新日期:2024-11-15 20:30
本发明专利技术公开了一种基于多模态的智能合约漏洞检测方法和系统,该方法包括以下步骤:步骤一:获取待检测智能合约的源代码;步骤二:对所述源代码进行编译,得到待检测智能合约的操作码和抽象语法树;步骤三:分别获取待检测智能合约的源代码、操作码和抽象语法树三个模态数据的词向量;步骤四:将三个模态数据的词向量输入至预设的智能合约漏洞检测模型,得到待检测智能合约的漏洞状态。本发明专利技术有效提高基于深度学习的智能合约漏洞检测方法的准确率,保证以太坊智能合约用户的合法资产不受侵害,维护了以太坊区块链网络的稳定。

【技术实现步骤摘要】

本专利技术涉及计算机,具体涉及一种基于多模态的智能合约漏洞检测方法和系统


技术介绍

1、智能合约的概念最早由nick szabo在1997年提出,智能合约的作用是实现去中心化的可信交易和自动化执行,它可以确保合约各方的权益被保护同时避免中介机构的干预,提高交易的透明度和效率,减少交易成本和风险。区块链的作用是将数据以区块的形式按照时间顺序链接起来,并使用密码学方法保证数据的安全和可信,实现去中心化的数据交换和存储,可以用于记录和验证各种类型的交易、信息和资产,具有安全、透明、可追溯、高效等特点。由于区块链具有以上这些优点,使得智能合约的实现具备了可行性。研究者可以通过开发智能合约应用的方式将智能合约广泛应用于医疗、金融、政治等领域。mohammede c m等人基于区块链和智能合约技术实现了一种医疗健康应用,该应用有效地在隐私、安全和数据使用的效率三个需求上取得了平衡。yang l等人通过智能合约技术提出了一种新的数据所有权确认方案,该方案实现了数据市场中所有权地保护。

2、以太坊是一种开源的区块链智能合约平台。在以太坊平台上,用户可以根据自己的需要编写智能合约,实现转账、交易等操作。然而,由于智能合约编写者技术水平参差不齐,低水平的编写者在编写过程中难免会出现编程错误,产生代码漏洞。不仅如此,包含漏洞的智能合约对所有以太坊用户都可见,这便会导致漏洞利用这一行为的泛滥。由于智能合约具有一经发布便无法再修改的特点,在智能合约部署前保障智能合约的没有漏洞是十分重要的。

3、截至目前,已经有很多研究者基于现有的代码漏洞检测技术提出了多种面向智能合约漏洞检测的工具,大致可以分为污点分析、模糊测试、符号执行、形式化验证这四类。伴随着越来越多的智能合约漏洞种类的发现,以及智能合约数量的不断增加,这些传统的智能合约漏洞检测工具由于检测速度慢且无法发现新出现的漏洞种类,其准确性和检测速度逐渐不再能满足用户的需求。相比之下,基于深度学习的漏洞检测方法通过从大量的存在漏洞的智能合约中提取漏洞特征,在模型训练完毕后便可以检测出最新出现的漏洞,并且检测速度较快,已经成为一种主流的智能合约漏洞检测方法。

4、然而,目前已经提出的基于深度学习的漏洞检测方法都只从智能合约的一个模态中提取特征,例如控制流程图、源代码或者操作码,这么做便无法对智能合约进行全面地分析。不仅如此,目前大部分的深度学习漏洞检测方法都是基于自注意力模型(transformer)及其改进模型实现的,虽然transformer和长短期记忆网络(lstm)模型可以将可捕获特征依赖的范围提升到200个字符左右,但是面对智能合约这种非常长的文本时仍然无法做到获取全局的依赖信息。除此之外,基于lstm的智能合约漏洞检测工具需要设置输入数据的最大长度来防止模型在训练时出现梯度消失的情况,这便会导致长智能合约在被截取时丢失特征信息。


技术实现思路

1、本专利技术为解决智能合约漏洞检测方法存在的漏洞检测准确率较低的问题,提出了一种基于多模态的智能合约漏洞检测方法和系统,通过深度学习模型充分利用了智能合约源代码、操作码、抽象语法树三种模态的数据提高了智能合约漏洞检测方法的准确率且保证了以太坊智能合约用户的合法资产不受侵害,维护了以太坊区块链网络的稳定。

2、为了实现上述目的,本专利技术的技术方案是:

3、本专利技术第一方面提出了一种基于多模态的智能合约漏洞检测方法,包括以下步骤:

4、步骤一:获取待检测智能合约的源代码,用于后续训练;

5、步骤二:对所述源代码进行编译,得到待检测智能合约的操作码和抽象语法树,便于后续利用智能合约的源代码、操作码、抽象语法树三种模态的特征信息提高智能合约漏洞检测的精度;

6、步骤三:分别获取待检测智能合约的源代码、操作码和抽象语法树三个模态数据的词向量,便于输入预设的智能合约漏洞检测模型进行训练;

7、步骤四:将三个模态数据的词向量输入至预设的智能合约漏洞检测模型,得到待检测智能合约的漏洞状态。

8、进一步地,在步骤三之前还包括:

9、分别对待检测智能合约的源代码、操作码和抽象语法树三个模态数据进行预处理,所述预处理包括:

10、删除三个模态数据中与漏洞不相关的内容,并对三个模态数据中的自定义内容进行标准化,便于后续的训练使用。

11、进一步地,所述删除三个模态数据中与漏洞不相关的内容,具体包括:

12、删除源代码中的版本注解、注释、导入语句、换行符号、括号和连续的空格,用于降低源代码的长度和噪声;

13、删除操作码中的编译错误数据、对执行结果不造成影响的关键词和“push”后面的操作数,用于降低操作码的长度,便于后续使用;

14、删除抽象语法树中的智能合约版本号、节点的唯一标识符、节点在源文件中的位置符号、括号和冒号,用于降低抽象语法树的长度。

15、进一步地,对三个模态数据中的自定义内容进行标准化,具体包括:

16、将源代码中的意义相同的语句采取相同的表示,将用户自定义的变量名替换为统一的格式,便于减少工作规模;

17、将操作码中末尾带有数字的关键词处理为相同格式的字符,便于减少工作规模,避免因格式问题造成训练误差;

18、将抽象语法树中用户自定义的变量名修改为统一的格式,便于减少工作规模。

19、进一步地,所述预设的智能合约漏洞检测模型包括特征提取模块和特征融合模块;其中,特征提取模块包括源代码特征提取分支、操作码特征提取分支和抽象语法树特征提取分支;

20、所述源代码特征提取分支包括依次连接的bigru模块和单词级别的注意力机制模块,便于全面提取上下文依赖信息;

21、源代码词向量输入到bigru模块进行语义特征提取以得到源代码的语义特征向量,再将语义特征向量输入到注意力机制模块以便为所述语义特征向量中的每个单词元素生成注意力权重并加权,进而得到加权后语义特征向量;

22、所述操作码特征提取分支和所述抽象语法树特征提取分支均包括两个bigru模块、单词级别的第一注意力机制模块和句子级别的第二注意力机制模块,便于全面提取上下文依赖信息;

23、以单词为单位,操作码和抽象语法树的词向量分别输入到各自对应的第一个bigru模块进行语义特征提取以得到各自的句子语义特征向量,再将各自的句子语义特征向量输入至各自对应的第一注意力机制模块以便为句子语义特征向量中的每个单词元素生成注意力权重并加权,进而得到各自的加权后句子语义特征向量;

24、以句子为单位,操作码和抽象树的所有加权后句子语义特征向量输入至第二个bigru模块进行语义特征提取以得到各自的全局语义特征向量,再将各自的全局语义特征向量输入至各自对应的第二注意力机制模块以便为全局语义特征向量中的各个句子元素生成注意力权重并加权,进而得到各自的加权后全局语义特征向量。

25、进一步地,所述特征融合模块本文档来自技高网...

【技术保护点】

1.一种基于多模态的智能合约漏洞检测方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种基于多模态的智能合约漏洞检测方法,其特征在于,在步骤三之前还包括:

3.根据权利要求2所述的一种基于多模态的智能合约漏洞检测方法,其特征在于,所述删除三个模态数据中与漏洞不相关的内容,具体包括:

4.根据权利要求2所述的一种基于多模态的智能合约漏洞检测方法,其特征在于,对三个模态数据中的自定义内容进行标准化,具体包括:

5.根据权利要求1所述的一种基于多模态的智能合约漏洞检测方法,其特征在于,所述预设的智能合约漏洞检测模型包括特征提取模块和特征融合模块;其中,特征提取模块包括源代码特征提取分支、操作码特征提取分支和抽象语法树特征提取分支;

6.根据权利要求5所述的一种基于多模态的智能合约漏洞检测方法,其特征在于,所述特征融合模块包括随机失活层、线性层、特征融合层、批归一化层和Softmax层;

7.一种基于多模态的智能合约漏洞检测系统,其特征在于,包括:

8.一种终端设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至6中任意一项所述的一种基于多特征学习的漏洞检测方法。

9.一种计算机可读存储介质,其特征在于,所述存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述存储介质所在设备执行如权利要求1至6中任意一项所述的一种基于多特征学习的漏洞检测方法。

...

【技术特征摘要】

1.一种基于多模态的智能合约漏洞检测方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种基于多模态的智能合约漏洞检测方法,其特征在于,在步骤三之前还包括:

3.根据权利要求2所述的一种基于多模态的智能合约漏洞检测方法,其特征在于,所述删除三个模态数据中与漏洞不相关的内容,具体包括:

4.根据权利要求2所述的一种基于多模态的智能合约漏洞检测方法,其特征在于,对三个模态数据中的自定义内容进行标准化,具体包括:

5.根据权利要求1所述的一种基于多模态的智能合约漏洞检测方法,其特征在于,所述预设的智能合约漏洞检测模型包括特征提取模块和特征融合模块;其中,特征提取模块包括源代码特征提取分支、操作码特征提取分支和抽象语法树特征提取...

【专利技术属性】
技术研发人员:林晨阳刘经晗赵辉
申请(专利权)人:河南大学
类型:发明
国别省市:

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

1