1 个不稳定版本
新增 0.1.9 | 2024 年 8 月 5 日 |
---|---|
0.1.4 |
|
0.0.28 |
|
0.0.18 |
|
0.0.6 |
|
#1888 在 魔法豆
每月下载 425 次
33KB
223 行
⚠️ 通过 crates 安装不再完全支持。
cyfrinup
是首选安装方法。.为了获得最佳体验,请运行
cargo uninstall aderyn
来移除遗留的 crate 安装,并使用cyfrinup
代替。完整的安装说明请见 此处。
这是一个强大的 Solidity 静态分析器,可以从鸟瞰的角度查看您的智能合约。
什么是 Aderyn?
Aderyn 是一个开源的公共品开发工具。 它是一个基于 Rust 的 Solidity 智能合约静态分析器,旨在帮助协议工程师和安全研究人员发现 Solidity 代码库中的漏洞。
得益于其静态漏洞检测器的集合,在您的 Solidity 代码库上运行 Cyfrin Aderyn 将会 突出显示潜在漏洞,大大减少您的 Solidity 代码中未知问题的可能性,让您有更多时间关注更复杂的问题。
使用 Rust 构建,Aderyn 可以无缝集成到小型和 企业级开发工作流程 中,提供快速的命令行功能,并提供了构建自定义检测器以适应您的代码库的框架。
您可以阅读 Cyfrin 官方文档 以深入了解 Aderyn 的功能。
特性
- 支持任何开发框架(Foundry/Hardhat/Truffle 等)
- 模块化检测器
- AST遍历
- Markdown报告
安装
推荐的VSCode扩展: rust-analyzer - Visual Studio Code的Rust语言支持 Rust语法 - 改进的Rust语法高亮显示
使用Cyfrinup
注意:如果您之前使用cargo安装了aderyn,在使用
cyfrinup
之前,请先运行以下命令以避免冲突:cargo uninstall aderyn
步骤 1:安装Cyfrinup
Cyfrinup是一个CLI工具,简化了Cyfrin工具的安装和管理。要安装Cyfrinup,请在您的终端中运行以下命令
curl -L https://raw.githubusercontent.com/Cyfrin/aderyn/dev/cyfrinup/install | bash
步骤 2:更新路径
安装程序将提示您运行一个source
命令。您可以运行此命令或重新加载您的终端。
步骤 3:使用Cyfrinup安装Aderyn
安装Cyfrinup后,您可以使用它来安装Aderyn。请在您的终端中运行以下命令
cyfrinup
步骤 4:验证安装
aderyn --version
未来更新
要更新Aderyn到最新版本,可以运行cyfrinup
cyfrinup
Cyfrinup将用最新版本替换现有版本。
快速入门
一旦Aderyn安装到您的系统上,您就可以将其运行在您的基于Foundry的代码库上以查找代码中的漏洞。
在本例中,我们将使用aderyn-contracts-playground存储库。您可以通过将其克隆到您的系统来跟随操作
git clone https://github.com/Cyfrin/aderyn-contracts-playground.git
导航到存储库内部
cd aderyn-contracts-playground
我们通常使用几个智能合约和测试来尝试新的检测器。通过以下命令编译合约:
forge build
一旦您的智能合约成功编译,请使用以下命令运行Aderyn
aderyn [OPTIONS] path/to/your/project
将[OPTIONS]替换为所需的特定命令行参数。
有关如何开始使用Aderyn的详细说明,请参阅Cyfrin官方文档
参数
用法:aderyn [OPTIONS] <ROOT>
<ROOT>
:要分析的基础代码的根目录路径。默认为当前目录。
选项
-s
,--src
:源合约的路径。如果不提供,或者aderyn找不到要读取的著名文件(如它自动搜索的foundry.toml
),则将使用ROOT目录。- 在Foundry项目中,这通常是
src/
文件夹,除非在foundry.toml
中另有说明。 - 在Hardhat项目中,这通常是
contracts/
文件夹,除非在配置中另有说明。
- 在Foundry项目中,这通常是
-i
,--path-includes <PATH_INCLUDES>
:以逗号分隔的路径字符串列表(不带空格)。任何不包含这些字符串的Solidity文件路径都将被忽略-x
,--path-excludes <PATH_EXCLUDES>
:以逗号分隔的路径字符串列表(不带空格)。任何包含这些字符串的Solidity文件路径都将被忽略-o
,--output <OUTPUT>
:最终报告的期望文件路径(将覆盖现有文件)[默认:report.md]-n
,--no-snippets
:在报告中不包括代码片段(减少大型存储库中的报告大小)-h
,--help
:打印帮助信息-V
,--version
:打印版本信息
您必须提供您要分析的仓库的根目录。或者,您可以提供单个Solidity文件的路径(此模式需要安装Foundry)。
示例
aderyn /path/to/your/foundry/project/root/directory/
在官方Cyfrin 文档中找到更多示例
构建自定义Aderyn检测器
Aderyn使构建能够适应任何Solidity代码库和协议的静态分析检测器变得容易。本指南将教您如何构建、测试和运行您的自定义Aderyn检测器。要了解如何创建您的自定义Aderyn检测器,请查阅官方文档
Docker
您可以从Docker容器中运行Aderyn。
构建镜像
docker build -t aderyn .
/path/to/project/root
应该是您的Foundry或Hardhat项目根目录的路径,它将被挂载到容器中的/share
。
运行Aderyn
docker run -v /path/to/project/root/:/share aderyn
使用标志运行
docker run -v /path/to/project/root/:/share aderyn -h
单个Solidity文件模式
如果是Solidity文件路径,则Aderyn将创建一个临时的Foundry项目,将合约复制到其中,编译合约然后分析由该临时项目生成的AST。
贡献 & 许可证
帮助我们构建Aderyn 🦜 请参阅我们的贡献指南。Aderyn是一个开源软件,根据GPL-3.0许可证授权。
在本地构建Aderyn
致谢
本项目的存在归功于所有贡献者。
归属
- AST Visitor代码来自solc-ast-rs。
- 原始检测器基于4naly3er检测器。
- 向静态分析的原始王者slither致敬。
依赖项
~35–54MB
~1M SLoC