AshutoshVJTI/auditquant

GitHub: AshutoshVJTI/auditquant

一个混合智能合约审计系统,并行运行多个静态与符号分析工具并交叉验证结果,同时利用微调 CodeBERT 模型进行漏洞分类和 DeFi 业务风险评估。

Stars: 0 | Forks: 0

# AuditQuant AuditQuant 是我为 Sacramento State 硕士项目构建的一个混合智能合约审计系统。它并行运行四个静态/符号分析工具,对结果进行交叉验证,运行一个微调的 CodeBERT 模型进行漏洞分类,并计算一个感知 DeFi 的业务风险评分。 ## 功能介绍 - 通过 Docker 运行 **Slither**、**Slitherin**、**Semgrep** 和 **Mythril** - 将所有工具的输出标准化为统一的发现格式 - 根据漏洞类型 + 位置对发现进行交叉验证,并在多个工具达成一致时提升置信度 - 运行微调过的 **CodeBERT** 分类器,以捕获工具遗漏的漏洞类型 - 计算风险评分:R_SAST(静态)、R_DAST(动态/符号)、R_COMP(复杂度)、综合评分 - 按 DeFi 类别对合约进行分类,并计算业务风险标准 - 可选通过 OpenAI 生成执行摘要,并根据工具发现验证声明 ## 技术栈 - **后端:** Python 3.11+, FastAPI, Pydantic v2 - **工具:** Slither, Slitherin, Semgrep, Mythril (Docker Compose) - **ML 模型:** 微调的 CodeBERT(多标签漏洞分类器) - **前端:** React 19, TypeScript, Vite, Tailwind CSS ## 前置条件 - Python 3.11+ - Node.js 18+ - Docker Desktop(分析时必须处于运行状态) ## 设置 从仓库根目录开始: ### 1. Python 环境 ``` python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r backend/requirements.txt ``` ### 2. 环境变量 ``` cp .env.example .env # 编辑 .env 并添加你的 API keys ``` | 变量 | 是否必需 | 描述 | |----------|----------|-------------| | `OPENAI_API_KEY` | 否 | 如果设置,将启用 LLM 执行摘要 + 声明验证 | | `OPENAI_MODEL` | 否 | 默认:`gpt-4o-mini` | | `OPENAI_BASE_URL` | 否 | 自定义 OpenAI 兼容端点 | | `CODEBERT_CHECKPOINT_PATH` | 否 | 微调检查点路径。默认:`evaluation/llm_training/checkpoints/checkpoint_best.pt` | | `DOCKER_COMPOSE_PATH` | 否 | 默认:`docker/docker-compose.yml` | | `ANALYSIS_STORAGE_PATH` | 否 | 默认:`backend/.analysis` | ### 3. 构建 Docker 镜像 ``` docker compose -f docker/docker-compose.yml build slither slitherin semgrep mythril ``` ### 4. 启动后端 ``` uvicorn app.main:app --reload --app-dir backend ``` API:`http://localhost:8000` — Swagger 文档:`http://localhost:8000/docs` ### 5. 启动前端 ``` cd frontend npm install npm run dev ``` 前端:`http://localhost:5173` ### 6. 运行分析 从仪表板上传 `.sol` 文件。前端将轮询 `/api/analysis/{id}` 直到分析完成。 ## API | 方法 | 路径 | 描述 | |--------|------|-------------| | `GET` | `/api/health` | 健康检查 | | `POST` | `/api/analyze` | 上传 `.sol` 文件,返回 `analysis_id` | | `GET` | `/api/analysis/{id}` | 获取结果(等待中返回 `202`) | | `GET` | `/api/analysis/{id}/business-risk` | 业务风险报告 | 分析响应包含 `scores`、`findings`、`tool_results`、`model_prediction`、`business_risk`,以及可选的 `summary` + `verification`。 ## 示例合约 `contracts/` 目录下提供了一些测试合约:`VulnerableBank.sol`、`VulnerableVault.sol`、`UncheckedCall.sol`、`SimpleStorage.sol`。 ## 评估 重新运行 5 系统对比(AuditQuant 工具,AuditQuant+CodeBERT,GPT-4o,Claude,Gemini): ``` python evaluation/scripts/run_test_split_comparison.py ``` 重新生成对比图表: ``` python evaluation/scripts/generate_comparison_graphs.py ``` 从 SmartBugs 重建训练数据集: ``` python evaluation/scripts/prepare_dataset_v2.py ``` 结果写入 `evaluation/results/`,图表写入 `evaluation/graphs/`。 ## 模型检查点 微调的 CodeBERT 检查点(约 476 MB)不包含在此仓库中。请从 Google Drive 下载并将其放置在 `evaluation/llm_training/checkpoints/checkpoint_best.pt` 路径下: **[下载 checkpoint_best.pt](https://drive.google.com/file/d/1Oh9_lOm8JwzZ66kRSwjoU4DZxWvVNMlO/view?usp=sharing)** 或者在 `.env` 中设置 `CODEBERT_CHECKPOINT_PATH` 指向您保存它的任何位置。 ## 故障排除 - **分析卡住:** 确保 Docker Desktop 正在运行且镜像已构建 - **工具失败:** 检查 `DOCKER_COMPOSE_PATH` 是否正确 - **无 CodeBERT 预测:** 缺少检查点文件 —— 检查 `CODEBERT_CHECKPOINT_PATH` - **无 LLM 摘要:** 未设置 `OPENAI_API_KEY` 时属于预期情况 - **重启后结果消失:** 分析状态保存在内存中,未持久化到磁盘
标签:Apex, AV绕过, CISA项目, CodeBERT, DeFi风险评估, Docker, FastAPI, LLM, Mythril, OpenAI, Python, React, Semgrep, Slither, Solidity, Syscalls, TypeScript, Unmanaged PE, Vite, Web3安全, WordPress安全扫描, 云安全监控, 代码安全, 内存规避, 区块链安全, 安全插件, 安全防御评估, 对称加密, 微调模型, 无后门, 智能合约审计, 机器学习, 毕业设计, 漏洞枚举, 符号执行, 自动化审计, 请求拦截, 跨验证, 逆向工具, 静态分析, 风险评分