智能合约模糊测试的系统性综述:面向以太坊及其他平台的智能合约模糊测试方法、技术与架构研究

《Applied Sciences》:A Systematic Survey of Smart Contract Fuzzing: Methods, Techniques, and Architectures for Ethereum and Beyond

【字体: 大 中 小 】 时间:2026年09月15日 来源:Applied Sciences 2.5

编辑推荐:

  区块链架构日益依赖智能合约作为可编程执行组件,然而其引入的安全挑战至今仍仅得到部分解决。模糊测试(Fuzz Testing)已成为智能合约漏洞自动发现领域领先的自动化技术之一;然而,将经典模糊测试概念与智能合约执行环境的特定架构约束相联系的系统性研究仍付之阙如

  
区块链架构日益依赖智能合约作为可编程执行组件,然而其引入的安全挑战至今仍仅得到部分解决。模糊测试(Fuzz Testing)已成为智能合约漏洞自动发现领域领先的自动化技术之一;然而,将经典模糊测试概念与智能合约执行环境的特定架构约束相联系的系统性研究仍付之阙如。我们对从Scopus和Google Scholar收集的258篇文献进行了大规模系统性综述。该综述围绕四个研究问题展开,涵盖一般模糊测试局限性、以太坊虚拟机(EVM)执行约束、跨合约交互挑战以及技术可迁移性。本文贡献有四个方面。第一,我们建立了一个概念性分类体系(Taxonomy),在经典模糊测试与智能合约模糊测试之间建立了明确的对应关系。第二,我们提出了一种代表性模糊测试工具的架构分类体系,统一于一种泛化路标(Waypoint)架构之下,该架构揭示了关键反馈域及组合缺口。第三,我们提供了涵盖覆盖引导、混合及基于学习方法的分类技术综述。第四,我们提出了可复现性批判分析及结构化研究路线图。覆盖引导灰盒模糊测试(Coverage-Guided Greybox Fuzzing, CGF)已成为主导范式(占121个智能合约模糊测试工具的51.2%);基于学习的方法(机器学习、强化学习及大语言模型(LLM))属于规模较小但新兴的类别,其中LLM引导模糊测试是近年增长最快的子类别。反馈域组合仍较为稀疏:大多数被调查的模糊测试工具仅组合了所识别的八个反馈域中的少数几个,且没有任何工具接近完整组合,这导致若干高价值的多域组合尚未被探索。开放挑战包括可扩展的有状态探索、标准化基准与预言机(Oracle),以及EVM特定的架构优化。完整的分类语料库、编码方案及检索策略均已公开提供。

论文主体内容总结

1. 引言

区块链技术最初被构想为在分布式网络中维护防篡改、按时间顺序排列记录的一种机制,现已从早期加密货币实验发展为去中心化应用(Decentralized Applications)的通用基础设施。以太坊通过引入智能合约拓展了这一范式:智能合约是链上部署的自执行程序,在以太坊虚拟机(EVM)中确定性运行。已部署的以太坊智能合约通过地址标识,可持有余额,并暴露一组可调用函数,外部参与者通过提交调用这些函数的事务进行交互。主要开发语言为Solidity,Vyper和Yul等替代语言也在使用中。
智能合约的采用伴随着严重且代价高昂的攻击。2016年DAO攻击利用重入漏洞盗取了约6000万美元的以太币;2017年Parity多重签名钱包漏洞导致约1.5亿美元被永久冻结;DeFi生态系统因智能合约漏洞遭受了累计巨额损失。截至2025年,以太坊上已部署超过6000万个智能合约,仅DeFi协议管理的总锁仓量(TVL)就超过1000亿美元。研究界、工业界和非营利组织在智能合约正确性验证与测试技术上投入了大量资源,涵盖静态分析(如Slither)、符号与混合符号执行(如Oyente、Mythril)以及形式化验证。其中,模糊测试已成为最实用、最有效的自动化漏洞发现方法之一。然而,将模糊测试应用于智能合约引入了经典软件测试中不存在直接对应的挑战,包括EVM的有状态事务执行模型、多合约交互的复杂性、领域特定漏洞类别(重入、整数溢出、访问控制违规)以及标准化基准和预言机的缺失。

2. 方法论

