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安全, 区块链游戏, 智能合约, 逆向工具, 错误基检测, 静态代码分析