vyszraelhanna/smart-contract-audit-ethernaut
GitHub: vyszraelhanna/smart-contract-audit-ethernaut
使用 Foundry 框架解答 Ethernaut 关卡并记录漏洞分析与修复建议的智能合约安全学习项目。
Stars: 0 | Forks: 0
# Ethernaut 漏洞利用与安全报告
使用 Foundry PoC 解答 Ethernaut 关卡 (OpenZeppelin) 的个人项目。重点关注理解漏洞、在本地/分叉环境中复现利用以及记录风险与建议的缓解措施。
## 已解决关卡
- [Fallback](docs/fallback/README.md) -> 通过宽松的 receive() 接管所有权;
- [Fallout](docs/fallout/README.md) -> 假构造函数 ('Fal1out') 允许任何人成为 owner。
- [Coin Flip](docs/coinFlip/README.md) -> 合约依赖 blockhash 生成伪随机数。
- [Telephone](docs/telephone/README.md) -> 合约仅依赖 `tx.origin != msg.sender` 检查进行访问验证。
## 通用漏洞与风险报告
以下是已解决关卡中发现的主要漏洞摘要:
| 关卡 | 主要漏洞 | 严重程度 | 主要影响 | 建议缓解措施
| ----- | ----- | ----- | ----- | ----------------- |
|Fallback | 宽松的 receive() | High | 花费 1 wei 接管所有权并完全耗尽资金 | 移除或保护 receive()。 |
|Fallout | "Fal1out" 函数 ( 拼写错误 ) | High | 任何人都可以成为 owner 并耗尽资金 | 使用 `constructor()` 代替普通函数。
|Coin Flip | 使用 Blockhash 生成伪随机数 | High | `blockhash` 是区块链上**任何人**都可以访问的公共值,使得结果完全可预测。 | 始终依赖链下 Oracle 或链上 VRF 解决方案来生成不可预测且防篡改的随机数。
|Telephone| 通过中间合约调用接管所有权。 | Hight | 合约有一个名为 `changeOwner()` 的函数,只要调用来自中间合约,就允许将所有权转移给任何人 | 切勿依赖 `tx.origin` 进行访问控制,因为任何中间合约都可以绕过它。
有关完整详情(PoC、利用步骤、链上信息),请点击上方链接。
## 如何运行测试
```
# 示例用于 fallback level (根据需要调整路径)
forge test --match-path "test/fallback/*" -vvvv
```
## 工具与环境
- Foundry
- Sepolia 测试网
欢迎贡献、建议或提问!
标签:CISA项目, DeFi安全, Ethernaut, Foundry, OpenZeppelin, PoC, Solidity, tx.origin漏洞, Web3安全, Writeup, 以太坊, 区块链安全, 协议分析, 提示词注入, 智能合约安全, 暴力破解, 权限提升, 漏洞分析, 漏洞复现, 路径探测, 防御缓解措施, 随机数预测