本综述在PRISMA 2020框架下进行,建立了四个研究问题:RQ1(一般模糊测试)探讨模糊测试当前的普遍局限与挑战;RQ2(领域层面)探讨智能合约模糊测试在事务执行模型、有状态语义和领域特定漏洞类别方面的局限;RQ3(平台层面)探讨EVM语义(Gas模型、存储布局、跨合约调用)、Solidity语言及链上部署环境带来的额外限制;RQ4(迁移)探讨更广泛软件测试中常用但尚未在智能合约中广泛使用的有效模糊测试技术,反之亦然。
检索策略采用Scopus和Google Scholar两个互补数据库。Scopus产生647条原始记录,Google Scholar产生504条原始记录,合并1151条,去除463条重复记录后剩余688条唯一条目。应用纳入/排除标准后,最终纳入258篇文献,其中230篇来自Scopus,28篇来自Google Scholar。每项纳入条目被分配到五个类别之一:智能合约模糊测试工具、Web3模糊测试综述、经典模糊测试综述、经典模糊测试技术/工具及其他。分析的核心语料为121个满足操作性模糊循环规则的智能合约模糊测试工具,所有分析比率均基于该核心计算。架构分析进一步细分:33个代表性工具中,29个具有充分的公开反馈域细节用于组合分析,31个支持技术-漏洞交叉制表,22个用于详细头对头比较。

3. 模糊测试分类体系:从经典到智能合约模糊测试

本节建立了连接经典模糊测试与智能合约模糊测试领域的分类体系。经典模糊测试的核心概念包括输入空间、反馈和引导。覆盖引导灰盒模糊测试(CGF)已成为传统软件漏洞发现的主导范式,代表性工具包括AFL和libFuzzer。AFL通过编译时插桩收集边覆盖位图,维护语料库并采用能量调度(Power Scheduling)策略决定各种子获得的变异轮次。libFuzzer采用进程内模型,与LLVM消毒器(Sanitizer)紧密集成。FuzzFactory引入了领域特定反馈(Domain-Specific Feedback)和路标(Waypoint)概念:路标是因其在领域特定维度上取得单调进展而被保存的输入,而非因增加代码覆盖。该框架支持多个领域通过析取方式组合。
智能合约模糊测试沿三个维度扩展了经典模糊测试:输入是事务序列而非字节流;执行是有状态的,每个事务修改持久化存储和余额;预言机是领域特定的,必须检查整个序列的执行轨迹。智能合约模糊测试的形式化模型涵盖事务序列生成、有状态执行和领域特定预言机。三种主要预言机设计覆盖主要漏洞类别:重入预言机检测合约在外部调用仍挂起时出现在调用栈中的情况,包括只读重入;访问控制预言机标记受保护函数被未授权发送者成功调用(无回退);金融属性预言机检查不变量和等价属性,如代币供应守恒和余额等价。

4. 智能合约模糊测试架构综述

典型智能合约模糊测试器可分解为若干核心组件。输入表示与生成组件产生或修改事务序列,生成可以是随机的、基于语法的(使用合约ABI或模式)或基于学习的。执行引擎设计存在三种主要方案:基于分叉的外部节点方案通过JSON-RPC与独立以太坊节点通信,具有最高保真度但吞吐量受限;进程内嵌入EVM方案将EVM实现作为库嵌入,消除进程间通信开销,实现每秒数千至数万事务的吞吐量;基于快照的方案由ItyFuzz引入,定期检查EVM状态,模糊测试器可从任意快照分叉而无需重放整个事务历史。反馈机制提取引导模糊测试器的信号,包括代码覆盖、崩溃或回退以及自定义预言机。覆盖插桩可在源码级别、字节码级别或EVM解释器内部执行。
本节提出了一种泛化路标架构,将所调查的模糊测试器统一在基于FuzzFactory领域特定反馈模型的共同框架下。识别出八个不同的反馈域:分支覆盖、存储访问模式、状态新颖性、目标距离、约束邻近度、数据流覆盖、属性违规和预言机信号。领域通过析取方式组合:若序列在任何组成域中是路标则被保留。组合分析显示,29个具有充分公开信息的代表性工具中,仅少数工具组合了多达三个域,大多数仅使用两个域,没有任何工具接近完整八个域。缺口分析揭示了若干结构性空白:存储访问未与状态新颖性组合;属性违规很少与状态新颖性反馈组合;金融预言机缺乏定向目标距离反馈;没有工具将跨合约可达性作为一流路标域。

5. 智能合约模糊测试技术

