hunterinvariants/litmus

GitHub: hunterinvariants/litmus

Litmus 是一个智能合约安全工具的可复现基准测试框架,通过版本化 ground truth 和可执行 PoC 精确测量漏洞检测器的精确率、召回率和误报率。

Stars: 0 | Forks: 0

# Litmus [![基准完整性](https://static.pigsec.cn/wp-content/uploads/repos/cas/71/7196af747e8f75d9f0f5c37ca40db91ae24c53b65b2cde04479398349b89102a.svg)](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, 区块链安全, 智能合约审计, 逆向工具