工程开发
substrate-vulnerability-scanner avatar

substrate-vulnerability-scanner

分析 Substrate/Polkadot 运行时与 FRAME pallet,检测包含算术溢出、拒绝服务 (DoS) 与权限检查不当等 7 种关键漏洞。

简介

Substrate 漏洞扫描器是一款专为 Substrate 区块链开发人员与审计师设计的专业安全分析工具,适用于 Polkadot 平行链与独立链。此工具专注于识别 FRAME pallet 中的平台特有安全模式,若未经处理,这些漏洞可能导致节点崩溃、拒绝服务 (DoS) 攻击、未经授权的存取或资金损失。它为审计 Substrate 链核心的 dispatchable 外部函数与运行时配置提供了系统化的方法。

  • 执行静态分析以检测 7 种关键漏洞模式:算术溢出(缺少 checked/saturating 运算)、Panic DoS(不安全的 unwrap/expect/索引)、权重与手续费(基准测试不足/DoS 风险)、Verify-First-Write-Last 违反、无签名交易验证绕过、不安全的随机数(随机数种子问题)以及错误的 Origin 检查。

  • 检查代码库结构,包含 lib.rs 中的 pallet 实现、运行时配置及基准测试档,以确保符合安全最佳实践。

  • 协助验证存储写入与事件触发是否符合 Substrate v0.9.25+ 版本中引入的交易安全性标准。

  • 支持整合 Rust 原生工具,如 cargo-fuzz、用于迁移测试的 try-runtime,以及用于权重计算验证的 Substrate 原生基准测试框架。

  • 提供可执行的修复建议,精确指出问题代码行数并针对发现的安全缺陷提出实现修正建议。

  • 开发人员应在自定义 pallet 的发布前安全评估或运行时升级的例行审计期间调用此技能。

  • 扫描器预期目标项目具备标准的 Rust Substrate 项目结构;用户须确保目标项目包含适当的 frame-support 依赖项以实现完整覆盖。

  • 常见用法包括扫描 Panic 潜在点、审查算术逻辑以防止溢出,并验证所有权限操作是否使用 ensure_root 或安全自定义 Origin,而非不安全的 ensure_signed。

  • 此工具对于维护高风险 pallet 的开发人员特别有效,因为在这些场景中,权重计算错误可能导致垃圾邮件攻击或运营不稳。

仓库统计

Star 数
4,905
Fork 数
428
Open Issue 数
21
主要语言
Python
默认分支
main
同步状态
空闲
最近同步时间
2026年4月30日 10:05
在 GitHub 查看