Page 361 - 《软件学报》2026年第1期
P. 361
358 软件学报 2026 年第 37 卷第 1 期
模糊测试吞吐量. 为实现这一点, EFbroCF 将智能合约字节码编译为原生 C++代码, 借助现有的优化模糊测试工具
链进行测试. 此外, EFbroCF 通过结构感知突变引擎生成智能合约事务序列, 并利用合约的 ABI 生成有效的事务
输入, 从而显著提高了模糊测试的效率.
3.1.3 基于深度学习的方法
早期的智能合约安全分析工具大多依赖符号执行、形式化验证和模糊测试等, 这些工具虽然能够检测预定义
的漏洞类型, 但随着智能合约领域发展迅速, 新型攻击方法和漏洞不断涌现, 规则库的更新往往滞后于实际的攻击
方法变化, 导致检测方法的有效性降低. 鉴于深度学习具有较强的泛化能力, 近年来深度学习逐渐被广泛应用于智
能合约漏洞检测领域, 并取得了很好的效果.
在利用深度学习模型进行智能合约漏洞检测时, 特征提取是关键步骤. 主要特征包括源代码、字节码、操作
码、控制流图、抽象语法树以及注释等信息. 字节码和操作码代表智能合约的底层逻辑, 由 EVM 执行. 控制流图
描述代码块之间的控制流关系, 帮助识别不安全的跳转路径和逻辑漏洞. 抽象语法树提供代码的语法结构, 有助于
静态分析. 通过特征增强生成的注释可以为代码提供背景信息, 结合自然语言处理技术, 可提取与安全相关的语义
内容. 根据深度学习模型所使用的特征, 本文将基于深度学习的智能合约漏洞检测方法分为两大类: 单模态检测方
法和多模态检测方法. 单模态检测方法专注于对单一特征的深入分析, 而多模态检测方法则结合了上述多种特征
进行分析. 基于深度学习的智能合约漏洞检测流程如图 6 所示.
特征提取 模型检测 检测结果
0011
1000 深度学习模型
101
字节码
X [1]
X [2]
X [3]
语法树
全连接层 Transformer
输出
源代码
tanh
控制流图 σ σ tanh σ
//注释
LSTM 图神经网络
注释
图 6 基于深度学习的智能合约漏洞检测流程
3.1.3.1 单模态检测
针对源代码分析层面, Liu 等人 [113] 于 2018 年提出了基于源代码的 S-gram 技术, 旨在解决现有安全审计工具
在应对未知攻击和高计算成本方面的不足. S-gram 技术通过结合语言模型和语义分析, 提出了一种能够快速、准
确检测智能合约漏洞的工具. 该方法通过轻量级静态分析生成语义元数据, 并结合类型词法分析, 实现了对智能合
约的语义感知分析, 从而有效捕捉合约代码中的潜在漏洞.
在此基础上, Zhuang 等人 [114] 提出了一种利用图神经网络 (graph neural network, GNN) 进行源代码漏洞检测
的方法, 主要针对重入、时间戳依赖和无限循环等漏洞. 该研究引入了 DR-GCN 和 TMP 两种模型, 通过将智能合
约源代码转换为图结构并进行归一化处理, 使图神经网络能够更有效地捕捉代码中的语法和语义信息, 从而提高
漏洞检测的准确性. 这项研究展示了图神经网络在智能合约安全检测中的潜力. 后续研究中, 涌现了许多基于图神
经网络的源代码特征学习方法, 例如 Luo 等人 [42] 提出的 SCVHunter. SCVHunter 是一个基于异构图注意力网络的
智能合约漏洞检测框架, 该框架通过将智能合约源代码转化为异构合约语义图, 利用 GNN 处理智能合约的结构
化信息, 并通过节点级别和路径级别的双层注意力机制, 突出与漏洞相关的非良性节点, 从而提高了检测的准确

