释放美杜莎:快速可扩展的智能合约模糊测试
什么是Medusa?
等待终于结束——我们激动地推出Medusa v1,这是一个旨在增强智能合约安全性的尖端模糊测试框架。Medusa基于我们的首个模糊测试工具Echidna,以及我们在区块链系统上执行无数安全审查的经验。凭借使模糊测试更具可扩展性和效率的特性,Medusa代表了开发者和安全工程师处理智能合约模糊测试方式的重大飞跃。
Medusa是一个基于Geth构建的开源EVM模糊测试器。我们的首个主要版本引入了强大功能,使模糊测试高效且可扩展:
- 覆盖率引导模糊测试:实现高效的合约探索,并通过HTML报告提供直接反馈
- 并行模糊测试:与硬件无缝扩展以加速模糊测试活动
- 智能变异值生成:利用运行时值和Slither的洞察来优化模糊测试输入
- 链上模糊测试:使用直接从区块链获取的值作为模糊测试状态种子,提高现实世界漏洞发现能力
- 增强的调试功能:提供丰富的执行跟踪和高级报告功能,更深入洞察模糊测试器的执行
Medusa代表了智能合约模糊测试的最新技术水平。我们投入了大量精力确保其功能强大且易于使用。
使用Medusa
开始使用Medusa非常简单:
-
通过Homebrew在macOS上安装Medusa:
1
brew install medusa
有关预编译二进制文件和自定义构建的信息,请访问我们的安装页面。
-
运行以下命令初始化新项目:
1
medusa init
此命令生成一个medusa.json配置文件,用于调整模糊测试运行。
-
使用以下命令开始模糊测试:
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潜力的反馈,请联系我们