ZN9812/evm-incident-regression-lab
GitHub: ZN9812/evm-incident-regression-lab
将公开记录的 EVM 智能合约安全事故转化为可执行的本地回归测试、历史 fork 重现、修补参考实现及可复用的安全不变量。
Stars: 0 | Forks: 0
# EVM 事故回归实验室
[](https://github.com/ZN9812/evm-incident-regression-lab/actions/workflows/ci.yml)
[](https://github.com/ZN9812/evm-incident-regression-lab/releases)
[](LICENSE)
EVM 事故回归实验室将公开记录的智能合约事故转化为安全的本地重现、历史的只读 fork 测试、经过修补的参考实现以及可重用的安全不变量(invariants)。
本项目专为智能合约审计员、协议维护者、安全学生以及事故响应人员构建,适合那些希望获得可执行证据而不仅仅是事故总结的用户。
## 为什么创建此项目
事故报告通常会解释发生了什么,但不会给维护者留下一个他们可以运行的回归测试。本仓库通过将公开证据转化为四个产出物来填补这一空白:
1. 漏洞类别的最小本地模型;
2. 固定到过去区块的可选历史 fork 测试;
3. 经过修补的参考实现;
4. 可以在审查期间重用的防御性不变量。
## 包含的案例
### TrustedVolumes RFQ 授权边界
第一个案例对公开报告的 TrustedVolumes 定制 RFQ 代理在 2026-05-07 的授权边界失效进行了建模。
- [案例研究](docs/cases/trustedvolumes-rfq.md)
- [研究方法论](docs/methodology.md)
- [漏洞重现](src/cases/trustedvolumes/ReconstructedTrustedVolumesRfq.sol)
- [修补参考](src/cases/trustedvolumes/PatchedTrustedVolumesRfq.sol)
- [本地回归测试](test/cases/trustedvolumes/TrustedVolumesLocalModel.t.sol)
- [历史 fork 测试](test/cases/trustedvolumes/TrustedVolumesHistoricalFork.t.sol)
## 快速开始
前置条件:[Foundry](https://book.getfoundry.sh/getting-started/installation) 和 Solidity `0.8.26`。
```
git clone https://github.com/ZN9812/evm-incident-regression-lab.git
cd evm-incident-regression-lab
forge test -vv
```
默认的测试命令仅运行本地模型。除非链 ID 和区块号与记录的历史 fork 匹配,否则历史测试会立即返回。
要运行历史重现,请使用能够提供区块 `25039669` 服务的 Ethereum 归档 RPC:
```
ETH_RPC_URL="https://your-archive-rpc.example" \
forge test \
--match-path test/cases/trustedvolumes/TrustedVolumesHistoricalFork.t.sol \
--fork-url "$ETH_RPC_URL" \
--fork-block-number 25039669 \
-vv
```
## 安全边界
这是一个防御性研究仓库。
- 不要广播交易或针对线上合约。
- 历史测试使用固定到过去区块的本地、只读 fork。
- 演示密钥和地址无法访问真实资金。
- 该仓库不包含任何部署或广播脚本。
- 通过受影响项目的安全流程报告新发现的线上漏洞,而不是通过这里的公开 issue。
## 路线图
有关计划的案例系列和维护者工作,请参阅 [ROADMAP.md](ROADMAP.md)。
## 免责声明
本仓库是独立的防御性研究,与受影响的协议无关。其提供用于教育、测试和预防,不提供任何保证。
## 许可证
MIT License。详见 [LICENSE](LICENSE)。
标签:Foundry, Solidity, 区块链安全, 回归测试, 智能合约, 漏洞复现