sandorpopan/Smart-Contract-Vulnerability-Scanner-for-Blockchain-Games-
GitHub: sandorpopan/Smart-Contract-Vulnerability-Scanner-for-Blockchain-Games-
基于 Slither 构建的区块链游戏 Solidity 合约漏洞扫描器,通过自定义规则集检测游戏场景特有的安全漏洞。
Stars: 0 | Forks: 0
# 区块链游戏智能合约漏洞扫描器
一个扫描器,它接收 Solidity 合约(用于 NFT 市场、代币质押或游戏物品拍卖系统)并检测常见漏洞,重点关注游戏特定的模式。
游戏智能合约漏洞扫描器
一个静态分析工具,用于检测基于区块链的游戏(如 NFT 物品市场、代币质押系统和游戏内资产拍卖)所使用的 Solidity 智能合约中的安全漏洞。
基于 [Slither](https://github.com/crytic/slither) (Trail of Bits) 构建,并配备针对游戏合约特定漏洞模式的自定义规则引擎。
## 为什么做这个项目
区块链游戏依赖智能合约来铸造物品、进行拍卖和发放奖励。通用扫描器可以捕获经典问题(重入、溢出),但会遗漏游戏经济特有的模式——例如可预测的战利品箱随机性或易被抢跑的物品拍卖。该工具通过针对这些情况的规则扩展了标准静态分析。
## 功能
- 封装 Slither 以进行基线静态分析(重入、访问控制、算术问题)
- 针对游戏特定漏洞的自定义规则集:
- 用于战利品箱/掉落的可预测链上随机性
- 物品拍卖中缺失的 commit-reveal(抢跑风险)
- 奖励领取/提取函数中的重入
- 无限制的铸造函数
- 在较旧的 Solidity 版本中容易出现溢出的价格/经验值 (XP) 计算
- 生成包含严重程度级别、代码位置和修复建议的 Markdown/HTML 报告
- 包含一组故意设为漏洞和“安全”的演示合约,用于测试和演示
## 项目结构
```
gaming-contract-scanner/
├── README.md
├── requirements.txt
├── .gitignore
├── src/
│ ├── scanner.py # Main entry point — orchestrates Slither + custom rules
│ ├── report_generator.py # Builds Markdown/HTML output from findings
│ └── rules/
│ ├── __init__.py
│ ├── randomness.py # Detects weak randomness sources (block.timestamp, blockhash)
│ ├── auction_frontrun.py # Detects auctions without commit-reveal
│ ├── reward_reentrancy.py # Detects reentrancy in claim/withdraw functions
│ └── mint_access.py # Detects unrestricted mint functions
├── contracts/
│ ├── vulnerable/ # Intentionally vulnerable demo contracts
│ │ ├── LootBox.sol
│ │ ├── ItemAuction.sol
│ │ └── RewardVault.sol
│ └── safe/ # Corrected/safe versions of the same contracts
│ ├── LootBox.sol
│ ├── ItemAuction.sol
│ └── RewardVault.sol
├── tests/
│ └── test_rules.py # Unit tests for each custom rule
├── reports/ # Generated scan reports land here (gitignored)
└── docs/
└── architecture.md # Design notes and rule methodology
```
## 安装说明
```
git clone https://github.com//gaming-contract-scanner.git
cd gaming-contract-scanner
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
```
Slither 还需要 `solc`(Solidity 编译器)。通过 `solc-select` 安装:
```
pip install solc-select
solc-select install 0.8.19
solc-select use 0.8.19
```
## 用法
```
python src/scanner.py --target contracts/vulnerable/LootBox.sol --output reports/lootbox_report.md
```
这将运行 Slither 的基线检查以及自定义游戏规则集,并将按严重程度排序的报告写入指定的输出路径。
## 示例发现
```
[HIGH] Predictable Randomness — LootBox.sol:42
Function `openLootBox()` derives randomness from `block.timestamp` and `block.difficulty`.
Miners/validators can influence or predict these values to bias loot outcomes.
Recommendation: use Chainlink VRF or a commit-reveal scheme for randomness.
```
## 路线图
- [ ] 为市场结算函数中未检查的外部调用添加规则
- [ ] 增加对扫描整个目录/多文件项目的支持
- [ ] Web 前端(Flask/Streamlit),用于上传合约并交互式查看结果
- [ ] 适配 CI 的 JSON 输出模式,以便集成到 GitHub Actions 中
## 免责声明
本工具仅供教育和防御性安全研究之用——用于审计您自己的合约或您获得授权测试的合约。`contracts/vulnerable/` 下的漏洞合约是故意设计的不安全演示代码,绝不能部署到主网或与真实资金一起使用。
标签:Solidity, Web3安全, 区块链游戏, 智能合约, 逆向工具, 错误基检测, 静态代码分析