giselleevita/solidity-vuln-scanner

GitHub: giselleevita/solidity-vuln-scanner

面向以太坊智能合约的专业级安全审计工具,融合静态分析、可选大模型审计与外部工具交叉验证,输出符合SWC等标准的审计报告。

Stars: 0 | Forks: 0

# Solidity Vuln Scanner **专业级 Ethereum 智能合约安全审计工具包。** 结合确定性静态分析、可选 LLM 审计以及外部工具交叉验证,生成**映射 SWC 的发现**、合规上下文(CWE/OWASP/DASP)以及**专业审计报告**(JSON/HTML/PDF)。 **用途:** - 部署前安全评估 - CI/CD 安全门禁(支持 SARIF) - 辅助手动审计并提供标准化发现 - 专业审计文档与修复指导 ## 🚀 快速开始 ### 最快运行方式(无 LLM,无外部工具) ``` # 1. 安装依赖 pip install -r requirements.txt # 2. 启动 API (终端 1) python fastapi_api.py # 3. 启动 UI (终端 2) streamlit run streamlit_ui.py # 4. 打开 http://localhost:8501 并粘贴合约! ``` **使用此包含漏洞的合约进行测试:** ``` pragma solidity ^0.8.0; contract VulnerableVault { mapping(address => uint256) balances; function withdraw(uint256 amount) public { require(balances[msg.sender] >= amount); (bool success, ) = msg.sender.call{value: amount}(""); require(success); balances[msg.sender] -= amount; } } ``` ### 完整运行(配合 Slither/Mythril) ``` # 使用 Docker (推荐) docker-compose up --build # 或者本地安装工具 pip install slither-analyzer mythril # 然后按上述方式运行 ``` 详细设置请参见 [docs/INSTALL.md](docs/INSTALL.md)。 ## ✨ 功能特性 - **Static Analysis**:基于模式的 18+ 种漏洞类型检测(重入、未检查调用、溢出/下溢、访问控制等) - **Professional Audit**:SWC/CWE/OWASP/DASP 分类及合规性摘要 - **LLM Audit**:可选的 AI 分析(支持 OpenAI GPT-4o 或 Claude) - **Risk Scoring**:严重性评级、置信度水平与代码指标 - **Cross-Validation**:与 Slither 和 Mythril 集成 - **REST API**:用于集成的 FastAPI 后端 - **Web UI**:Streamlit 界面,便于合约分析 - **Report Generation**:JSON、HTML、PDF、SARIF ## 📖 文档 - **[使用说明](HOW_TO_USE.md)** - 完整的分步使用指南 ⭐ **从这里开始** - **[安装指南](docs/INSTALL.md)** - 设置与前置条件 - **[Usage Guide](docs/USAGE.md)** - API 示例与工作流 - **[Docker Guide](docs/DOCKER.md)** - 容器化部署 - **[Architecture](docs/ARCHITECTURE.md)** - 系统设计与性能特征 - **[Security & Limitations](SECURITY.md)** - 负责任使用指南 - **[Professional Audit Guide](PROFESSIONAL_AUDIT_GUIDE.md)** - 专业审计工作流与报告 ## 🛠️ 安装 ### 前置条件 - Python 3.10+(**3.11/3.12 已测试**;部分依赖尚未正式支持 3.14) - Git - (可选)用于 AI 功能的 OpenAI API key 或 Claude API key - (可选)用于容器化部署的 Docker Desktop ### 快速安装 ``` # 克隆仓库 git clone https://github.com/yourusername/solidity-vuln-scanner.git cd solidity-vuln-scanner # 创建虚拟环境 python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # 安装依赖 pip install -r requirements.txt # 配置 (可选) cp .env.example .env # 编辑 .env 设置 USE_LLM=false 以使用免费模式,或添加 LLM_API_KEY 以启用 AI 功能 ``` 详细说明请参见 [docs/INSTALL.md](docs/INSTALL.md)。 ## 🎯 使用方法 ### Web UI 1. 启动应用(见上方“快速开始”) 2. 打开 http://localhost:8501 3. 粘贴 Solidity 合约代码 4. 点击“Analyze” 5. 查看漏洞、风险评分与建议 ### REST API ``` # 分析合约 (仅静态分析) curl -X POST "http://localhost:8001/analyze" \ -H "Content-Type: application/json" \ -d '{ "contract_code": "pragma solidity ^0.8.0; contract X { function f() public {} }", "contract_name": "X", "use_llm_audit": false }' # 分析并输出 SARIF (用于 CI/CD) curl -X POST "http://localhost:8001/analyze-sarif" \ -H "Content-Type: application/json" \ -d '{ "contract_code": "pragma solidity ^0.8.0; contract X { function f() public {} }", "contract_name": "X", "use_llm_audit": false }' # 使用外部工具交叉验证 curl -X POST "http://localhost:8001/cross-validate" \ -H "Content-Type: application/json" \ -d '{ "contract_code": "pragma solidity ^0.8.0; contract X { function f() public {} }", "contract_name": "X", "run_slither": true, "run_mythril": true }' # 批量分析 (多个合约) curl -X POST "http://localhost:8001/analyze-batch" \ -H "Content-Type: application/json" \ -d '[ {"contract_code": "...", "contract_name": "Contract1"}, {"contract_code": "...", "contract_name": "Contract2"} ]' ``` **API 文档:** 访问 `http://localhost:8001/docs` 查看交互式文档(Swagger UI) ### 专业审计端点 ``` curl -X POST "http://localhost:8001/professional-audit" \ -H "Content-Type: application/json" \ -d '{ "contract_code": "pragma solidity ^0.8.0; contract X { function f() public {} }", "contract_name": "X", "report_format": "pdf" }' --output audit_report.pdf ``` 更多示例与工作流请参见 [docs/USAGE.md](docs/USAGE.md)。 ## 🧪 测试 ``` # 运行所有测试 pytest -v # 运行覆盖率测试 pytest --cov=. --cov-report=term-missing # 运行特定测试套件 pytest tests/test_static_analyzer.py -v pytest tests/test_fastapi_cross_validate.py -v ``` ## 📊 性能基准 性能基准用于跟踪不同合约大小下的静态分析速度并检测性能回归。完整文档见 [benchmarks/README.md](benchmarks/README.md)。 **快速运行:** ``` pytest benchmarks/test_performance.py -v ``` **CI:** 基准在 main 分支合并时运行,结果作为 artifacts 上传。访问结果请参见 [docs/CI_ARTIFACTS.md](docs/CI_ARTIFACTS.md)。 ## 📊 能检测什么? 该扫描器使用基于模式的分析检测 **18+ 种漏洞类型**: | 漏洞 | 严重性 | 描述 | |---|---|---| | **Reentrancy** | Critical | 状态更新前进行外部调用 | | **Unchecked Call** | High | 低级调用未进行错误处理 | | **Overflow/Underflow** | High | 整数运算未使用 SafeMath | | **Access Control** | High | 缺少权限检查 | | **Bad Randomness** | Medium | 可预测的随机性来源 | | **tx.origin Misuse** | High | 通过 tx.origin 进行授权 | | **Delegatecall Risk** | High | 不安全的 delegatecall 模式 | | **Gas DoS** | Medium | 无界循环 | | **Timestamp Dependency** | Low | 不可靠的时间依赖 | | **Selfdestruct** | Medium | 合约自毁能力 | | **Missing Events** | Low | 状态变更未触发事件 | | **Front-Running** | Medium | 交易排序漏洞 | | **Logic Error** | Medium | 常见逻辑错误 | | **Centralization Risk** | Medium | 单点控制风险 | | **Missing Input Validation** | High | 函数参数未校验 | | **Uninitialized Storage** | Medium | 未初始化的存储指针 | | **Locked Ether** | Low | Ether 被锁定且无提取路径 | 详细检测方法与限制请参见 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)。 ## 🐳 Docker ``` # 启动所有服务 (API + UI + Tools) docker-compose up --build # 访问 # - UI: http://localhost:8501 # - API: http://localhost:8001 # - API Docs: http://localhost:8001/docs ``` 详细 Docker 指南与故障排查请参见 [docs/DOCKER.md](docs/DOCKER.md)。 ## ⚙️ 配置 编辑 `.env`: ``` # LLM 设置 (可选 - 可在免费模式下运行) USE_LLM=false # Set to true for AI features LLM_PROVIDER=openai # or "anthropic" LLM_API_KEY=sk-... # Your API key LLM_MODEL=gpt-4o-mini # Model name # API 设置 API_PORT=8001 API_HOST=0.0.0.0 DEBUG=False ``` ## 🚨 安全与免责声明 **本工具仅供教育与科研目的。** 它**不能替代**专业安全审计。 详细限制、负责任使用指南以及何时选择专业审计,请参见 [SECURITY.md](SECURITY.md)。 ## 📈 性能 | 指标 | 数值 | |---|---| | 平均分析时间(100 LoC) | ~1-2 秒 | | 最大合约大小 | 10,000 LoC | | 静态分析误报率 | ~15% | | LLM 误报率 | ~20% | | API 速率限制 | 60 请求/分钟(可配置) | 详细性能指标请参见 [benchmarks/README.md](benchmarks/README.md),可扩展性特征请参见 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)。 ## 🤝 贡献 欢迎贡献!指南请参见 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 📜 许可证 MIT License – 见 [LICENSE](LICENSE) 文件。 ## 🔗 资源 - [DASP TOP 10 Smart Contract Risks](https://dasp.org/) - [Solidity Security Guidelines](https://docs.soliditylang.org/en/v0.8.0/security-considerations.html) - [OpenZeppelin Security Best Practices](https://docs.openzeppelin.com/contracts/) - [Ethereum Smart Contract Security](https://consensys.io/research/smart-contract-best-practices/) **最后更新**:2026 年 1 月
标签:AI安全, AV绕过, Chat Copilot, Claude, CVE检测, CWE分类, DApp安全, DASP, DLL 劫持, Docker, FastAPI, GPT-4, Kubernetes, Mythril, Petitpotam, Python, SARIF, Slither, Solidity, Streamlit, SWC标准, Web3安全, 云安全监控, 以太坊, 区块链安全, 去中心化应用, 大语言模型, 安全专业人员, 安全合规, 安全防御评估, 密码学, 对称加密, 手动系统调用, 文档安全, 无后门, 智能合约安全, 网络代理, 网络测绘, 自动化审计, 访问控制, 误配置预防, 请求拦截, 逆向工具, 配置审计, 重入攻击检测, 静态分析