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  处理智能合约的结构
                 化信息, 并通过节点级别和路径级别的双层注意力机制, 突出与漏洞相关的非良性节点, 从而提高了检测的准确
   356   357   358   359   360   361   362   363   364   365   366