rnveternal/sc-access-auditor
GitHub: rnveternal/sc-access-auditor
开源 CLI 工具,审计 EVM 智能合约的访问控制风险——所有权、多签、Timelock 与代理可升级性,覆盖 60+ 链。
Stars: 1 | Forks: 0
# 🛡️ sc-access-auditor
**究竟是谁在控制你的智能合约 —— 这种控制权有多容易被窃取?**
_由 **RNVETERNAL** 驱动_
[](LICENSE)
[](package.json)
[]()
## 解决的问题
大多数审计工具会扫描合约的*代码*以查找漏洞 —— 重入攻击、溢出、
未检查的调用。这很重要。但数据讲述了另一个故事:
年复一年,Web3 最大的损失并非来自高明的漏洞利用 ——
而是源于**谁掌握了密钥**。一个被盗用的单一所有者钱包。
一个实际上是 1-of-3 的“多签”。一个无人审查的
可升级代理。没有 timelock,使得恶意更改在零预警的情况下
立即生效。
Slither、Mythril 和 Foundry 的内置检查基本不涉及
这一层。**sc-access-auditor 专门负责 —— 并且只负责这件事。** 范围虽小,
但专心做好这一项工作。
## 为什么使用它
- ⚡ **30 秒分诊,而不是 3 周的审计。** 将它指向任何已部署的
地址,在几秒钟内获得风险评分 —— 在你存入资金之前,
在集成之前,在投资之前。
- 🔍 **检查真正导致损失的层面。** 所有权模式、
多签阈值、timelock 的存在、代理可升级性 —— 这些正是
现实中绝大多数 Web3 安全事件背后的核心类别。
- 🧩 **适用于任何已部署的合约,无论是否经过验证。** 代理检测
直接读取原始的 EIP-1967 存储槽 —— 无需 ABI。经过验证的
源码(通过 Etherscan)是锦上添花,而非先决条件。
- 🌐 **一个工具,支持 60 多条链。** Etherscan 统一的 V2 API 意味着 Ethereum、
BSC、Polygon、Arbitrum 以及其他数十条链都可以通过单个
API 密钥支持。
- 📦 **零锁定。** 免费开源,采用 MIT 许可证。将其作为 CLI 使用,
或将其作为库 `import` 到你自己的工具/CI pipeline 中。
- 📤 **对 CI/CD 友好的输出。** 直接导出为 JSON 或 CSV,用于
仪表板、监控 pipeline,或在交易达成前留下记录。
如果你是**部署合约的 dev**、进行尽职调查的**投资者**,
或是**在集成前审查协议的 DAO** —— 这
是你应该运行的第一款工具,在进行深入审计之前。
## 安装
```
git clone https://github.com/rnveternal/sc-access-auditor.git
cd sc-access-auditor
npm install
cp .env.example .env # fill in at least one RPC URL
```
## 用法
```
node src/cli.js scan 0xYourContractAddress --chain ethereum
# 导出结果以替代(或伴随)terminal report
node src/cli.js scan 0xYourContractAddress --chain ethereum --format json --out report.json
node src/cli.js scan 0xYourContractAddress --chain ethereum --format csv --out report.csv
```
或作为库使用:
```
import { auditContract } from "./src/index.js";
const result = await auditContract("0xYourContractAddress", "ethereum");
console.log(result.risk.level, result.risk.score);
```
完整示例请参见 `examples/scan-example.js`。
## 检查内容 (v1)
- **所有权模式** — 合约是否暴露了 `owner()`、`admin()` 或
类似方法,以及该地址是单一钱包 (EOA) 还是智能合约?
- **多签设置** — 如果所有者是智能合约,它是公认的
Gnosis Safe 吗,其签名者阈值是多少?
- **Timelock** — 在 admin 操作
生效之前,是否有延迟(以及公开的可见时间窗口)?
- **代理可升级性 (EIP-1967)** — 合约是否为可升级
代理,如果是,允许替换新逻辑的账户是 EOA、
多签,还是无法识别的合约?
- **源码验证(可选)** — 如果设置了 `ETHERSCAN_API_KEY`,则检查
合约源码是否已在相关的区块
浏览器上验证(通过 Etherscan 统一的 V2 API —— 一个密钥即可覆盖 Ethereum、BSC、
Polygon、Arbitrum 及其他 60 多条链)。
- **综合风险评分 (0–100)**,附带 HIGH/MEDIUM/LOW/MINIMAL 评级以及
具体发现列表。
完整方法论:[`docs/RISK_SCORING.md`](docs/RISK_SCORING.md)
已知的局限性也在其中记录说明 —— 这是一款快速分诊工具,
不能替代全面的手动审计。
## 路线图
v1 是免费且开源的(本仓库)。计划推出 v2 高级版,用于
持续监控和实时警报 —— 详情
请参见 [`docs/ROADMAP.md`](docs/ROADMAP.md)。
## 许可证
MIT
RNVETERNAL
标签:MITM代理, Web3, 区块链, 文档结构分析, 智能合约, 自定义脚本