覆盖引导灰盒模糊测试(CGF)是主导范式,占工具的51.2%。该研究方向由ContractFuzzer开创,结合了基于ABI的生成与七个漏洞预言机。sFuzz引入AFL风格能量调度,实现比ContractFuzzer高约两个数量级的吞吐量。Echidna引入带用户定义Solidity不变量的基于属性的CGF。后续工具针对纯覆盖引导的特定弱点,包括Harvey的输入预测、MuFuzz的序列感知变异和种子掩码引导、sFuzz2.0的存储访问模式反馈扩展。
基于属性和不变量模糊测试(PBF)占工具的3.3%,旨在违反用户定义的不变量而非仅触发崩溃。Echidna是典型代表,FinanceFuzz扩展了DeFi特定不变量和等价属性。混合符号与混合符号模糊测试器占24.0%,将具体执行与符号约束求解相结合以到达随机变异无法触及的分支。ConFuzzius采用需求驱动SMT求解,SMARTIAN添加静态和动态数据流分析,ItyFuzz因基于快照的状态管理而常与混合工具并列讨论。
基于学习的模糊测试占121个工具中的13个(10.7%),包括经典机器学习(7个)、强化学习(3个)和大语言模型(3个)。LLM引导模糊测试是2024年以来增长最快的子类别。变异与种子生成策略建立在六个原始变异算子之上:参数变异、函数变异、插入/删除、重排、拼接和环境变异。种子生成范围从ABI/语法驱动到静态分析引导、链上重放和基于学习的方法。差分与平台特定模糊测试扩展了智能合约模糊测试的边界:EVMFuzzer跨EVM实现比较,EOSFuzzer和WASAIUP面向EOSIO,Fuzz on the Beach面向Solana,HFContractFuzzer面向Hyperledger Fabric。

6. 讨论

语料库构成分析显示,该领域从2018年的3篇论文快速增长至2024年的34篇,30.6%的论文发表于Tier 1会议。按技术分布,覆盖引导灰盒模糊测试占51.2%,混合占24.0%,基于学习占10.7%,差分占9.1%,基于属性占3.3%。按平台分布,以太坊/EVM占83.5%。重入是最常被针对的漏洞类别(71%),其次是算术(61%)和访问控制(48%),金融属性仍相对服务不足(低于10%)。
对四个研究问题的回答:RQ1的经典局限(覆盖瓶颈、超越崩溃的预言机设计、可扩展性、机器学习成本)在智能合约环境中被放大。RQ2的三个结构性差异(事务序列输入、有状态执行、多事务轨迹预言机)解释了从随机到覆盖引导再到混合方法的转变。RQ3的EVM特定约束(256位字、Gas计量、DELEGATECALL代理模式、ABI编码、编译器版本敏感性)有助于解释83.5%的以太坊集中度。RQ4的反馈域组合稀疏,大多数工具最多组合八个域中的两个,留下若干高价值多域组合未探索。
评估方法论方面,不存在普遍采用的基准,评估语料从手工收集的合约集到真实DeFi协议不等。五个反复出现的反模式损害可比性:调优对比默认比较、精选合约、仅覆盖评估、缺少同类技术基线和无统计分析的单一运行结果。可复现性参差不齐,精确提交版本、构建指令、固定依赖规范、种子和模糊测试配置以及存档持久存储等关键制品几乎从未报告。
四个突出开放挑战:可扩展的有状态探索、预言机设计、EVM特定优化和基准测试。对工具构建者的实践启示包括:从一开始采用序列感知变异;将分支覆盖与至少一个状态感知信号结合;采用需求驱动符号调用而非连续混合符号执行以控制成本;投资预言机设计;发布源代码、基准合约和可复现性脚本。

7. 结论

本综述围绕四个研究问题系统回顾了智能合约模糊测试的近期进展。一般模糊测试局限在智能合约环境中被放大,包括覆盖瓶颈、超越崩溃检测的预言机设计、可扩展性以及机器学习/大语言模型引导的成本与可解释性。领域层面,智能合约在三个方面不同于经典目标:输入是事务序列、执行是有状态的、预言机必须检查执行轨迹。平台层面,EVM特定约束增加了额外需求。泛化路标映射给出了最具体的可迁移性结果:反馈域组合稀疏,留下若干高价值多域组合未探索。
主要贡献分为三组:概念制品(经典到智能合约模糊测试分类体系、技术-漏洞交叉制表、泛化路标架构);描述性分析(分类与比较表、技术谱系、文献计量分析、评估方法论分析);前瞻性研究议程。未来三大优先事项:标准化(共享基准、多维充分性度量、强制制品发布);集成(模糊测试与形式化验证、规范挖掘和LLM辅助不变量生成的更紧密耦合);泛化(将智能合约模糊测试技术扩展到跨链协议、二层Rollup、零知识电路和非以太坊平台)。
相关新闻
生物通微信公众号
微信
新浪微博

热点排行

    今日动态 | 人才市场 | 新技术专栏 | 中国科学人 | 云展台 | BioHot | 云讲堂直播 | 会展中心 | 特价专栏 | 技术快讯 | 免费试用

    版权所有 生物通

    Copyright© eBiotrade.com, All Rights Reserved

    联系信箱:

    粤ICP备09063491号