zerachsec/protocol-breaker
GitHub: zerachsec/protocol-breaker
基于 Foundry 框架的智能合约业务逻辑漏洞实战教程,通过 CTF 挑战和真实 DeFi 攻击模拟帮助安全研究人员掌握经济不变量破坏类漏洞的原理与利用方式。
Stars: 0 | Forks: 0
# 🔐 智能合约中的业务逻辑漏洞
### CTF 挑战 + 现实世界利用示例 (Foundry)
本仓库演示了**业务逻辑漏洞**,这是智能合约利用中最危险且最难检测的一类漏洞。
与**重入攻击、溢出或访问控制错误**等传统漏洞不同,业务逻辑漏洞发生在**协议的经济规则或状态转换允许非预期行为**时。
在这些情况下:
# 📚 你将学到什么
本仓库包含**两个实战示例**:
### 🧩 示例 1 --- CTF 风格的金库利用
一个复杂的奖励金库,攻击者通过利用奖励分配逻辑中的缺陷来操纵奖励核算。
攻击者可以通过操纵合约余额来人为地增加奖励。
核心概念: - 错误的奖励指数计算 - 基于 `address(this).balance` 的奖励分配 - 通过直接 ETH 转账进行操纵
这被设计为**面向安全研究人员的 CTF 风格挑战**。
### 💣 示例 2 --- 现实世界 DeFi 逻辑利用
一个简化的借贷协议,允许借款人:
1. 存入抵押品
2. 借出资产
3. 提取抵押品
因为协议**在借款后没有重新检查抵押率**,攻击者可以使系统处于抵押不足状态并耗尽流动性。
这种模式出现在多个真实的 DeFi 利用事件中。
核心概念: - 破坏的抵押不变量 - 缺少健康因子验证 - 借款 → 提取攻击序列
# 📂 仓库结构
```
business-logic-vulnerabilities
├─ src
│ ├─ CTFVault.sol
│ ├─ RewardVault.sol
│
├─ test
│ ├─ CTFVault.t.sol
│ ├─ RewardVault.t.sol
│
└─ README.md
```
# ⚙️ 设置 (Foundry)
安装 Foundry:
```
curl -L https://foundry.paradigm.xyz | bash
foundryup
```
克隆仓库并运行测试:
```
forge test -vv
```
# 🧪 运行利用测试
测试套件演示了攻击者如何利用这些漏洞。
运行:
```
forge test -vv
```
你应该看到利用测试成功,证明攻击者从有缺陷的协议逻辑中获利。
# 🧠 关键安全教训
构建 DeFi 协议的开发者必须仔细设计**经济不变量**。
示例包括:
```
TotalAssets >= TotalLiabilities
Debt <= CollateralValue
RewardsDistributed <= RewardsGenerated
```
违反这些不变量可能允许攻击者从协议中抽取资金。
# 🛡 推荐的安全实践
### 定义协议不变量
明确定义必须始终保持为真的条件。
示例:
```
debt <= collateral * collateralFactor
```
### 使用不变量测试
诸如以下工具:
- Foundry 不变量测试
- Echidna
- Medusa
可以自动测试对抗场景并检测逻辑缺陷。
### 带限制部署
新的策略和协议功能应在安全控制下部署:
- 存款上限
- 借款限额
- 治理时间锁
如果存在漏洞,这可以限制损失。
# 🎯 安全研究人员挑战
尝试:
• 编写你自己的 Foundry 利用测试\
• 破坏协议不变量\
• 发现替代攻击路径
你能在不直接发送 ETH 的情况下耗尽金库吗?
# 🔎 为什么业务逻辑漏洞很重要
许多**最大的 DeFi 利用事件**是由业务逻辑缺陷引起的,而不是技术编码错误。
理解这些漏洞对于以下人员至关重要:
- 智能合约开发者
- 安全审计员
- DeFi 协议设计者
掌握这一领域将显著提升你的**智能合约安全专业技能**。
# 📢 教育用途
本仓库仅用于**安全研究和教育目的**。请勿在生产环境中部署有漏洞的合约。
标签:CISA项目, CTF挑战, DeFi安全, Foundry测试, Solidity, Web3安全, 业务逻辑漏洞, 以太坊开发, 借贷协议漏洞, 区块链安全, 奖励机制操纵, 安全测试用例, 智能合约安全, 漏洞利用模拟, 经济模型漏洞