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 ### 结果 ![重入攻击结果](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/beaaefd538121315.png) ## 2. 访问控制漏洞 位置:contracts/access-control/ ### 运行访问控制攻击 npx hardhat run scripts/access-control/accessControlAttack.js ### 结果 ![访问控制攻击结果](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/1d4f56dfae121316.png) ## 3. tx.origin 攻击 位置:contracts/tx-origin/ ### 运行 tx.origin 攻击 npx hardhat run scripts/tx-origin/txOriginAttack.js ### 结果 ![tx.origin 攻击结果](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/4ccc4e0457121317.png) ## 4 溢出攻击 位置:contracts/overflow/ ### 运行访问控制攻击 npx hardhat run scripts/tx-origin/txOriginAttack.js ### 结果 ![溢出攻击结果](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/f14e0f9f41121319.png) ## 学习 - 智能合约对执行顺序和外部调用高度敏感 - 在外部调用后更新状态可能导致重入漏洞 - 不当认证(例如 `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 漏洞, 以太坊安全, 区块链安全, 安全实验室, 实战演练, 攻击模拟, 整数溢出, 智能合约安全, 漏洞分析, 漏洞演示, 自定义脚本, 访问控制, 路径探测, 重入攻击, 预防方案, 驱动签名利用