释放美杜莎:快速可扩展的智能合约模糊测试框架

本文介绍Trail of Bits最新发布的Medusa v1模糊测试框架,该工具基于EVM构建,具备覆盖率引导测试、并行模糊测试和链上数据集成等先进功能,显著提升智能合约安全检测效率与可扩展性。

释放美杜莎:快速可扩展的智能合约模糊测试

什么是Medusa?

等待终于结束——我们激动地推出Medusa v1,这是一个旨在增强智能合约安全性的尖端模糊测试框架。Medusa基于我们的首个模糊测试工具Echidna,以及我们在区块链系统上执行无数安全审查的经验。凭借使模糊测试更具可扩展性和效率的特性,Medusa代表了开发者和安全工程师处理智能合约模糊测试方式的重大飞跃。

Medusa是一个基于Geth构建的开源EVM模糊测试器。我们的首个主要版本引入了强大功能,使模糊测试高效且可扩展:

  • 覆盖率引导模糊测试:实现高效的合约探索,并通过HTML报告提供直接反馈
  • 并行模糊测试:与硬件无缝扩展以加速模糊测试活动
  • 智能变异值生成:利用运行时值和Slither的洞察来优化模糊测试输入
  • 链上模糊测试:使用直接从区块链获取的值作为模糊测试状态种子,提高现实世界漏洞发现能力
  • 增强的调试功能:提供丰富的执行跟踪和高级报告功能,更深入洞察模糊测试器的执行

Medusa代表了智能合约模糊测试的最新技术水平。我们投入了大量精力确保其功能强大且易于使用。

使用Medusa

开始使用Medusa非常简单:

  1. 通过Homebrew在macOS上安装Medusa:

    1
    
    brew install medusa
    

    有关预编译二进制文件和自定义构建的信息,请访问我们的安装页面。

  2. 运行以下命令初始化新项目:

    1
    
    medusa init
    

    此命令生成一个medusa.json配置文件,用于调整模糊测试运行。

  3. 使用以下命令开始模糊测试:

    1
    
    medusa fuzz
    

有关详细文档,请访问我们Building Secure Contracts网站上的Medusa页面。您还可以观看我们下周的模糊测试研讨会和Uniswap v4不变性演练(日期和时间将在X上公布),学习如何编写健壮的不变性。

Echidna怎么样?

通过Medusa,我们正在探索用于智能合约模糊测试的新EVM实现和语言。虽然Echidna一直是一个强大的模糊测试器,但Medusa提供了明显优势:

  • 使用Go编写:这提高了Medusa的可维护性,并允许使用原生API,便于集成到其他项目中
  • 基于Geth构建:这确保了强大的EVM等效性,并简化了Medusa的代码维护

为了验证Medusa的性能,我们对Echidna进行了广泛的内部基准测试,微调了Medusa的值生成以确保其提供最佳结果。例如,下图显示了我们基准测试的输出,其中Medusa(虚线)和Echidna(实线)在覆盖率和语料库大小方面表现相似:

图1:Echidna与Medusa内部基准测试对比

虽然我们将继续维护Echidna进行小错误修复,但我们现在的主要重点转向Medusa的演进。

智能合约安全的未来

模糊测试是智能合约安全中的关键技术,通过Medusa,我们旨在使这项技术成为行业标准。通过提供强大的启发式方法、并行执行和链上洞察,Medusa使智能合约模糊测试比以往任何时候都更具可扩展性和可访问性,使开发人员能够更快、更有效地识别漏洞。

我们邀请您加入我们的社区,帮助塑造Medusa的未来:

  • 在GitHub上贡献:通过提交问题、PR或反馈来改进Medusa的功能
  • 加入我们的Slack:与其他安全研究人员和开发人员联系,分享见解和最佳实践
  • 如果您的团队希望获得关于如何充分发挥Medusa潜力的反馈,请联系我们
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计