LHKong7/smart-contracts-audit-skills
GitHub: LHKong7/smart-contracts-audit-skills
一套面向 OWASP 智能合约 Top 10 的 Claude Code 审计技能,将 AI 转变为专注的智能合约安全审查工具。
Stars: 1 | Forks: 0
# 智能合约审计技能
这是一系列用于审计智能合约的 **[Claude Code](https://claude.com/claude-code) 技能** —— 适用于 OWASP 风格的 **智能合约 Top 10 (SC01–SC10:2026)**,每个类别对应一个技能。每个技能将 Claude 转变为针对特定漏洞类别的专注安全审查员:它教授信任模型和故障模式,演练具体的审计方法,提供一个启发式扫描器来快速发现候选问题,并将每个发现建立在真实的利用路径之上,而不是简单的模式匹配。
其目标是实用、诚实的安全审查:在攻击者之前找到被破坏的假设,证明其确实可被利用,并推荐久经沙场的修复方案 —— 同时永远不声称某个合约是“安全的”。
## 技能列表
| # | 技能 | 涵盖范围 | 扫描器 |
|---|-------|--------|---------|
| **SC01** | [`access-control-audit`](access-control-audit/) | 缺失/不正确的授权,`msg.sender`/调用者混淆,未受保护的初始化器和升级,未验证的 hooks,角色/权限混淆,过度中心化的 admin 密钥 | `scan_access_control.py` |
| **SC02** | [`business-logic-audit`](business-logic-audit/) | 破坏的经济不变量,奖励/费用计算,可绕过的限制,操作顺序和路径依赖状态,份额/首位存款者和取整漏洞,跨模块/跨链计算 | `scan_business_logic.py` |
| **SC03** | [`price-oracle-manipulation-audit`](price-oracle-manipulation-audit/) | 现货/TWAP DEX预言机操纵,闪电贷/JIT 偏斜,陈旧性和轮次完整性,单一来源喂价,偏差/聚合,流动性枯竭 | `scan_oracle.py` |
| **SC04** | [`flash-loan-attack-audit`](flash-loan-attack-audit/) | 闪电贷作为力量倍增器 —— 治理投票收买,同区块预言机偏斜,份额/计算放大,缺失的速率限制/上限,原子化借用→操纵→提取→还款 | `scan_flash_loan.py` |
| **SC05** | [`input-validation-audit`](input-validation-audit/) | 未经验证的参数和边界 (fee > 100%, zero/max-uint),零地址和 token 真实性检查,签名/nonce/过期/chainid 重放,跨链 payload 验证,不受信任的 admin 输入 | `scan_input_validation.py` |
| **SC06** | [`unchecked-external-calls-audit`](unchecked-external-calls-audit/) | 被忽略的返回值,非标准 ERC-20,未经检查的底层 `call`/`delegatecall`,任意/用户提供的被调用者,调用后的状态,推与拉支付模式 | `scan_external_calls.py` |
| **SC07** | [`arithmetic-errors-audit`](arithmetic-errors-audit/) | 取整方向/偏差,先除后乘,定点数缩放,份额/LP 转换不对称,首位存款者边缘情况,累积精度损失 | `scan_arithmetic.py` |
| **SC08** | [`reentrancy-audit`](reentrancy-audit/) | 状态更新前的外部调用,检查-生效-交互模式,单一/跨函数/跨合约和只读重入,ERC-777/721/1155/4626 hooks,闪电贷回调 | `scan_reentrancy.py` |
| **SC09** | [`integer-overflow-audit`](integer-overflow-audit/) | `unchecked` 代码块和 assembly,0.8 版本之前的 SafeMath,向下转型/截断,乘法/指数溢出,以及非 EVM (Move/Sui) wrap 和 shift-truncation 语义 | `scan_overflow.py` |
| **SC10** | [`proxy-upgrade-audit`](proxy-upgrade-audit/) | 未受保护的升级/admin,未初始化的代理,重复初始化,存储布局碰撞,`delegatecall` 上下文,UUPS/Transparent/Beacon 模式,升级 timelock | `scan_proxy.py` |
这些类别在设计上是有重叠的(闪电贷放大了预言机漏洞;未经检查的调用导致了重入;代理漏洞通常也是访问控制漏洞)。每个技能都明确划分了与相邻技能的边界,并通过名称进行交叉引用,这样你就可以跨类别追踪某个发现,而不是仅限于单一视角。
## 每个技能的构建方式
每个技能都遵循相同的布局,因此只要了解其中一个,就能了解所有:
```
/
├── SKILL.md # when to trigger + the audit method
├── references/
│ ├── vulnerability-patterns.md # the full taxonomy: vulnerable code, fix, detection cues
│ ├── secure-patterns.md # canonical battle-tested implementations to recommend
│ └── case-studies.md # real 2025 exploits mapped to the taxonomy
└── scripts/
└── scan_*.py # heuristic scanner — finds candidates, not confirmed bugs
```
每当技能触发时,就会加载 `SKILL.md`;`references/` 文件在需要详细检查清单时按需读取;扫描器在不将其源码加载到上下文的情况下运行。这使得每个技能在你需要其深度之前都保持轻量。
## 共享审计方法
所有技能都共享一个理念,并根据每个类别进行适应:**不要优先使用 grep。** 最严重的漏洞在孤立状态下看起来没问题,只有相对于代码从未声明的模型时才是错误的。因此,每个技能大致遵循以下步骤:
1. **构建模型** —— 系统假设的信任边界 / 不变量 / 输入。
2. **盘点攻击面** —— 攻击者可以触及的每个函数、调用或输入。
3. **遍历分类法** —— 根据已知的故障模式检查攻击面。
4. **确认可利用性** —— 编写具体的攻击者路径;在报告之前,以对抗性方式尝试对其进行反驳。
5. **报告** —— 严重性、精确的 `file:line`、被破坏的假设、攻击方式以及使用公认模式的修复方案。
## 使用技能
### 通过 Claude Code 使用(推荐)
将技能文件夹放置在 Claude Code 发现技能的位置(例如你的项目或个人技能目录),当你要求 Claude 审查、审计或安全检查 Solidity / Vyper / DeFi 代码时,它们会自动触发 —— 即使你没有指明漏洞类别。你也可以显式调用它们,例如“在 `Vault.sol` 上使用 reentrancy-audit 技能”。
### 直接运行扫描器
每个扫描器都是一个无依赖的 Python 3 脚本,用于呈现需要审查的**候选**区域:
```
python3 access-control-audit/scripts/scan_access_control.py path/to/contracts/
python3 reentrancy-audit/scripts/scan_reentrancy.py path/to/contracts/ --json
```
它会按严重性排序,标记出外部的/公共的改变状态的函数、高风险模式以及各个类别的线索。请将每一个命中项视为需要手动验证的线索。
## 诚实的局限性
- **扫描器是启发式的。** 它们会找到*值得*审查的地方;它们不会确认漏洞,一次干净的运行**并不**代表安全性得到了证明。
- **技能是谨慎审查者的力量倍增器,而不是替代品。** 审计方法之所以存在,正是因为危险的漏洞需要对意图进行推理,而不是模式匹配。
- **“安全”永远不会是结论。** 诚实的声明是“在审查范围内,基于这些假设,未发现问题” —— 并且要明确指出范围和假设。
## 许可证和归属
案例研究参考了公开的 2025 年事后分析;源链接保留在每个技能的 `references/case-studies.md` 中。请将这些技能用于授权的安全审查、审计、CTF 和教育。
标签:AI代码审计, Web3安全, 加密, 智能合约审计, 漏洞扫描器, 逆向工具