bizzorotical-ank01/smart-contract-vulnerability-lab
GitHub: bizzorotical-ank01/smart-contract-vulnerability-lab
一个以太坊智能合约安全实验室,通过可运行的漏洞利用演示教学,帮助理解漏洞成因与防御。
Stars: 1 | Forks: 0
🛡️ 智能合约漏洞实验室
一个展示真实世界以太坊智能合约漏洞与利用的手工安全实验室。
## 概述
本仓库是一个动手实践的智能合约安全实验室,展示了基于以太坊应用程序的真实漏洞。
每个模块包括:
- 一个存在漏洞的合约
- 一个攻击者实现
- 一个可运行脚本来模拟利用
目标是提供对以下方面的实践洞察:
- 漏洞如何发生
- 如何被利用
- 如何预防
本项目当前涵盖:
- 重入攻击
- 访问控制漏洞
- tx.origin 认证缺陷
- 整数溢出 / 下溢
并会随着时间推移扩展更多安全场景。
## 漏洞对比
| 漏洞类型 | 根本原因 | 影响 |
|------------------|-----------------------------------|----------------------|
| 重入攻击 | 外部调用后状态更新 | 资金被耗尽 |
| 访问控制 | 缺少权限检查 | 未授权控制 |
| tx.origin | 不当认证 | 未授权访问 |
| 整数溢出 | 未检查的算术运算 | 状态损坏 |
## 攻击分解
### 1. 重入攻击
- 向合约存入 ETH
- 调用 `withdraw()`
- 在余额更新前重新进入
- 耗尽所有资金
### 2. 访问控制攻击
- 缺少适当的所有权验证
- 攻击者调用受限函数
- 获得未授权控制
### 3. tx.origin 攻击
- 合约使用 `tx.origin` 进行认证
- 攻击者诱使所有者调用恶意合约
- 恶意合约调用易受攻击合约
- 资金被窃取
### 4. 整数溢出攻击
- 使用 `unchecked` 算术
- 值超过最大限制
- 环绕(例如 255 → 0)
- 导致意外行为
## 执行
## 1. 重入攻击
位置:contracts/reentrancy/
### 运行重入攻击
npx hardhat run scripts/reentrancy/reentrancyAttack.js
### 结果

## 2. 访问控制漏洞
位置:contracts/access-control/
### 运行访问控制攻击
npx hardhat run scripts/access-control/accessControlAttack.js
### 结果

## 3. tx.origin 攻击
位置:contracts/tx-origin/
### 运行 tx.origin 攻击
npx hardhat run scripts/tx-origin/txOriginAttack.js
### 结果

## 4 溢出攻击
位置:contracts/overflow/
### 运行访问控制攻击
npx hardhat run scripts/tx-origin/txOriginAttack.js
### 结果

## 学习
- 智能合约对执行顺序和外部调用高度敏感
- 在外部调用后更新状态可能导致重入漏洞
- 不当认证(例如 `tx.origin`)可能暴露关键函数
- 算术漏洞可能损坏合约状态
- 攻击者利用逻辑缺陷,而不仅仅是代码错误
本项目强调编写安全且经过充分审计的智能合约的重要性。
## 预防技术
- 使用 Checks-Effects-Interactions 模式
- 始终使用 `msg.sender` 而非 `tx.origin`
- 实现适当的访问控制(`onlyOwner`、角色)
- 避免不必要的 `unchecked` 算术
- 使用 `call` 而非 `transfer` 以获得灵活性
- 进行彻底的测试和安全审计
## 项目结构
contracts/
├── reentrancy/
├── access-control/
├── tx-origin/
└── overflow/
scripts/
├── reentrancy/
├── access-control/
├── tx-origin/
└── overflow/
attack-images/
README.md
## 感谢
本项目由 @bizzorotical-ank01 为教育目的创建,作为智能合约安全学习旅程的一部分。
它模拟真实世界的 DeFi 漏洞,帮助开发者理解:
- 漏洞如何发生
- 攻击者如何利用它们
- 如何构建安全的智能合约
欢迎探索本仓库中的代码和文档。
如果有任何问题或建议,让我们连接起来,祝你好运,伙伴!
标签:DeFi 安全, Ethereum, Hardhat, Smart Contract Security, Solidity, Streamlit, tx.origin 漏洞, 以太坊安全, 区块链安全, 安全实验室, 实战演练, 攻击模拟, 整数溢出, 智能合约安全, 漏洞分析, 漏洞演示, 自定义脚本, 访问控制, 路径探测, 重入攻击, 预防方案, 驱动签名利用