srlabs/substrate-runtime-fuzzer

GitHub: srlabs/substrate-runtime-fuzzer

专为 Substrate 区块链 Runtime 设计的模糊测试工具,通过多引擎覆盖率引导发现深层安全漏洞。

Stars: 33 | Forks: 18

# Substrate Runtime Fuzzer `substrate-runtime-fuzzer` 是由 [SRLabs](https://srlabs.de) 自 2020 年起持续开发的 [substrate](https://github.com/paritytech/polkadot-sdk/tree/master/substrate) runtime 模糊测试工具。 它已被用作我们对 [Parity](https://parity.io) 以及 Polkadot 和 Kusama 生态系统中许多平行链进行持续审计流程的一部分。 作为 [Substrate Builders Program](https://substrate.io/ecosystem/substrate-builders-program/) 的一部分,该模糊测试工具已应用于超过 30 个不同的项目,在此过程中发现了数十个关键漏洞。 ## 如何使用它? 以下是在 [solochain template runtime](https://github.com/paritytech/polkadot-sdk/tree/master/templates/solochain/runtime) 上启动 `substrate-runtime-fuzzer` 的步骤: ``` cargo install ziggy cargo-afl honggfuzz grcov rustup target add wasm32-unknown-unknown git clone https://github.com/srlabs/substrate-runtime-fuzzer cd substrate-runtime-fuzzer/templates/solochain/ SKIP_WASM_BUILD=1 cargo ziggy fuzz ``` 你可以使用 `-j n` 标志来并行运行 $n$ 个作业。 如果你在多核环境下长时间运行,我们还建议使用 `--no-honggfuzz`,因为在这种情况下,honggfuzz 往往会拖慢速度并使语料库膨胀。 `SKIP_WASM_BUILD=1` 将减少编译时间和二进制文件的大小。我们并不是在模糊测试 wasm runtime。 ### 什么是 "ziggy"? [`ziggy`](https://github.com/srlabs/ziggy/) 是由 SRLabs 团队编写的一个模糊测试管理工具。 它将使用正确的配置生成多个不同的覆盖率引导的模糊测试器,并定期精简语料库以及在实例之间共享它。 ## 如何在我基于 substrate 的 runtime 上使用它? 第一步是创建一个项目并添加与[此项目](./templates/solochain/Cargo.toml)相同的依赖项。 然后,你可以将 `solochain-template-runtime` 依赖项修改为你自己的 runtime(可以是本地 `path` 或 git URL)。 最后,你应该添加一个创世配置,以确保模糊测试器能覆盖尽可能多的代码。 你可以从 [kitchensink fuzzer](./templates/kitchensink/src/main.rs) 的创世配置中获取灵感。 ## 许可证 Substrate Runtime Fuzzer 主要根据 MIT 许可证和 Apache 许可证(版本 2.0)的条款进行分发。 详情请参见 [LICENSE-APACHE](LICENSE-APACHE) 和 [LICENSE-MIT](LICENSE-MIT)。
标签:AFL, ASN解析, Fuzzing, Honggfuzz, Kusama, Polkadot, Rust, Solochain, SRLabs, Substrate, Wasm, WebAssembly, Ziggy, 代码覆盖率, 加密货币, 区块链, 区块链安全, 可视化界面, 安全测试, 平行链, 攻击性安全, 智能合约审计, 波卡, 网络流量审计, 运行时, 通知系统