Yudis-bit/DeFi-Exploit-PoCs
GitHub: Yudis-bit/DeFi-Exploit-PoCs
一个基于 Foundry 的 DeFi 漏洞确定性复现框架,通过以太坊主网分叉在真实链上环境中验证已披露的高危智能合约漏洞。
Stars: 0 | Forks: 0
# DeFi-Exploit-PoCs
针对高危 DeFi 漏洞的确定性概念验证(Proof-of-Concept)利用代码。
由 **Arkheionx** ([@Yudis-bit](https://github.com/Yudis-bit)) 维护。
## ☢️ 漏洞列表
| ID | 日期 | 协议 | 漏洞向量 | 严重程度 | PoC |
|----|------|----------|---------------------|----------|-----|
| 01 | 2022-10 | Illuminate / APWine | 通过 1 wei 捐赠进行 DoS | 🔴 高危 | [`test/2022-10-Illuminate.t.sol`](./test/2022-10-Illuminate.t.sol) |
| 02 | 2023-03 | Euler Finance | 逻辑错误 (捐赠) | 🔴 严重 | [`test/2023-03-EulerFinance.t.sol`](./test/2023-03-EulerFinance.t.sol) |
## 🛠️ 环境
```
Foundry (Forge)
Solidity ^0.8.x
Ethereum Mainnet Fork
```
### 依赖项
```
curl -L https://foundry.paradigm.xyz | bash
foundryup
```
## 执行
### 运行所有漏洞利用
```
forge test --fork-url $ETH_RPC_URL -vvvv
```
### 运行单个漏洞利用
```
forge test \
--fork-url $ETH_RPC_URL \
--match-path test/2022-10-Illuminate.t.sol \
-vvvv
```
将 `$ETH_RPC_URL` 替换为归档 RPC 端点(Alchemy、Infura 或本地节点)。分叉的区块号已固定在每个测试文件中。
## The Arkheionx 标准
本仓库中的每个 PoC 均遵循一套固定的方法论。绝无例外。
### 1. 隔离性
- 一个文件一个漏洞利用。测试之间零共享状态。
- 每个文件都是一个独立的复现环境:分叉区块、目标合约、攻击者设置以及漏洞利用序列。
### 2. 确定性验证
- 每个漏洞利用都以硬断言结束 —— 而非控制台输出,非事件,也非“看起来没问题”。
- 使用 `assertEq`、`assertGt`、`assertLt` 对具体的漏洞利用后状态进行检查。
- 测试通过 = 漏洞确认。测试失败 = 不变量假设被破坏。
### 3. 调用追踪透明度
- 所有测试均设计为支持 `-vvvv` 检查。
- 完整的调用追踪暴露了:calldata 篡改、状态转换、存储冲突以及内部 delegatecall 路径。
- 如果追踪记录不能让漏洞显而易见,则重写 PoC。
### 4. 主网分叉
- 每个漏洞利用均在测试文件头中记录的固定区块号处分叉主网。
- 无 mock。无模拟合约。真实的已部署字节码、真实的存储槽、真实的状态。
## 文件命名规范
```
test/YYYY-MM-ProtocolName.t.sol
```
| 组件 | 规则 |
|-----------|------|
| `YYYY-MM` | 披露或发现日期 |
| `ProtocolName` | PascalCase,协议规范名称 |
| `.t.sol` | Foundry 测试文件后缀 |
示例:
```
test/2022-10-Illuminate.t.sol
test/2023-03-EulerFinance.t.sol
test/2024-01-SomeProtocol.t.sol
```
## PoC 文件结构
每个 `.t.sol` 文件遵循以下布局:
```
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.x;
import "forge-std/Test.sol";
/*
* VULNERABILITY: [Short title]
* PROTOCOL: [Name]
* SEVERITY: [Critical | High | Medium]
* FORK BLOCK: [Block number]
* DESCRIPTION: [1-2 sentences. State transition exploited, invariant broken.]
*/
contract Exploit_YYYY_MM_ProtocolName is Test {
// --- Target Contracts ---
// --- Constants ---
function setUp() public {
vm.createSelectFork(vm.envString("ETH_RPC_URL"), FORK_BLOCK);
// Contract bindings, attacker setup, initial state
}
function test_exploit() public {
// Pre-exploit state snapshot
// Attack sequence
// Post-exploit assertions (deterministic)
}
}
```
## 严重程度分类
| 级别 | 定义 |
|-------|-----------|
| 🔴 严重 | 直接、无条件的资金损失或协议接管 |
| 🔴 高危 | 在特定但现实的条件下造成资金损失,或核心功能永久 DoS |
| 🟡 中危 | 有条件的资金风险、治理操纵或可逆 DoS |
## 免责声明
所有漏洞利用均针对已公开披露、已修补或属于 sanctioned 审计/漏洞赏金计划一部分的漏洞。本仓库仅用于防御性研究和审计员培训。针对未修补的在线合约复现这些漏洞利用是非法且不道德的。
## 联系方式
**Arkheionx** — [GitHub](https://github.com/Yudis-bit)
标签:APWine, CISA项目, DeFi 安全, Euler Finance, Forge 测试, Foundry, Illuminate, PoC, Solidity, Web3 安全, Web报告查看器, 主网分叉, 以太坊, 加密货币, 区块链安全, 拒绝服务攻击, 智能合约审计, 暴力破解, 漏洞复现, 逻辑漏洞