《Blockchain: Research and Applications》:Enhancing Smart Contract Vulnerability Detection via Dual-Source Feature Extraction and Fusion
编辑推荐:
区块链(Blockchain)技术的普及使得智能合约(Smart Contract)的广泛应用引发了对其安全漏洞的担忧,这些漏洞已导致严重的经济损失。为解决传统检测方法在效率与性能方面的不足,研究人员转向深度学习技术,利用特定的代码信息源设计各类漏洞检测方法。
区块链(Blockchain)技术的普及使得智能合约(Smart Contract)的广泛应用引发了对其安全漏洞的担忧,这些漏洞已导致严重的经济损失。为解决传统检测方法在效率与性能方面的不足,研究人员转向深度学习技术,利用特定的代码信息源设计各类漏洞检测方法。然而,现有基于学习的方法在特征建模方面存在局限:大多数方法仅从源代码(Source Code)或字节码(Bytecode)中的单一来源提取特征,导致特征覆盖范围有限,漏洞表征(Representation)受损;尽管部分方法尝试同时利用两种代码来源,但通常将其中一种作为辅助输入,未能实现有效的联合对齐(Joint Alignment)。为此,研究人员提出DualSVD,一种面向智能合约漏洞检测的双源特征建模框架。该方法将漏洞相关的源代码函数通过词嵌入(Word Embedding)编码为语义向量,并利用通道架构结合通道级注意力机制(Channel-wise Attention)提取字节码特征;随后将两类特征表示投影至共享的潜在空间(Latent Space)并进行拼接,以实现分类。研究人员在涵盖八种智能合约漏洞类型的常用数据集上评估了该方法,实验结果表明DualSVD的平均F1分数(F1-score)达到92.70%,较传统基线方法和基于深度学习的基线方法分别提升37.81%和4.94%。这些结果表明DualSVD能够提供更全面、有效的智能合约漏洞表征,具备更优的检测性能和更强的泛化能力。智能合约漏洞种类包括设计缺陷、编码错误、环境依赖和外部依赖四类,其中具体涵盖重入(Reentrancy)、访问控制(Access Control)、整数溢出与下溢(Integer Overflow and Underflow)、拒绝服务(Denial of Service, DoS)、交易顺序依赖(Transaction-Ordering Dependence, TOD)、时间戳依赖(Timestamp Dependence, TD)、未检查的低级调用(Unchecked Low-Level Calls, ULC)以及Tx.origin漏洞。
本研究旨在解决智能合约漏洞检测中单一特征来源覆盖不全面、双源特征融合缺乏有效联合对齐的问题。当前,基于深度学习的检测方法多从源代码或字节码中的单一来源提取特征:源代码特征提取无法捕获以太坊虚拟机(Ethereum Virtual Machine, EVM)关键的低级执行语义,如gas消耗、指令级行为和状态转换;字节码特征提取则难以充分获取源代码中嵌入的上下文信息,如详细控制结构、抽象和语义意图。此外,部分方法虽尝试融合两种来源,但隐式整合策略不当,将某一模态仅作为另一模态的辅助输入,导致特征粒度和抽象层次不匹配,损害了检测效果。
研究人员提出DualSVD框架,通过双源特征提取、对齐与融合实现统一建模。在源代码特征提取阶段,研究人员利用Slither构建合约级控制流图(Control Flow Graph, CFG),提取目标函数集合(Objective Functions Set, OFS),并采用Word2Vec模型生成捕捉高层语义和上下文的向量表示。具体而言,研究人员针对八种漏洞类型设计了细粒度的切片规则:重入漏洞识别包含转账函数且余额变更语句位于转账语句之后的函数;访问控制漏洞检查敏感函数的可见性是否为public、external或默认public,以及是否采用适当的访问控制措施;整数溢出与下溢漏洞识别包含算术运算且无安全库或条件检查的函数;拒绝服务漏洞检查是否缺乏错误处理机制或存在无限制循环;交易顺序依赖漏洞审查共享资源访问是否缺乏互斥和事务机制;时间戳依赖漏洞识别使用block.timestamp或now且处于条件语句中的情况;未检查的低级调用漏洞评估低级调用后是否验证结果;Tx.origin漏洞检查该关键字是否用于函数修饰符。
在字节码特征提取阶段,研究人员采用双通道机制。语义-结构通道将字节码反汇编为操作码(Opcode)序列,分割为若干基本块(Basic Block)并构建CFG,每个块通过改进的Structure2Vec模型(H-S2V)进行语义嵌入,该模型引入可学习参数α和β平衡语义与结构信息的贡献;存储依赖通道识别与状态访问相关的操作码(如SLOAD、SSTORE),通过符号栈分析解析目标槽地址表达式,构建数据依赖图(Data Dependency Graph, DDG)反映变量读写关系,并采用位图特征和统计特征聚合为块级存储依赖向量。两类通道特征通过通道级注意力机制进行加权融合,生成字节码级特征表示。
在特征对齐与融合阶段,源代码特征和字节码特征分别通过线性变换层投影至共享潜在空间,经ReLU激活后拼接为统一表示,输入多层感知机(Multilayer Perceptron, MLP)分类器进行漏洞预测。MLP包含两个全连接层,第一层将输入维度从2d降至d,随后接ReLU激活和dropout层(丢弃率0.5),第二层映射至目标类别数并经Softmax生成概率分布。模型采用交叉熵损失函数,以Adam优化器进行端到端训练,学习率设为0.001,小批量大小为64。
实验评估基于SmartBugs Curated数据集(143份手工标注智能合约,涵盖九类漏洞)和Smart-Contract-Benchmark-Suites数据集(46,186份真实世界智能合约,从中识别出2,472份含漏洞合约,涵盖八种漏洞类型),按80/20比例划分训练集与测试集。对比基线包括传统工具(Securify、Slither、Oyente、Smartcheck)和深度学习方法(TMP、CGE、Clear、BNS、DMT、MANDO-HGT)。评估指标包括准确率(Accuracy)、精确率(Precision)、召回率(Recall)和F1分数。
实验结果分析围绕四个研究问题展开。
研究问题一:特征融合前后检测性能如何?混合特征在所有指标上均优于单一特征,平均准确率达93.14%,精确率93.28%,召回率92.14%,F1分数92.70%,较仅使用字节码提升3.99%、4.70%、3.55%和4.13%,较仅使用源代码提升4.20%、4.49%、4.74%和4.62%。访问控制和拒绝服务漏洞的源代码分析优于字节码分析,其余类型则字节码更优。
研究问题二:各组件对检测效果的贡献如何?消融实验表明,去除语义-结构通道(w/o SemStruct)对整体性能影响最大,平均F1下降4.14%;去除存储依赖通道(w/o Storage)平均下降2.15%;以简单拼接替换注意力机制(w/o Attention)平均下降4.14%,说明注意力机制增强跨通道特征互补性。
研究问题三:与其他方法相比检测性能如何?DualSVD在八种漏洞中七种检测任务最优,仅时间戳依赖略逊于DMT。较传统工具最高平均准确率提升36.99%、F1分数提升37.81%,较深度学习基线最高平均准确率提升7.29%、F1分数提升4.94%。配对t检验结果表明改进具有统计显著性(p<0.05)。
研究问题四:检测效率如何?DualSVD分析单份合约平均约0.84秒(训练0.78秒,检测0.061秒),较最高效传统工具Slither快3.52秒,较最高效深度学习方法(Huang等)慢0.39秒,仍在可接受范围内。
讨论部分:内部效度威胁主要来自字节码与源代码嵌入维度不对齐,研究人员通过缩放归一化及注意力机制缓解;外部效度威胁在于方法主要针对Solidity语言,虽字节码分支可部分适用于EVM生态其他语言合约,但扩展至非EVM平台需重新定义字节词语义、图构建和存储依赖建模。
研究结论:本研究提出DualSVD统一有效的智能合约漏洞检测框架,采用统一建模和平衡集成的双源分析策略,无需预定义输入类型即可独立运行于源代码或字节码。实验表明DualSVD持续优于传统静态分析工具和先进深度学习方法,且时间开销在可接受范围内。