#solidity #detector #ast #path #running #build #file-path

bin+lib aderyn

Rust 基础的 Solidity AST 分析器

1 个不稳定版本

新增 0.1.9 2024 年 8 月 5 日
0.1.4 2024 年 6 月 24 日
0.0.28 2024 年 5 月 29 日
0.0.18 2024 年 3 月 26 日
0.0.6 2023 年 11 月 15 日

#1888魔法豆

Download history 262/week @ 2024-04-21 105/week @ 2024-04-28 245/week @ 2024-05-05 258/week @ 2024-05-12 274/week @ 2024-05-19 391/week @ 2024-05-26 465/week @ 2024-06-02 158/week @ 2024-06-09 241/week @ 2024-06-16 256/week @ 2024-06-23 87/week @ 2024-06-30 53/week @ 2024-07-07 31/week @ 2024-07-14 43/week @ 2024-07-21 155/week @ 2024-07-28 192/week @ 2024-08-04

每月下载 425

MIT 许可证

33KB
223

⚠️ 通过 crates 安装不再完全支持。cyfrinup 是首选安装方法。.

为了获得最佳体验,请运行 cargo uninstall aderyn 来移除遗留的 crate 安装,并使用 cyfrinup 代替。

完整的安装说明请见 此处



这是一个强大的 Solidity 静态分析器,可以从鸟瞰的角度查看您的智能合约。



文档 获取支持 网站 Twitter


Stargazers Forks Contributors Issues GPL-3.0 License

什么是 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/文件夹,除非在配置中另有说明。
  • -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

  1. 安装Rust,
  2. 克隆此仓库并cd aderyn/,
  3. make,
  4. 使用cargo命令在本地构建、测试和运行。

致谢

本项目的存在归功于所有贡献者

归属

依赖项

~35–54MB
~1M SLoC