本发明涉及软件安全,特别涉及一种基于图神经网络的去中心化金融平台借贷智能合约漏洞检测方法及系统。
背景技术:
1、近年来,区块链技术和去中心化金融平台(decentralized finance,defi)迅速发展。defi平台运用了区块链的去中心化、内容不可篡改等技术优势,利用智能合约系统完成了贷款、交易、衍生品等的金融服务,为用户展示了一种崭新的金融模式。然而,智能合约的实际应用带来了巨大的安全性挑战。因为运行于更加开放透明的区块链中,智能合约程序存在的技术缺陷更易被发掘与应用。
2、图神经网络(graph neural networks,gnns)作为一项前沿的深度学习技术,擅长处理图结构化的数据,并能精准地对代码进行建模。利用gnns进行自动化与智能化的智能合约代码分析,预期将提高漏洞检测的效率与准确性,进而更有效地应对去中心化金融(defi)领域的安全挑战。传统上用于智能合约的安全分析方法,如:基于规则的静态分析方法覆盖面有限,容易产生误报和漏报。这类方法通过预定义的漏洞模式和代码规则对智能合约进行扫描和匹配,但无法适应不断变化的攻击手段和复杂的合约逻辑,导致检测的准确性和效率较低。又如:基于符号执行和形式化验证的方法需要大量的人工干预和专家知识,适用性和自动化程度不高。这类方法通过对智能合约的语义和行为进行形式化建模和推理,但需要手工定义复杂的约束条件和断言规则,对用户的专业能力要求较高,难以大规模应用。再如,基于深度学习的漏洞检测方法大多将智能合约代码转换为简单的序列表示,忽略了代码的结构信息和语义关系,难以准确刻画合约的特征和漏洞模式,导致检测性能受限。现有对智能合约漏洞检测的可视化支持不足,难以提供直观、可操作的漏洞分析结果和修复建议,不利于开发者快速定位和修复漏洞,也无法满足合约审计和风险评估的需求,在去中心化金融场景中往往难以满足智能合约漏洞检测的需求,这些传统方法在处理诸如数据流和权限控制等复杂数据属性时存在不足,进而影响了检测结果的准确性和效率。
技术实现思路
1、为此,本发明提供一种基于图神经网络的去中心化金融平台借贷智能合约漏洞检测方法及系统,利用gnns来进行智能合约的表示学习,能够揭示代码中的潜在模式,并精准捕捉合约的语义及数据流特性,从而自动识别出存在于借贷合约中的可重入性及时间戳依赖漏洞,实现智能合约漏洞的高效、准确检测和分类。
2、按照本发明所提供的设计方案,一方面,提供一种基于图神经网络的去中心化金融平台借贷智能合约漏洞检测方法,包含:
3、收集智能合约源码数据,根据数据中是否存在漏洞对智能合约源码数据进行漏洞标记;并将智能合约源码数据编译为抽象语法树,以利用抽象语法树构建用于描述智能合约源码实体关系及交互模式的合约代码异构图;
4、构建图神经网络模型,利用合约代码异构图对图神经网络模型进行漏洞预测训练,得到智能合约漏洞检测模型,其中,所述图神经网络模型利用层次化注意力增强机制逐层捕获合约代码异构图的结构特征并基于结构特征预测识别合约代码中的漏洞;
5、将待检测智能合约源码转化为目标合约代码异构图,并利用智能合约漏洞检测模型对目标合约代码异构图进行漏洞预测。
6、作为本发明基于图神经网络的去中心化金融平台借贷智能合约漏洞检测方法,进一步地,将智能合约源码数据编译为抽象语法树,包含:
7、对智能合约源码数据进行预处理,所述预处理包括格式化、注释去除及标识符重命名;
8、利用编译器将预处理后的智能合约源码解析为抽象语法树,在抽象语法树中每个节点对应一个语法元素。
9、作为本发明基于图神经网络的去中心化金融平台借贷智能合约漏洞检测方法,进一步地,利用抽象语法树构建用于描述智能合约源码实体关系及交互模式的合约代码异构图,包含:
10、提取抽象语法树中智能合约源码语法信息和语义信息,所述语法信息包括抽象语法树中的变量声明节点类型、函数定义节点类型、修饰器节点类型、表达式语句节点类型和控制流语句节点类型,所述语义信息包括用于表示代码执行先后顺序的控制流边、用于表示代码变量定义和使用关系的数据流边和用于表示函数之间调用关系的调用边;
11、将智能合约源码语法信息和语义信息统一建模至合约代码异构图中。
12、作为本发明基于图神经网络的去中心化金融平台借贷智能合约漏洞检测方法,进一步地,所述图神经网络模型包含:异构图注意力单元、图池化层和图分类层,其中,所述异构图注意力单元包括:用于将异构图节点映射为初始特征向量的节点嵌入层、用于利用层次化注意力增强机制逐层捕获合约代码异构图的结构特征的异构图注意力层、用于对节点结构特征进行聚合来生成异构图特征表示的图表示学习层、及用于使用softmax将异构图特征表示映射为漏洞类型概率分布的预测输出层,所述图池化层用于利用节点在指定边类型下的重要性得分对每种边类型下的节点特征进行聚合并得到关系级别的图表示、并通过聚合不同边类型下的图表示来获取最终输出的图表示,所述图分类层用于将最终输出的图表示输入至多层感知机中以利用多层感知机预测识别智能合约源码中漏洞类型。
13、作为本发明基于图神经网络的去中心化金融平台借贷智能合约漏洞检测方法,进一步地,利用层次化注意力增强机制逐层捕获合约代码异构图的结构特征,包含:
14、在当前捕获结构特征的层级,对于每个异构图节点,根据邻居节点的类型和特征计算注意力权重,使用注意力权重对邻居节点的特征进行加权求和并生成聚合特征,将当前层节点的当前特征与聚合特征进行拼接或相加,并通过非线性激活函数relu来得到下一捕获结构特征层级中的节点特征,迭代执行,直至迭代次数大于预设特征捕获层数,将最后一捕获结构特征层中的节点特征作为合约代码异构图的结构特征。
15、作为本发明基于图神经网络的去中心化金融平台借贷智能合约漏洞检测方法,进一步地,图池化层最终输出的图表示表示为:其中,γr为关系r的重要性分数,为异构图中关系集合,hr为在关系r下聚合节点表示,且为异构图节点集合,为节点vi在关系r下的重要性分数。
16、作为本发明基于图神经网络的去中心化金融平台借贷智能合约漏洞检测方法,进一步地,利用合约代码异构图对图神经网络模型进行漏洞预测训练,包含:
17、利用交叉熵损失函数作为漏洞预测训练目标函数;
18、基于漏洞预测训练目标函数并通过梯度反向传播优化算法对图神经网络模型进行训练优化,直至模型收敛或达到训练优化最大迭代次数,以将训练后的图神经网络模型作为智能合约漏洞检测模型。
19、再一方面,本发明还提供一种基于图神经网络的去中心化金融平台借贷智能合约漏洞检测系统,包含:样本收集模块、模型训练模块和漏洞检测模块,其中,
20、样本收集模块,用于收集智能合约源码数据,根据数据中是否存在漏洞对智能合约源码数据进行漏洞标记;并将智能合约源码数据编译为抽象语法树,以利用抽象语法树构建用于描述智能合约源码实体关系及交互模式的合约代码异构图;
21、模型训练模块,用于构建图神经网络模型,利用合约代码异构图对图神经网络模型进行漏洞预测训练,得到智能合约漏洞检测模型,其中,所述图神经网络模型利用层次化注意力增强机制逐层捕获合约代码异构图的结构特征并基于结构特征预测识别合约代码中的漏洞;
22、漏洞检测模块,用于将待检测智能合约源码转化为目标合约代码异构图,并利用智能合约漏洞检测模型对目标合约代码异构图进行漏洞预测。
23、本发明的有益效果:
24、1、本发明引入层次化的注意力机制增强图神经网络模型,在节点级、边级和子图级分别计算注意力权重,动态调整不同代码元素和结构对漏洞检测的贡献,使模型能够自适应地关注重要的漏洞相关特征,提高了检测的准确性和泛化能力,弥补了现有图神经网络模型中注意力机制缺失的不足,可通过图形化展示合约的代码结构、控制流和数据流关系,直观呈现模型关注的重点代码区域和潜在漏洞,并提供自动生成的漏洞分析报告和修复建议,极大地提高了漏洞检测结果的可解释性和可操作性,方便开发者快速理解、定位和修复漏洞。。
25、2、本发明采用基于异构图表示和注意力增强图神经网络的方法,能够自动学习和提取智能合约代码的深层次特征和结构关系,克服了手工定义规则的局限性,显著提高了漏洞检测的准确性、召回率和泛化能力,降低了误报和漏报的风险。
26、3.本发明提供了端到端的深度学习方法,无需手工定义复杂的约束条件和断言规则,大大降低了用户的专业能力要求,提高了漏洞检测的自动化程度和易用性,实现了大规模智能合约的高效分析和实时检测。