hunterinvariants/litmus
GitHub: hunterinvariants/litmus
Litmus 是一个智能合约安全工具的可复现基准测试框架,通过版本化 ground truth 和可执行 PoC 精确测量漏洞检测器的精确率、召回率和误报率。
Stars: 0 | Forks: 0
# Litmus
[](https://github.com/hunterinvariants/litmus/actions/workflows/ci.yml)
一个用于智能合约漏洞检测器的可复现基准测试。Litmus 针对版本化的 ground truth,测量每个案例的精确率(precision)、
召回率(recall)、F1 和误报(false alarms),这些 ground truth 由可执行的 Foundry
证明或不可变的外部教学语料库提供支持。
## 交付内容
- 五个版本化的基准测试案例:三个离线合成 PoC,一个 Euler mainnet-fork PoC,以及
固定在提交 `5626163a3ebbda450cb94df28735b8e09595a212` 的外部 `7702-goat` 语料库;
- 用于案例、标准化发现和记分卡的 JSON Schemas;
- 确定性的机器可读评分;
- 用于原生 Slither 和 Aegis-7702 扫描 artifacts 的适配器;
- 已提交的原始输入、标准化发现、记分卡和生成的证据报告;
- 固定版本的依赖项和 GitHub Actions。
## 复现
```
git clone --recurse-submodules https://github.com/hunterinvariants/litmus.git
cd litmus
python -m pip install -r requirements-dev.txt
python scripts/verify_evidence.py
forge test -vv
```
Euler fork 案例仅在配置了 `ETH_RPC_URL` 时运行。在安装依赖项后,所有其他 Foundry 案例和所有
已提交的记分卡均可在离线状态下复现。
## 当前 EIP-7702 对比
| 工具 | TP | FP | FN | Precision | Recall | FP/case |
|---|---:|---:|---:|---:|---:|---:|
| Aegis-7702 v1.0.0 | 18 | 0 | 0 | 1.000 | 1.000 | 0.000 |
| 原生 Slither 0.11.5 | 1 | 41 | 17 | 0.024 | 0.056 | 41.000 |
这是一个故意包含漏洞的外部语料库,并非具有代表性的安全工具排名。
Aegis-7702 和 Litmus 共享一位维护者,因此该结果是可复现的集成,而不是
独立验证。参见 `docs/EVIDENCE.md`、`docs/METHODOLOGY.md` 和 `docs/GOVERNANCE.md`。
## 语料库
| 案例 | 类别 | 证据 |
|---|---|---|
| 001 | 舍入 / 精度 | ERC-4626 通胀 PoC |
| 002 | 重入 / 时序 | 只读重入 PoC |
| 003 | 记账不同步 | fee-on-transfer PoC |
| 004 | 记账 / 偿付能力 | Euler mainnet-fork PoC |
| 005 | EIP-7702 委托 | 外部 `7702-goat` 语料库 |
## 使用其他工具
输出符合 `schema/findings.v1.schema.json` 的发现,然后运行:
```
python harness/score.py --findings tool-findings.json --json-out tool-scorecard.json
```
匹配和评分契约记录在 `SPEC.md` 中。
## 非目标声明
Litmus 不审计工具或合约,不证明不存在漏洞,也不提供具有统计学
代表性的排名。评分仅适用于选定的版本化案例和标签。
## 许可证
MIT。
标签:Foundry, Slither, 区块链安全, 智能合约审计, 逆向工具