本文综述了审计智能合约所需的各种工具,强调了Web3安全的重要性以及选择合适工具识别智能合约漏洞的必要性。提及的工具包括Contract Fuzzer、Echidna、Slither和Mythril等,以及它们的优缺点,适合开发人员和审计人员使用。

审计师和开发者必备的智能合约审计工具
本文最初发布于 BuildBear Tutorials。
由于智能合约的漏洞,2023年损失超过10亿美元。Web3 安全对于区块链的采用至关重要。使用适当的安全工具对于识别智能合约中的漏洞是必不可少的。
本文呈现了一份在 Web3 安全中最流行和广泛使用的工具的汇编。
合约模糊测试工具
模糊测试是一种有效的技术,通过用各种输入测试智能合约以检测漏洞, 以揭示指示漏洞的异常行为。
ContractFuzzer 可以识别多种漏洞,包括 Gasless Send、异常序、重入攻击、时间戳和区块号依赖性、危险的 delegateCall 和冻结以太坊合约问题。
Echidna
Echidna 用于对智能合约进行模糊测试和基于属性的安全测试。它验证合约是否遵循特定规则,并旨在找出其中的问题。
Echidna 擅长的:
- 找到智能合约中的问题。
- 测试使用不同工具(如 Truffle 或 Hardhat)创建的合约。
Echidna 不太擅长的:
- 处理大型合约时可能较慢。
- 可能不适用于使用大量外部库的合约。
- 与 Vyper 编程语言不太兼容。
Foundry Fuzz
Forge 实现高效的基于属性的测试,专注于一般行为而非特定案例。
Forge 擅长的:
- 使用 Forge 快速测试。
- 自定义选项,如调整测试频率,提高效率。
- 基于处理程序的测试,以保持跨合约交互的不变性。
Forge 不太擅长的:
- 由于 Forge 可能无法自动选择正确的值,在某些情况下可能需要手动调整输入范围。
其他有用的工具: ChainFuzz & sFuzz
动态和静态分析:
Slither
- Slither 在发掘漏洞方面表现出色,误报率极低,执行速度快,通常每个合约执行时间少于 1 秒(持续时间因复杂性而异)。
- Slither 支持从 0.4 版本开始的 Solidity,适用于审计各种智能合约。
- Slither 可以轻松集成到 CI/CD 设置中,简化自动化并帮助开发者。
- Slither 可以发现漏洞,例如自杀函数、未初始化的状态/存储变量、向未知目的地发送以太币的交易、重入攻击威胁、锁定以太币的合约和不当使用 tx.origin。
Mythril
- 由 CONSENSYS 使用 Python 开发,Mythril 是领先的智能合约审计工具。
- 通过 pip 简单安装,具有符号执行和污点分析等高级分析技术。
- 兼容使用 EVM 字节码的多个区块链,不仅限于以太坊。
- Mythril 通过指定已部署合约的地址开始分析,在检测漏洞方面表现优异,如交易顺序依赖性、随机数问题和重入威胁。
SolidityScan
SolidityScan 是一个基于云的智能合约漏洞扫描器,旨在发现漏洞并促进在解决漏洞后发布审计报告。
SolidityScan 生成的报告是全面的审计报告,包含有关你代码中潜在安全漏洞的详细信息。此外,SolidityScan 提供安全得分,有助于评估合约的安全状态。这使开发者能够在解决问题后重新扫描他们的合约,以提高得分,并与社区分享审计报告。
另外,还有一些其他值得注意的工具:
VS Code 扩展
这些 VS Code 扩展可以帮助你高效找到错误并增强工作流程:
Solidity Visual Developer
- 这是智能合约审计师必备的扩展。
- 提供以安全为重点的语法和语义高亮。
- 提供详细的类大纲、专业视图和先进的 Solidity 代码洞察。
- 增强了 Visual Studio Code 以支持 Solidity 开发。
Slither VSC
- 将 Slither 集成到 Visual Studio Code 中。
- 在 Solidity 智能合约上运行漏洞检测器并获取建议的修复。
- 提供比 Slither CLI 版本更清晰的错误视图。
- 如果你使用 Slither 进行审计,非常推荐。
EthOver
- 简化查看智能合约中硬编码地址的细节。
- 通过减少在 Etherscan 上反复复制和粘贴地址的需要来节省时间。
- 与智能合约的集成更加流畅。
Mythx VSC
- 一个扩展,可以直接在 Visual Studio Code 中运行 MythX 智能合约分析。
EthLint
- 分析 Solidity 代码的风格和安全最佳实践。
- 检测到问题时自动修正。
- 提供命令行界面来对合约进行代码检查。
此外,你可以探索其他一些有用的工具,如 Inline Bookmarks、Solidity Metrics 和 GraphViz Interactive、solidity-coverage、Prettier+Solidity Plugin。
审计书籍和指南:
- 审计师书籍 : 本汇编收集了来自 Code4rena 和 Sherlock 的独立安全研究人员的精彩发现。
- 审计检查清单: 一份全面的检查清单,概述在审计 Solidity 智能合约时需要检查的关键方面。
- Solidity 攻击向量 : 一个致力于探索 Solidity 攻击向量的开源库,提供有关潜在漏洞和安全威胁的有价值见解。
BuildBear
BuildBear 让你创建符合特定要求的个性化和私人测试网络。以下是 BuildBear 脱颖而出的原因:
- BuildBear Faucet:通过 BuildBear Faucet 即可即时获取本地和流行的 ERC20 测试网络代币。
- 分叉主网:使用 BuildBear,你可以轻松分叉多种 EVM 兼容链,包括以太坊、Polygon、Arbitrum、Optimism、Fantom、Binance 和 Avalanche,只需简单点击即可。
- 更快的交易:享受 BuildBear 加速的交易速度。执行 10 次交易的标准测试脚本只需不到 26 秒,而在公共测试网络(如 Sepolia)上通常需要 2 分钟以上。
最后, 在开始时使用审计工具识别和消除常见漏洞是一项非常值得推荐的实践。然而,单纯依赖这些工具的结果可能是一个重大疏忽。尽管市场上许多工具擅长检测基于模式的漏洞,但它们可能会忽略其他类型的漏洞,特别是与业务逻辑相关的漏洞。因此,在你的智能合约正常运行后,进行手动安全评估以防止潜在未来的漏洞变得至关重要。
如果你发现任何缺失的工具,请给我们发消息。
如果你支持我们的努力,请考虑关注我们的 Twitter 和 LinkedIn。如果你还没有加入,欢迎点击 这里 加入我们的 Telegram 群组。