Page 366 - 《软件学报》2026年第1期
P. 366

揭晚晴 等: 智能合约与      DeFi 协议漏洞检测技术综述                                                363


                                             表 3    传统智能合约层漏洞检测方法        (续)

                  方法类别     方法名称     相关文献                     方法概述                     会议/期刊      发表年份
                                             将源代码转化为异构合约语义图, 利用图神经网络和两层
                                      [42]                                              ICSE      2024
                                             注意力机制突出与漏洞相关的节点
                                             利用对比学习模型捕捉智能合约代码之间的细粒度关联
                                      [34]                                              ICSE      2024
                                             信息, 生成关联标签指导模型的训练过程
                                             提取操作码中的二元语法特征来构建特征空间, 并使用多
                                      [43]                                              IJCNN     2021
                           单模态               种机器学习算法进行多标签分类
                                             将源代码转换为图结构, 并进行归一化处理, 使得图神经
                                      [114]                                             IJCAI     2020
                                             网络能够学习和检测漏洞
                                             基于源代码进行语言模型和语义分析, 从而有效捕捉合约
                  深度学习                [113]                                             ASC       2018
                                             代码中的潜在漏洞
                                             将操作码序列输入LSTM模型, 通过序列学习来检测潜在
                                      [115]                                             arXiv     2018
                                             的安全威胁
                                             基于合约代码的语法树和控制流图, 通过异构代码特征学
                                      [49]                                               JSS      2024
                                             习来提升检测精度
                                             智能合约的源代码和字节码转换为图结构, 并使用图注意
                           多模态        [33]                                              WWW       2023
                                             力网络提取图的特征嵌入
                                             结合了源代码层、构建层和EVM字节码层的特征, 提出               Information
                                      [116]                                                       2023
                                             了基于多模态学习的漏洞检测框架                           Sciences
                    在静态分析方面, 形式化验证通过数学方法严格验证智能合约的安全性和功能正确性, 通常将合约代码转化
                 为形式化模型, 通过自动化求解器进行验证. 该方法优势在于验证结果高度准确, 但自动化程度低, 验证过程复杂
                 且耗时, 特别是在处理复杂合约时难以扩展. 符号执行通过将程序变量抽象为符号输入, 模拟合约所有可能的执行
                 路径, 通常结合符号求解器与控制流图, 生成路径约束来检测漏洞. 但其面临路径爆炸问题, 尤其在复杂合约中易
                 导致分析效率低下. 污点分析基于数据流分析和控制流图构建以标记和追踪外部输入                             (污点) 在程序中的传播路
                 径, 能够有效捕捉外部输入引发的漏洞. 基于中间表示的方法将合约的源代码或字节码转换为易于分析的中间表
                 示  (如静态单赋值、XML      解析树等), 然后在此基础上进行数据流和控制流分析, 使分析更加简便和高效. 但转换
                 过程中需注意语义一致性问题, 可能导致误报或漏报.
                    在模糊测试方面, 基于生成的模糊测试方法结合控制流、数据流分析以及预定义的输入规则来生成测试用
                 例, 通过覆盖尽可能多的输入空间来探索智能合约的执行路径, 从而发现潜在的安全漏洞. 此类方法的优势在于其
                 能系统性探索合约输入的所有可能性, 但生成测试用例的复杂性和高计算开销可能成为瓶颈. 基于突变的模糊测
                 试方法通过对已有的有效输入数据进行插入、删除、替换和重新排列等突变操作, 生成新的测试用例, 以检测智
                 能合约在不同输入条件下的响应. 此类方法的优势在于不需要预定义输入格式, 且可以迅速生成大规模的测试用
                 例, 其挑战在于如何有效引导突变方向, 使得测试覆盖尽可能多的关键分支.
                    在深度学习方面, 单模态检测方法聚焦于单一类型特征的输入, 基于源代码、字节码及其构建的图、抽象语
                 法树和反编译后的操作码等特征进行漏洞检测. 该方法具备计算效率高、实现简便的优势, 适用于某些特定场景
                 下的快速检测. 多模态检测方法则通过结合多种类型的数据特征                      (如源代码、字节码、控制流图、抽象语法树
                 等), 通过多模态信息的融合来进行漏洞检测. 多模态特征融合技术虽然能够有效提升漏洞检测性能, 但复杂的模
                 型结构及高效特征融合策略的设计仍是当前研究的主要挑战. 此外, 现有的多模态与单模态检测方法大多集中于

                 智能合约传统基础漏洞的检测, 缺乏对业务逻辑相关复杂合约漏洞的深入检测和研究.
                    在不同的应用场景中, 这些方法的优势和局限性需要根据合约的复杂性和特定需求来选择. 静态分析在检查
                 较为简单或已知的漏洞时较为有效, 而模糊测试适合于在广泛的输入空间中寻找潜在漏洞. 深度学习方法则在大
                 规模合约分析和自动化检测方面有潜力, 尤其是多模态检测方法, 通过综合不同特征的融合, 能够提高检测的准确
                 性. 在实际应用中, 针对各方法的优缺点, 可以采取组合使用的策略, 以弥补单一方法的局限性. 例如, 静态分析可
   361   362   363   364   365   366   367   368   369   370   371