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

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


                 性. 另一方面, Chen  等人  [34] 提出的  Clear 方法采用对比学习来捕捉智能合约之间的细粒度关联信息, 并生成关联
                 标签来指导模型训练, 从而提升了漏洞检测的准确性.
                    除了在源代码层面进行分析, 许多研究也基于操作码展开. Tann                  等人  [115] 提出了一种基于   LSTM  模型的智能
                 合约安全威胁检测方法, 主要针对智能合约的操作码进行分析, 利用序列学习技术快速检测新的攻击模式, 以提高
                 智能合约的安全性. 这项研究首次将            LSTM  应用于智能合约的安全威胁检测, 展示了序列学习在该领域的潜力.
                 此外, Yu  等人  [43] 针对提高智能合约漏洞检测效率的问题, 提出了一种基于操作码的机器学习模型. 该研究通过提
                 取智能合约操作码中的二元语法特征来构建特征空间, 结合多种机器学习算法                          (如  XGBoost、AdaBoost、随机森
                 林等) 对智能合约中的漏洞进行多标签分类, 从而有效提升了漏洞检测的效率和准确性.
                  3.1.3.2    多模态检测
                    在智能合约漏洞检测领域, 多模态检测方法通过结合不同模态的数据特征, 旨在提升检测的准确性. Qian                               等
                 人  [33] 提出了一种跨模态互学习框架, 进一步探索在源代码缺失的情况下, 通过字节码检测智能合约漏洞的能力.
                 该框架设计了一个教师-学生网络结构, 其中教师网络同时处理源代码和字节码的联合表示, 而学生网络仅处理字
                 节码表示. 通过跨模态互学习策略, 学生网络从教师网络中学习源代码的语义信息, 从而在仅有字节码输入的情况
                 下也能准确地进行漏洞检测.
                    在此基础上, Jie 等人    [116] 也提出了一种创新的多模态深度学习框架, 用于智能合约漏洞检测. 该方法结合了源
                 代码层、构建基础层和         EVM  字节码层的特征, 采用       Word2Vec  和  BERT  模型生成代码嵌入, 使用图卷积网络
                 (GCN) 生成图嵌入, 并通过水平和垂直特征连接实现特征融合, 最终使用                    Bi-LSTM  和随机森林模型进行决策. 这
                 种多模态特征融合策略有效克服了现有方法在特征选择和融合方面的不足, 显著提高了智能合约漏洞检测的效果.
                    Cai 等人  [49] 基于合约代码的语法树和控制流图提出了一种细粒度智能合约漏洞检测方法, 通过自动化数据集
                 构建和异构代码特征学习来提升检测精度. 该研究首先开发了一种基于安全最佳实践的自动化数据集构建方法,
                 有效生成带有漏洞标注的语句级数据集, 减少了人工标注工作量. 其次, 设计了一种语法敏感的图神经网络                                  (SS-
                 GNN), 结合语法树和控制流图, 解决了语法与语义特征异构性的问题.
                  3.1.4    基于  LLM  的方法
                    通过利用    LLM  的语义理解和生成能力, 对智能合约代码及相关信息进行分析, 或者辅助漏洞检测流程, 从而
                 实现对智能合约中潜在漏洞的高效识别与检测.
                    本文系统调研了当前基于          LLM  的智能合约漏洞检测方法, 并根据          LLM  在这些方法中的应用技术, 围绕其在
                 漏洞检测过程中的不同用途, 将其归纳为两大类: 一类是将                  LLM  作为主要检测引擎, 另一类是将          LLM  与传统方
                 法相结合.
                  3.1.4.1    LLM  作为主要检测引擎
                    LLM  作为主要检测引擎的方法, 利用其强大的语义理解与生成能力, 对智能合约中的潜在漏洞进行分析与识
                 别, 具体如图   7  所示. 尽管  LLM  在智能合约漏洞检测中展现出语义理解和逻辑推理的优势, 但其应用仍存在局限
                 性. 首先, 生成误差问题限制了检测结果的可靠性. 例如, Chen             等人  [17] 通过在公开智能合约数据集       SmartBugs [117] 上
                 评估  ChatGPT  对  9  种漏洞的检测性能, 并设计了相应的提示语以辅助漏洞检测. 研究结果表明, ChatGPT                   在实现
                 较高召回率的同时, 精确定位智能合约漏洞的能力仍然有限, 并分析了                      ChatGPT  产生误报的根本原因. 为缓解生
                 成随机性与漏洞误报之间的矛盾, Hu           等人  [118] 提出了一种名为   GPTLENS  的框架, 将传统的单阶段检测划分为两
                 个既对抗又协同的阶段: 生成阶段和判别阶段. 在生成阶段, LLM                  作为审计者生成潜在漏洞和推理; 在判别阶段,
                 LLM  则作为批判者, 对生成的漏洞进行评价与打分, 从而筛选出最可信的结果. 为了解决预训练模型在预训练任
                 务和智能合约漏洞检测任务之间不匹配的问题, Yu                 等人  [119] 提出了一种结合代码切片和提示调优的混合方法
                 PSCVFinder. 该方法首先通过代码切片识别包含漏洞匹配模式的代码行, 分析其周围的控制流和数据流关系, 然后
                 生成仅包含关键漏洞相关代码的切片, 并对用户定义的变量和参数进行归一化处理. 在此基础上, 利用                               CodeT5  预
                 训练模型对代码片段进行编码, 将漏洞检测任务转化为填空问题, 通过设计提示模板来引导模型进行预测, 并设计
                 特定的标签映射词汇, 显著提升了检测的准确性和效率. Du                  等人  [18] 针对  GPT-4  设计了思维链  (chain of thought,
   357   358   359   360   361   362   363   364   365   366   367