System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种融合代码结构与语义信息的智能合约漏洞检测方法技术_技高网
当前位置: 首页 > 专利查询>河南大学专利>正文

一种融合代码结构与语义信息的智能合约漏洞检测方法技术

技术编号:43661998 阅读:5 留言:0更新日期:2024-12-13 12:52
本发明专利技术涉及计算机安全技术领域,具体涉及一种融合代码结构与语义信息的智能合约漏洞检测方法,该方法包括:针对智能合约源代码,使用编译器生成抽象语法树,并构建合约图,按照遍历顺序形成有序的节点序列;将源代码、掩码及节点排列输入至预训练模型;将融合了语义和结构特征的合约图送入图神经网络,通过图卷积操作实现信息在图上的传递与聚合;将优化后的合约图输入线性层,对输出结果进行归一化,依据设定的阈值判断智能合约是否存在潜在的安全漏洞,从而完成智能合约安全性评估。本发明专利技术通过结合代码的逻辑结构和语义信息提高了智能合约漏洞检测的准确性,通过自动化的分析流程,显著提升了检测的效率和可靠性。

【技术实现步骤摘要】

本专利技术涉及计算机安全,具体涉及一种融合代码结构与语义信息的智能合约漏洞检测方法


技术介绍

1、随着区块链技术的广泛应用,智能合约作为其核心功能之一,承担着自动化执行交易和业务逻辑的重任。智能合约的安全性直接关系到资产安全、用户信任以及整个区块链生态系统的稳定性,一直是业界关注的焦点。然而,智能合约的编程复杂性和运行环境的特殊性,使得其代码中潜藏的漏洞成为一大安全隐患。由于智能合约一旦部署到区块链上便不可更改,任何合约中的漏洞都可能导致严重的安全风险,包括资金损失、合约逻辑被攻击者恶意利用等。因此,智能合约的安全性直接关系到整个区块链生态系统的稳定和用户的信任。

2、为了保障区块链生态系统的安全和稳定,需要对智能合约进行漏洞检测,虽然目前智能合约的编写和审计已经越来越受到重视,但由于智能合约的复杂性和区块链环境的特殊性,现有的漏洞检测方法仍然存在局限性。传统的软件测试方法如静态代码分析和形式化验证,虽然在一定程度上能够识别出某些安全问题,但它们往往受限于规则的固定性和分析的深度,难以全面覆盖智能合约的复杂逻辑和潜在风险。此外,随着智能合约数量的激增,传统的检测方法在效率和准确性上也面临着挑战。


技术实现思路

1、为了解决对智能合约进行漏洞检测的准确性较差的技术问题,本专利技术提出了一种融合代码结构与语义信息的智能合约漏洞检测方法。

2、本专利技术提供了一种融合代码结构与语义信息的智能合约漏洞检测方法,利用预训练模型graphcodebert提取代码的语义信息,再结合图神经网络对代码结构的分析能力,通过这两种技术融合代码结构特征与语义信息,实现对智能合约漏洞的高效、精准检测,具体包括:

3、步骤s1,根据预先获取的智能合约源代码,利用编译器tree-sitter-solidity生成相应的抽象语法树,通过抽取抽象语法树中的关键树节点,构建一个反映合约代码结构的合约图,并按照深度优先遍历时访问节点的顺序对节点进行排序,得到有序的节点序列;

4、步骤s2,将智能合约源代码经转化生成的词id序列、掩码和节点序列输入至预训练模型graphcodebert中,通过预训练模型graphcodebert将源代码转换为蕴含语义信息的特征矩阵,根据特征矩阵中的特征向量和图节点的对应关系,将节点对应特征向量作为合约图中该节点的语义信息;

5、步骤s3,将包含语义信息和结构特征的完整合约图作为输入,送入图神经网络进行处理,通过执行图卷积操作,图神经网络能够在合约图上实现信息的传递与聚合;

6、步骤s4,将经图卷积优化后的合约图输入至由线性层和sofmax函数构成的分类器,通过分类器对智能合约的安全性进行全面评估,通过softmax函数对输出结果进行归一化处理,基于设定的阈值判断智能合约是否可能存在安全漏洞。

7、可选地,所述根据预先获取的智能合约源代码,利用编译器tree-sitter-solidity生成相应的抽象语法树,包括:

8、预先获取一份智能合约源代码,利用编译器tree-sitter-solidity,将智能合约源代码转换为抽象语法树,其中,转换后得到的抽象语法树是一种包含节点、节点属性、节点对应的代码、以及节点之间的直接边的树形结构。

9、可选地,所述通过抽取抽象语法树中的关键树节点,构建一个反映合约代码结构的合约图,包括:

10、抽象语法树对源代码进行完整解析,其包含了变量声明、函数调用和控制流语句这些合约中的关键信息之外,还包含了括号和分号这些对漏洞检测无用的信息,抽取抽象语法树中与这些关键信息相关的节点和有向边作为合约图节点,得到节点集合v={v1,v2,…,vk},根据节点vi到节点vj的有向边e得到有向边集合e={e1,e2,…,eh},由节点集合v={v1,v2,…,vk}与有向边集合e={e1,e2,…,eh}构成完整的合约图g(sc),记作g(sc)=(v,e)。

11、可选地,所述按照深度优先遍历时访问节点的顺序对节点进行排序,得到有序的节点序列,包括:

12、根节点是整个智能合约源代码的起点,从根节点开始进行深度优先遍历,记录下遍历过程中节点的访问顺序,按照此顺序构建一个有序的节点序列。

13、可选地,所述将智能合约源代码经转化生成的词id序列、掩码和节点序列输入至预训练模型graphcodebert中,包括:

