Lappsnet/defi-exploit-detector
GitHub: Lappsnet/defi-exploit-detector
基于历史漏洞复现与 Foundry PoC 的 DeFi 智能合约静态检测引擎基准测试工具包,用于量化评估漏洞检测器的准确率与误报率。
Stars: 0 | Forks: 0
# DeFi 漏洞检测器
一个静态分析工具包,通过将历史漏洞复现为 Foundry 概念验证测试,并据此对 TypeScript 检测引擎进行评分,从而捕获真实的 DeFi 漏洞模式(重入、预言机操纵、访问控制缺陷)。
它的意义不在于提供另一个经过审计的保险库合约——而是一个基准测试:对于每个检测器,都包含一个复现真实世界漏洞模式的最小化易受攻击合约、同一个合约的修复版本,以及一个能真正耗尽易受攻击合约但在修复版本上失败的 PoC。检测器会针对两者进行评分,因此记分卡可以证明它确实捕获了漏洞,而不是盲目标记每一个外部调用。
## 结构
```
detectors/ TypeScript detector engine (Solidity AST-based)
exploits/ One folder per historical exploit pattern:
01-reentrancy-classic/
src/VulnerableVault.sol recreation of the vulnerable pattern
src/FixedVault.sol the same contract, patched
test/Reentrancy.t.sol Foundry PoC: drains the vulnerable one,
fails against the fixed one
foundry.toml
benchmark/ Wires detectors to exploits/, runs cases.json,
prints a scorecard table
```
## 运行方式
Foundry PoC(证明漏洞是真实的,与检测器无关):
```
cd exploits/01-reentrancy-classic
forge test -vv
```
针对单个文件运行检测器:
```
cd detectors
npm install
npm run cli -- ../exploits/01-reentrancy-classic/src/VulnerableVault.sol
```
完整的基准测试记分卡:
```
cd detectors
npm run benchmark
```
## 当前记分卡
| 检测器 | 漏洞模式 | 参考事件 |
|---|---|---|
| `reentrancy-checks-effects-interactions` | 在 `withdraw()` 中状态写入之前的外部调用 | The DAO (2016),以及 Cream Finance (2021) 和 Fei/Rari (2022) 中的相同根本原因 |
1/1 历史案例被检测到,在已修复合约上 0 误报。
## 路线图
每个新条目都会增加一个检测器 + 一个历史漏洞案例 + 基准测试覆盖范围:
- [x] 重入(checks-effects-interactions 违规)
- [ ] 价格预言机操纵(单一来源现货价格,无 TWAP/陈旧度检查)
- [ ] 访问控制(缺少 `onlyOwner` / 未受保护的初始化程序)
- [ ] 未检查的低级 call 返回值
- [ ] 跨链金额编码中的整数截断 / 精度损失
- [ ] 闪电贷驱动的治理/价格操纵
## 方法论说明
易受攻击的合约是对有充分记录的漏洞*模式*的最小化复现,是为基准测试目的从头编写的——并非任何单一协议生产代码的副本。每个漏洞案例都链接到其所基于的真实事件的公开分析文章。
标签:DeFi, Foundry, Web3安全, 智能合约审计, 暗色界面, 错误基检测, 静态代码分析