14、利用预训练模型graphcodebert配套的分词器对源代码进行分割,将其分解为一系列更小的词汇单元,得到分词,再将分词根据预训练模型graphcodebert的词汇表转化为词id序列,并在掩码中标记节点和分词的位置,将词id序列、掩码和节点排列输入预训练模型graphcodebert,其中,预训练模型graphcodebert能够将词嵌入聚合到节点嵌入中,再进行预训练任务。

15、可选地,所述根据特征矩阵中的特征向量和图节点的对应关系,将节点对应特征向量作为合约图中该节点的语义信息,包括:

16、根据预训练模型graphcodebert输出的特征矩阵,以及节点在节点序列中的位置,在特征矩阵中筛选出节点对应的部分,得到包含语义信息的节点特征向量,将该节点特征向量作为合约图中相应节点的语义信息。

17、可选地,所述通过执行图卷积操作,图神经网络能够在合约图上实现信息的传递与聚合,包括:

18、对输入的合约图g(sc)=(v,e)进行多层图卷积,实现融合节点间的信息,其对应的计算公式为:

19、

20、其中,h(l)表示图神经网络第l层的节点特征矩阵,σ是激活函数,表示图的度矩阵,表示图的邻接矩阵,w(l)是在第l层的可学习权重矩阵。

21、可选地,所述通过分类器对智能合约的安全性进行全面评估,通过softmax函数对输出结果进行归一化处理,基于设定的阈值判断智能合约是否可能存在安全漏洞,包括:

22、根据图神经网络学习到的特征矩阵进行分类,其中,分类器由线性层和softmax函数构成,分类过程对应的公式为:

23、y=f(w·x+b)

24、其中,y是分类器的输出,x是输入特征矩阵,w是权重矩阵,b是偏置项向量,f是激活函数softmax;

25、根据分类器输出结果和设定的阈值判断得到预测值。

26、可选地,在模型训练阶段,给定一组智能合约源代码生成预测值,以最小化其交叉熵损失函数作为训练目标,损失函数的计算公式为:

27、

28、其中,loss是损失函数值,n表示批次中样本的总数,c表示类别,qxc表示样本x的真实漏洞标签,px表示样本x的预测值。

29、本专利技术具有如下有益效果:

30、本专利技术的一种融合代码结构与语义信息的智能合约漏洞检测方法,通过从源代码到漏洞检测的整个流程的自动化,显著提高了检测过程的效率和准确性。利用预训练模型grap本文档来自技高网...

【技术保护点】

1.一种融合代码结构与语义信息的智能合约漏洞检测方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种融合代码结构与语义信息的智能合约漏洞检测方法,其特征在于,所述根据预先获取的智能合约源代码,利用编译器tree-sitter-solidity生成相应的抽象语法树,包括:

3.根据权利要求1所述的一种融合代码结构与语义信息的智能合约漏洞检测方法,其特征在于,所述通过抽取抽象语法树中的关键树节点,构建一个反映合约代码结构的合约图,包括:

4.根据权利要求1所述的一种融合代码结构与语义信息的智能合约漏洞检测方法,其特征在于,所述按照深度优先遍历时访问节点的顺序对节点进行排序,得到有序的节点序列,包括:

5.根据权利要求1所述的一种融合代码结构与语义信息的智能合约漏洞检测方法,其特征在于,所述将智能合约源代码经转化生成的词id序列、掩码和节点序列输入至预训练模型GraphCodeBERT中,包括:

6.根据权利要求1所述的一种融合代码结构与语义信息的智能合约漏洞检测方法,其特征在于,所述根据特征矩阵中的特征向量和图节点的对应关系,将节点对应特征向量作为合约图中该节点的语义信息,包括:

7.根据权利要求1所述的一种融合代码结构与语义信息的智能合约漏洞检测方法,其特征在于,所述通过执行图卷积操作,图神经网络能够在合约图上实现信息的传递与聚合,包括:

8.根据权利要求1所述的一种融合代码结构与语义信息的智能合约漏洞检测方法,其特征在于,所述通过分类器对智能合约的安全性进行全面评估,通过softmax函数对输出结果进行归一化处理,基于设定的阈值判断智能合约是否可能存在安全漏洞,包括:

9.根据权利要求8所述的一种融合代码结构与语义信息的智能合约漏洞检测方法,其特征在于,在模型训练阶段,给定一组智能合约源代码生成预测值,以最小化其交叉熵损失函数作为训练目标,损失函数的计算公式为:

...

【技术特征摘要】

1.一种融合代码结构与语义信息的智能合约漏洞检测方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种融合代码结构与语义信息的智能合约漏洞检测方法,其特征在于,所述根据预先获取的智能合约源代码,利用编译器tree-sitter-solidity生成相应的抽象语法树,包括:

3.根据权利要求1所述的一种融合代码结构与语义信息的智能合约漏洞检测方法,其特征在于,所述通过抽取抽象语法树中的关键树节点,构建一个反映合约代码结构的合约图,包括:

4.根据权利要求1所述的一种融合代码结构与语义信息的智能合约漏洞检测方法,其特征在于,所述按照深度优先遍历时访问节点的顺序对节点进行排序,得到有序的节点序列,包括:

5.根据权利要求1所述的一种融合代码结构与语义信息的智能合约漏洞检测方法,其特征在于,所述将智能合约源代码经转化生成的词id序列、掩码和节点序列输入至预训练模型graphcodebert...

【专利技术属性】
技术研发人员:韩道军王耀琪范林坤张俊涛王在朝冯兴瑞沈亚田
申请(专利权)人:河南大学
类型:发明
国别省市:

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

1