feat: Release v3.0.0 with multi-agent architecture, RAG, and Docker sandbox vulnerability verification, alongside cleanup of old scripts and build artifacts.
This commit is contained in:
parent
fc3dce7510
commit
39a57b9c58
|
|
@ -6,7 +6,7 @@ on:
|
|||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
description: '版本号 (例如: v2.0.0)'
|
||||
description: '版本号 (例如: v3.0.0)'
|
||||
required: true
|
||||
type: string
|
||||
prerelease:
|
||||
|
|
@ -112,7 +112,7 @@ jobs:
|
|||
--exclude=backend/uploads \
|
||||
backend/
|
||||
|
||||
# 打包 Docker 配置文件
|
||||
# 打包 Docker 配置文件(包含 Agent 模式配置)
|
||||
tar -czf release/deepaudit-docker-${{ steps.version.outputs.VERSION }}.tar.gz \
|
||||
docker-compose.yml \
|
||||
backend/Dockerfile \
|
||||
|
|
@ -121,7 +121,8 @@ jobs:
|
|||
frontend/.dockerignore \
|
||||
frontend/docker-entrypoint.sh \
|
||||
backend/env.example \
|
||||
frontend/.env.example
|
||||
frontend/.env.example \
|
||||
docker/sandbox/
|
||||
|
||||
# 打包完整源码(包括配置文件)
|
||||
tar -czf release/deepaudit-source-${{ steps.version.outputs.VERSION }}.tar.gz \
|
||||
|
|
@ -157,12 +158,19 @@ jobs:
|
|||
|
||||
echo "" >> CHANGELOG.md
|
||||
echo "" >> CHANGELOG.md
|
||||
echo "## 🚀 v3.0.0 新特性" >> CHANGELOG.md
|
||||
echo "" >> CHANGELOG.md
|
||||
echo "- 🤖 **Multi-Agent 架构**: Orchestrator/Analysis/Recon/Verification 多智能体协作" >> CHANGELOG.md
|
||||
echo "- 🧠 **RAG 知识库增强**: 代码语义理解 + CWE/CVE 漏洞知识库" >> CHANGELOG.md
|
||||
echo "- 🔒 **沙箱漏洞验证**: Docker 安全容器自动执行 PoC" >> CHANGELOG.md
|
||||
echo "- 🛠️ **专业安全工具集成**: Semgrep, Bandit, Gitleaks, OSV-Scanner" >> CHANGELOG.md
|
||||
echo "" >> CHANGELOG.md
|
||||
echo "## 📦 下载说明" >> CHANGELOG.md
|
||||
echo "" >> CHANGELOG.md
|
||||
echo "### 构建产物" >> CHANGELOG.md
|
||||
echo "- \`deepaudit-frontend-*.tar.gz\`: 前端构建产物(用于生产部署)" >> CHANGELOG.md
|
||||
echo "- \`deepaudit-backend-*.tar.gz\`: 后端源码包" >> CHANGELOG.md
|
||||
echo "- \`deepaudit-docker-*.tar.gz\`: Docker 配置文件" >> CHANGELOG.md
|
||||
echo "- \`deepaudit-docker-*.tar.gz\`: Docker 配置文件(包含沙箱配置)" >> CHANGELOG.md
|
||||
echo "- \`deepaudit-source-*.tar.gz\`: 完整源码包" >> CHANGELOG.md
|
||||
echo "- \`checksums.txt\`: 文件校验和" >> CHANGELOG.md
|
||||
echo "" >> CHANGELOG.md
|
||||
|
|
@ -172,8 +180,11 @@ jobs:
|
|||
echo "" >> CHANGELOG.md
|
||||
echo "### 快速部署" >> CHANGELOG.md
|
||||
echo "\`\`\`bash" >> CHANGELOG.md
|
||||
echo "# 使用 Docker Compose 部署" >> CHANGELOG.md
|
||||
echo "docker-compose up -d" >> CHANGELOG.md
|
||||
echo "# 基础部署" >> CHANGELOG.md
|
||||
echo "docker compose up -d" >> CHANGELOG.md
|
||||
echo "" >> CHANGELOG.md
|
||||
echo "# Agent 模式部署(包含 Milvus 向量数据库)" >> CHANGELOG.md
|
||||
echo "docker compose --profile agent up -d" >> CHANGELOG.md
|
||||
echo "\`\`\`" >> CHANGELOG.md
|
||||
|
||||
# 12. 创建 GitHub Release
|
||||
|
|
@ -235,7 +246,21 @@ jobs:
|
|||
cache-from: type=gha,scope=backend
|
||||
cache-to: type=gha,mode=max,scope=backend
|
||||
|
||||
# 18. 更新 README 中的版本号
|
||||
# 18. 构建并推送沙箱 Docker 镜像
|
||||
- name: 构建并推送沙箱 Docker 镜像
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: ./docker/sandbox
|
||||
file: ./docker/sandbox/Dockerfile
|
||||
push: true
|
||||
platforms: linux/amd64,linux/arm64
|
||||
tags: |
|
||||
ghcr.io/${{ github.repository_owner }}/deepaudit-sandbox:${{ steps.version.outputs.VERSION }}
|
||||
ghcr.io/${{ github.repository_owner }}/deepaudit-sandbox:latest
|
||||
cache-from: type=gha,scope=sandbox
|
||||
cache-to: type=gha,mode=max,scope=sandbox
|
||||
|
||||
# 19. 更新 README 中的版本号
|
||||
- name: 更新 README 版本号
|
||||
if: github.event_name == 'push'
|
||||
run: |
|
||||
|
|
|
|||
|
|
@ -168,3 +168,25 @@ Thumbs.db
|
|||
*.crt
|
||||
secrets/
|
||||
.secrets/
|
||||
|
||||
# Agent checkpoints and data
|
||||
agent_checkpoints/
|
||||
data/
|
||||
*.checkpoint
|
||||
|
||||
# Scan result files (temporary)
|
||||
bandit_results.json
|
||||
semgrep_results.json
|
||||
gitleaks_results.json
|
||||
trufflehog_results.json
|
||||
|
||||
# Test files
|
||||
ttt/
|
||||
examples/
|
||||
|
||||
# Milvus data
|
||||
milvus_data/
|
||||
|
||||
# ChromaDB data
|
||||
chroma/
|
||||
|
||||
|
|
|
|||
121
README.md
121
README.md
|
|
@ -1,6 +1,4 @@
|
|||
# DeepAudit - 您的智能代码审计专家 🦸♂️
|
||||
|
||||
> 多Agent、PR批量自动审计版本正在开发中,敬请期待......
|
||||
# DeepAudit - AI 驱动的智能代码安全审计平台 🛡️
|
||||
|
||||
<div style="width: 100%; max-width: 600px; margin: 0 auto;">
|
||||
<img src="frontend/public/images/logo.png" alt="DeepAudit Logo" style="width: 100%; height: auto; display: block; margin: 0 auto;">
|
||||
|
|
@ -8,7 +6,7 @@
|
|||
|
||||
<div align="center">
|
||||
|
||||
[](https://github.com/lintsinghua/DeepAudit/releases)
|
||||
[](https://github.com/lintsinghua/DeepAudit/releases)
|
||||
[](https://opensource.org/licenses/MIT)
|
||||
[](https://reactjs.org/)
|
||||
[](https://www.typescriptlang.org/)
|
||||
|
|
@ -21,33 +19,44 @@
|
|||
|
||||
</div>
|
||||
|
||||
## 🚀 v3.0.0 新特性
|
||||
|
||||
**DeepAudit v3.0.0** 带来了革命性的 **Multi-Agent 智能审计系统**:
|
||||
|
||||
- 🤖 **Multi-Agent 架构** — Orchestrator 编排决策,Analysis/Recon/Verification 多智能体协作
|
||||
- 🧠 **RAG 知识库增强** — 代码语义理解 + CWE/CVE 漏洞知识库,精准识别安全风险
|
||||
- 🔒 **沙箱漏洞验证** — Docker 安全容器自动执行 PoC,验证漏洞真实有效性
|
||||
- 🛠️ **专业安全工具集成** — Semgrep、Bandit、Gitleaks、TruffleHog、OSV-Scanner
|
||||
|
||||
---
|
||||
|
||||
## 💡 这是什么?
|
||||
|
||||
**你是否也有这样的困扰?**
|
||||
|
||||
- 😫 人工审计的无力:哪怕我不吃不睡,也追不上代码迭代的速度
|
||||
- 🤯 传统工具的噪音:每天都在清理误报,感觉自己像个垃圾分类员
|
||||
- 😰 代码隐私的风险:想用 AI 却不敢“裸奔”,生怕源码泄露给云端
|
||||
- 😰 代码隐私的风险:想用 AI 却不敢"裸奔",生怕源码泄露给云端
|
||||
- 🥺 外包项目的隐患:不知道里面藏了多少雷,却不得不签字验收
|
||||
|
||||
**DeepAudit 来拯救你!** 🦸♂️
|
||||
|
||||
- 全自动智能审计:AI 不知疲倦地自动审计,让审计速度跑赢开发节奏
|
||||
- 上下文精准理解:告别死板的正则匹配,用大模型读懂代码业务逻辑,大大降低误报率
|
||||
- 支持本地私有部署:支持本地模型运行,代码数据可以不出内网,彻底根除“裸奔”焦虑
|
||||
- 深层隐患排查:一键扫描第三方外包项目、交付项目,快速揪出隐藏后门与逻辑炸弹,让签字验收有底气
|
||||
- 全自动智能审计:AI 驱动的 Multi-Agent 系统自主编排审计策略
|
||||
- 上下文精准理解:RAG 增强的代码语义理解,大大降低误报率
|
||||
- 沙箱验证漏洞:自动生成 PoC 并在隔离环境验证,确保漏洞真实有效
|
||||
- 支持本地私有部署:支持 Ollama 本地模型,代码数据可以不出内网
|
||||
|
||||
## 🎬 眼见为实,但不仅如此:
|
||||
## 🎬 眼见为实:
|
||||
|
||||
| 智能仪表盘 | 即时分析 |
|
||||
|:---:|:---:|
|
||||
|  |  |
|
||||
| *一眼掌握项目安全态势* | *粘贴代码/上传文件,秒出结果* |
|
||||
|
||||
| 项目管理 | 审计报告 |
|
||||
| Agent 审计 | 审计报告 |
|
||||
|:---:|:---:|
|
||||
| <img src="frontend/public/images/example3.png" alt="项目管理" width="400"> | <img src="frontend/public/images/审计报告示例.png" alt="审计报告" width="400"> |
|
||||
| *GitHub/GitLab 无缝集成* | *专业报告,一键导出* |
|
||||
| <img src="frontend/public/images/example3.png" alt="Agent审计" width="400"> | <img src="frontend/public/images/审计报告示例.png" alt="审计报告" width="400"> |
|
||||
| *Multi-Agent 深度安全分析* | *专业报告,一键导出* |
|
||||
|
||||
| 审计规则管理 | 提示词模板管理 |
|
||||
|:---:|:---:|
|
||||
|
|
@ -60,34 +69,47 @@
|
|||
<tr>
|
||||
<td width="50%">
|
||||
|
||||
### 🧠 真正理解你的代码
|
||||
不是简单的关键词匹配,而是深度理解代码逻辑和业务意图,像人类专家一样思考。
|
||||
### 🤖 Multi-Agent 智能协作
|
||||
- **Orchestrator Agent**: 统筹编排,自主决策审计策略
|
||||
- **Recon Agent**: 信息收集,识别技术栈和入口点
|
||||
- **Analysis Agent**: 深度分析,挖掘潜在安全漏洞
|
||||
- **Verification Agent**: 沙箱验证,确认漏洞真实有效
|
||||
|
||||
### 🧠 RAG 知识库增强
|
||||
- 代码语义理解,不只是关键词匹配
|
||||
- CWE/CVE 漏洞知识库集成
|
||||
- 精准漏洞识别,大幅降低误报
|
||||
|
||||
### 🎯 What-Why-How 三步修复
|
||||
- **What**: 精准定位问题所在
|
||||
- **Why**: 解释为什么这是个问题
|
||||
- **How**: 给出可直接使用的修复建议
|
||||
|
||||
### 🔌 10+ LLM 平台任你选
|
||||
OpenAI、Claude、Gemini、通义千问、DeepSeek、智谱AI... 想用哪个用哪个,还支持 Ollama 本地部署!
|
||||
|
||||
</td>
|
||||
<td width="50%">
|
||||
|
||||
### ⚡ 5 分钟快速上手
|
||||
Docker 一键部署,浏览器配置 API Key,无需复杂环境搭建。
|
||||
### 🔒 沙箱安全验证
|
||||
- Docker 隔离容器执行 PoC
|
||||
- 资源限制 + 网络隔离 + seccomp 策略
|
||||
- 自动验证漏洞可利用性
|
||||
|
||||
### 🔒 代码隐私有保障
|
||||
支持 Ollama 本地模型,敏感代码不出内网,安全合规无忧。
|
||||
### 🛠️ 专业安全工具集成
|
||||
- **Semgrep**: 多语言静态分析
|
||||
- **Bandit**: Python 安全扫描
|
||||
- **Gitleaks/TruffleHog**: 密钥泄露检测
|
||||
- **OSV-Scanner**: 依赖漏洞扫描
|
||||
|
||||
### 📊 专业报告一键导出
|
||||
JSON、PDF 格式随心选,审计报告直接交付,省去整理时间。
|
||||
### 🔌 10+ LLM 平台任你选
|
||||
OpenAI、Claude、Gemini、通义千问、DeepSeek、智谱AI...
|
||||
还支持 Ollama 本地私有化部署!
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## 🚀 3 步开始你的智能审计之旅
|
||||
## 🚀 快速开始
|
||||
|
||||
### Docker Compose 一键部署(推荐)
|
||||
|
||||
```bash
|
||||
# 1️⃣ 克隆项目
|
||||
|
|
@ -98,14 +120,26 @@ cp backend/env.example backend/.env
|
|||
# 编辑 backend/.env,填入你的 API Key
|
||||
|
||||
# 3️⃣ 一键启动!
|
||||
docker-compose up -d
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
🎉 **搞定!** 打开 http://localhost:3000 开始体验吧!
|
||||
|
||||
### Agent 审计模式部署(可选)
|
||||
|
||||
如需使用 Multi-Agent 深度审计功能:
|
||||
|
||||
```bash
|
||||
# 启动包含 Milvus 向量数据库的完整服务
|
||||
docker compose --profile agent up -d
|
||||
|
||||
# 构建安全沙箱镜像(用于漏洞验证)
|
||||
cd docker/sandbox && ./build.sh
|
||||
```
|
||||
|
||||
### 演示账户
|
||||
|
||||
系统内置演示账户,包含示例项目和审计数据,可直接体验完整功能:
|
||||
系统内置演示账户,包含示例项目和审计数据:
|
||||
|
||||
- 📧 邮箱:`demo@example.com`
|
||||
- 🔑 密码:`demo123`
|
||||
|
|
@ -118,12 +152,15 @@ docker-compose up -d
|
|||
|
||||
| 功能 | 说明 |
|
||||
|------|------|
|
||||
| 🤖 **Agent 审计** | Multi-Agent 架构,Orchestrator 自主编排决策,深度漏洞挖掘 |
|
||||
| 🧠 **RAG 增强** | 代码语义理解,CWE/CVE 知识库检索,精准漏洞识别 |
|
||||
| 🔒 **沙箱验证** | Docker 安全容器执行 PoC,自动验证漏洞有效性 |
|
||||
| 🗂️ **项目管理** | GitHub/GitLab 一键导入,ZIP 上传,支持 10+ 编程语言 |
|
||||
| ⚡ **即时分析** | 代码片段秒级分析,粘贴即用,无需创建项目 |
|
||||
| 🔍 **智能审计** | Bug、安全、性能、风格、可维护性五维检测 |
|
||||
| 💡 **可解释分析** | What-Why-How 模式,精准定位 + 修复建议 |
|
||||
| 📋 **审计规则** | 内置 OWASP Top 10、代码质量、性能优化规则集,支持自定义 |
|
||||
| 📝 **提示词模板** | 可视化管理审计提示词,支持中英文双语,在线测试 |
|
||||
| 📋 **审计规则** | 内置 OWASP Top 10、代码质量、性能优化规则集 |
|
||||
| 📝 **提示词模板** | 可视化管理审计提示词,支持中英文双语 |
|
||||
| 📊 **可视化报告** | 质量仪表盘、趋势分析、PDF/JSON 一键导出 |
|
||||
| ⚙️ **灵活配置** | 浏览器运行时配置 LLM,无需重启服务 |
|
||||
|
||||
|
|
@ -141,15 +178,22 @@ docker-compose up -d
|
|||
|
||||
## 🎯 未来蓝图
|
||||
|
||||
这个项目目前还比较初级,很多地方做得不够好,我们一直在努力改进!接下来才是我们真正想做的事情!
|
||||
### ✅ 已完成
|
||||
|
||||
- **接入 CI/CD** — 让它能跑在 GitHub/GitLab 流水线里,提 PR 的时候自动帮你批量审代码
|
||||
- **RAG 知识库** — 把 CWE/CVE 这些漏洞库喂给模型,让它真正懂安全,不再瞎报一通
|
||||
- **多 Agent 协作** — 多智能体架构,模拟真实的安全团队工作流程
|
||||
- **自动生成补丁** — 光说哪里有问题不够,还得能自动生成能用的修复代码
|
||||
- **混合分析** — AI 分析完再用传统 SAST 工具验证一遍,两边互相补充,减少误报漏报
|
||||
- **跨文件分析** — 做代码知识图谱,理解模块间的调用关系
|
||||
- **多仓库支持** — 除Github/GitLab以外,更新支持Gitea等更多平台以及自建仓库
|
||||
- ✅ **RAG 知识库** — 代码语义理解 + CWE/CVE 漏洞知识库集成
|
||||
- ✅ **多 Agent 协作** — Orchestrator/Analysis/Recon/Verification 多智能体架构
|
||||
- ✅ **沙箱验证** — Docker 安全容器自动执行 PoC 验证
|
||||
|
||||
### 🚧 开发中
|
||||
|
||||
- 🔄 **CI/CD 集成** — GitHub/GitLab 流水线自动审计,PR 批量扫描
|
||||
- 🔄 **自动生成补丁** — 基于漏洞分析自动生成修复代码
|
||||
- 🔄 **跨文件分析** — 代码知识图谱,理解模块间调用关系
|
||||
|
||||
### 📋 计划中
|
||||
|
||||
- 📋 **混合分析** — AI 分析 + 传统 SAST 工具验证,减少误报漏报
|
||||
- 📋 **多仓库支持** — Gitea、Bitbucket 等更多平台支持
|
||||
|
||||
💡 **您的 Star 和反馈是我们前进的最大动力!有任何想法欢迎提 Issue 一起讨论~**
|
||||
|
||||
|
|
@ -158,7 +202,8 @@ docker-compose up -d
|
|||
| 文档 | 说明 |
|
||||
|------|------|
|
||||
| [部署指南](docs/DEPLOYMENT.md) | Docker 部署 / 本地开发环境搭建 |
|
||||
| [配置说明](docs/CONFIGURATION.md) | 后端配置、审计规则、提示词模板、API 中转站 |
|
||||
| [Agent 审计](docs/AGENT_AUDIT.md) | Multi-Agent 审计模块详解 |
|
||||
| [配置说明](docs/CONFIGURATION.md) | 后端配置、审计规则、提示词模板 |
|
||||
| [LLM 平台支持](docs/LLM_PROVIDERS.md) | 各家 LLM 的配置方法和 API Key 获取 |
|
||||
| [常见问题](docs/FAQ.md) | 遇到问题先看这里 |
|
||||
| [更新日志](CHANGELOG.md) | 版本更新记录 |
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
# =============================================
|
||||
# DeepAudit Backend 配置文件
|
||||
# DeepAudit v3.0.0 Backend 配置文件
|
||||
# =============================================
|
||||
# 复制此文件为 .env 并填入实际配置
|
||||
# 详细说明请参阅 docs/CONFIGURATION.md
|
||||
|
|
@ -105,6 +105,70 @@ LLM_MAX_TOKENS=4096
|
|||
# Ollama 本地模型
|
||||
# OLLAMA_BASE_URL=http://localhost:11434/v1
|
||||
|
||||
# =============================================
|
||||
# Agent 审计配置 (Multi-Agent v3.0.0 新增)
|
||||
# =============================================
|
||||
# Agent 审计开关(开启后可使用 Multi-Agent 深度审计功能)
|
||||
AGENT_ENABLED=true
|
||||
|
||||
# Agent 最大迭代次数
|
||||
AGENT_MAX_ITERATIONS=5
|
||||
|
||||
# Agent 单次审计超时时间(秒)
|
||||
AGENT_TIMEOUT=1800
|
||||
|
||||
# =============================================
|
||||
# 嵌入模型配置(RAG 功能,独立于主 LLM)
|
||||
# =============================================
|
||||
# 嵌入模型 provider: openai, ollama, cohere, huggingface
|
||||
EMBEDDING_PROVIDER=openai
|
||||
|
||||
# 嵌入模型名称
|
||||
# OpenAI: text-embedding-3-small, text-embedding-3-large, text-embedding-ada-002
|
||||
# Ollama: nomic-embed-text, mxbai-embed-large
|
||||
EMBEDDING_MODEL=text-embedding-3-small
|
||||
|
||||
# 嵌入模型 API Key(留空则使用 LLM_API_KEY)
|
||||
EMBEDDING_API_KEY=
|
||||
|
||||
# 嵌入模型 Base URL(留空则使用默认值)
|
||||
EMBEDDING_BASE_URL=
|
||||
|
||||
# =============================================
|
||||
# 向量数据库配置(RAG 功能)
|
||||
# =============================================
|
||||
# 向量数据库类型: milvus, chroma
|
||||
VECTOR_DB_TYPE=chroma
|
||||
|
||||
# ChromaDB 配置(本地模式)
|
||||
CHROMA_PERSIST_DIRECTORY=./data/chroma
|
||||
|
||||
# Milvus 配置(Agent 模式推荐)
|
||||
# Docker Compose --profile agent 启动时使用 milvus 作为 host
|
||||
MILVUS_HOST=localhost
|
||||
MILVUS_PORT=19530
|
||||
|
||||
# =============================================
|
||||
# 沙箱配置(漏洞验证)
|
||||
# =============================================
|
||||
# 沙箱功能开关
|
||||
SANDBOX_ENABLED=true
|
||||
|
||||
# 沙箱 Docker 镜像(需要提前构建: cd docker/sandbox && ./build.sh)
|
||||
SANDBOX_IMAGE=deepaudit-sandbox:latest
|
||||
|
||||
# 沙箱内存限制
|
||||
SANDBOX_MEMORY_LIMIT=512m
|
||||
|
||||
# 沙箱 CPU 限制(核心数)
|
||||
SANDBOX_CPU_LIMIT=1.0
|
||||
|
||||
# 是否禁用沙箱网络(安全建议开启)
|
||||
SANDBOX_NETWORK_DISABLED=true
|
||||
|
||||
# 沙箱执行超时时间(秒)
|
||||
SANDBOX_TIMEOUT=30
|
||||
|
||||
# =============================================
|
||||
# Git 仓库配置
|
||||
# =============================================
|
||||
|
|
|
|||
|
|
@ -1,16 +0,0 @@
|
|||
|
||||
try:
|
||||
import docker
|
||||
client = docker.from_env()
|
||||
client.ping()
|
||||
print("Docker is available and connected")
|
||||
except Exception as e:
|
||||
print(f"Docker connection failed: {e}")
|
||||
|
||||
try:
|
||||
from app.services.agent.tools.sandbox_tool import SandboxConfig, SandboxManager, SandboxTool # pyright: ignore[reportMissingImports]
|
||||
print("Sandbox modules imported successfully")
|
||||
except ImportError as e:
|
||||
print(f"Sandbox import failed: {e}")
|
||||
except Exception as e:
|
||||
print(f"Sandbox import error: {e}")
|
||||
|
|
@ -1,4 +1,14 @@
|
|||
# =============================================
|
||||
# DeepAudit v3.0.0 Docker Compose 配置
|
||||
# =============================================
|
||||
# 基础部署: docker compose up -d
|
||||
# Agent 模式: docker compose --profile agent up -d
|
||||
|
||||
services:
|
||||
# =============================================
|
||||
# 核心服务
|
||||
# =============================================
|
||||
|
||||
db:
|
||||
image: postgres:15-alpine
|
||||
volumes:
|
||||
|
|
@ -47,6 +57,90 @@ services:
|
|||
networks:
|
||||
- deepaudit-network
|
||||
|
||||
# =============================================
|
||||
# Agent 审计模式服务 (可选)
|
||||
# 使用 --profile agent 启用
|
||||
# =============================================
|
||||
|
||||
# Milvus 向量数据库 (用于 RAG 功能)
|
||||
milvus-etcd:
|
||||
image: quay.io/coreos/etcd:v3.5.5
|
||||
profiles: ["agent"]
|
||||
environment:
|
||||
- ETCD_AUTO_COMPACTION_MODE=revision
|
||||
- ETCD_AUTO_COMPACTION_RETENTION=1000
|
||||
- ETCD_QUOTA_BACKEND_BYTES=4294967296
|
||||
- ETCD_SNAPSHOT_COUNT=50000
|
||||
volumes:
|
||||
- milvus_etcd:/etcd
|
||||
command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
|
||||
healthcheck:
|
||||
test: ["CMD", "etcdctl", "endpoint", "health"]
|
||||
interval: 30s
|
||||
timeout: 20s
|
||||
retries: 3
|
||||
networks:
|
||||
- deepaudit-network
|
||||
|
||||
milvus-minio:
|
||||
image: minio/minio:RELEASE.2023-03-20T20-16-18Z
|
||||
profiles: ["agent"]
|
||||
environment:
|
||||
MINIO_ACCESS_KEY: minioadmin
|
||||
MINIO_SECRET_KEY: minioadmin
|
||||
volumes:
|
||||
- milvus_minio:/minio_data
|
||||
command: minio server /minio_data --console-address ":9001"
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
|
||||
interval: 30s
|
||||
timeout: 20s
|
||||
retries: 3
|
||||
networks:
|
||||
- deepaudit-network
|
||||
|
||||
milvus:
|
||||
image: milvusdb/milvus:v2.4-latest
|
||||
profiles: ["agent"]
|
||||
command: ["milvus", "run", "standalone"]
|
||||
security_opt:
|
||||
- seccomp:unconfined
|
||||
environment:
|
||||
ETCD_ENDPOINTS: milvus-etcd:2379
|
||||
MINIO_ADDRESS: milvus-minio:9000
|
||||
volumes:
|
||||
- milvus_data:/var/lib/milvus
|
||||
ports:
|
||||
- "19530:19530"
|
||||
- "9091:9091"
|
||||
depends_on:
|
||||
- milvus-etcd
|
||||
- milvus-minio
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
|
||||
interval: 30s
|
||||
start_period: 90s
|
||||
timeout: 20s
|
||||
retries: 3
|
||||
networks:
|
||||
- deepaudit-network
|
||||
|
||||
# Redis (用于任务队列,可选)
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
profiles: ["agent"]
|
||||
ports:
|
||||
- "6379:6379"
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
networks:
|
||||
- deepaudit-network
|
||||
|
||||
networks:
|
||||
deepaudit-network:
|
||||
driver: bridge
|
||||
|
|
@ -54,3 +148,7 @@ networks:
|
|||
volumes:
|
||||
postgres_data:
|
||||
backend_uploads:
|
||||
milvus_etcd:
|
||||
milvus_minio:
|
||||
milvus_data:
|
||||
redis_data:
|
||||
|
|
|
|||
|
|
@ -1,83 +1,109 @@
|
|||
# DeepAudit Agent 审计模块
|
||||
# DeepAudit Agent 审计模块 v3.0.0
|
||||
|
||||
## 概述
|
||||
|
||||
Agent 审计模块是 DeepAudit 的高级安全审计功能,基于 **LangGraph** 状态图构建的混合 AI Agent 架构,实现自主代码安全分析和漏洞验证。
|
||||
Agent 审计模块是 DeepAudit v3.0.0 的核心功能,基于 **Multi-Agent 架构** 实现自主代码安全分析和漏洞验证。
|
||||
|
||||
## LangGraph 工作流架构
|
||||
### 核心特性
|
||||
|
||||
- 🤖 **Multi-Agent 协作**: Orchestrator 编排决策,多智能体协作审计
|
||||
- 🧠 **RAG 知识库增强**: 代码语义理解 + CWE/CVE 漏洞知识库
|
||||
- 🔒 **沙箱漏洞验证**: Docker 安全容器自动执行 PoC
|
||||
- 🛠️ **专业工具集成**: Semgrep、Bandit、Gitleaks、OSV-Scanner 等
|
||||
|
||||
---
|
||||
|
||||
## 架构设计
|
||||
|
||||
### Multi-Agent 工作流
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────┐
|
||||
│ LangGraph 审计工作流 │
|
||||
│ DeepAudit Agent 审计工作流 │
|
||||
├─────────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ START │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ ┌────────────────────────────────────────────────────────────────┐│
|
||||
│ │ Recon Node (信息收集) ││
|
||||
│ │ • 项目结构分析 • 技术栈识别 ││
|
||||
│ │ • 入口点发现 • 依赖扫描 ││
|
||||
│ │ ││
|
||||
│ │ 使用工具: list_files, npm_audit, safety_scan, gitleaks_scan ││
|
||||
│ └────────────────────────────┬───────────────────────────────────┘│
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ ┌────────────────────────────────────────────────────────────────┐│
|
||||
│ │ Analysis Node (漏洞分析) ││
|
||||
│ │ • Semgrep 静态分析 • RAG 语义搜索 ││
|
||||
│ │ • 模式匹配 • LLM 深度分析 ││
|
||||
│ │ • 数据流追踪 ││
|
||||
│ │ ◄─────┐ ││
|
||||
│ │ 使用工具: semgrep_scan, bandit_scan, rag_query, │ ││
|
||||
│ │ code_analysis, pattern_match │ ││
|
||||
│ └────────────────────────────┬──────────────────────────┘───────┘│
|
||||
│ │ │ │
|
||||
│ ▼ │ │
|
||||
│ ┌────────────────────────────────────────────────────────────────┐│
|
||||
│ │ Verification Node (漏洞验证) ││
|
||||
│ │ • LLM 漏洞验证 • 沙箱测试 ││
|
||||
│ │ • PoC 生成 • 误报过滤 ││
|
||||
│ │ ────────┘ ││
|
||||
│ │ 使用工具: vulnerability_validation, sandbox_exec, ││
|
||||
│ │ verify_vulnerability ││
|
||||
│ └────────────────────────────┬───────────────────────────────────┘│
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ ┌────────────────────────────────────────────────────────────────┐│
|
||||
│ │ Report Node (报告生成) ││
|
||||
│ │ • 漏洞汇总 • 安全评分 ││
|
||||
│ │ • 修复建议 • 统计分析 ││
|
||||
│ └────────────────────────────┬───────────────────────────────────┘│
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ END │
|
||||
│ │
|
||||
└────────────────────────────────────────────────────────────────────┘
|
||||
|
||||
状态流转:
|
||||
• Recon → Analysis: 收集到入口点后进入分析
|
||||
• Analysis → Analysis: 发现较多问题时继续迭代
|
||||
• Analysis → Verification: 有发现时进入验证
|
||||
• Verification → Analysis: 误报率高时回溯分析
|
||||
• Verification → Report: 验证完成后生成报告
|
||||
│ ┌────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ Orchestrator Agent (编排决策) │ │
|
||||
│ │ • 分析审计目标 • 制定审计策略 │ │
|
||||
│ │ • 分配子任务 • 汇总审计结果 │ │
|
||||
│ └────────────────────────────┬───────────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ ┌────────────────┼────────────────┐ │
|
||||
│ ▼ ▼ ▼ │
|
||||
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
|
||||
│ │ Recon Agent │ │ Analysis Agent │ │Verification Agent│ │
|
||||
│ │ (信息收集) │ │ (漏洞分析) │ │ (漏洞验证) │ │
|
||||
│ │ │ │ │ │ │ │
|
||||
│ │ • 项目结构分析 │ │ • Semgrep 扫描 │ │ • 沙箱测试 │ │
|
||||
│ │ • 技术栈识别 │ │ • RAG 语义搜索 │ │ • PoC 生成 │ │
|
||||
│ │ • 入口点发现 │ │ • LLM 深度分析 │ │ • 误报过滤 │ │
|
||||
│ │ • 依赖扫描 │ │ • 数据流追踪 │ │ • 置信度评估 │ │
|
||||
│ └────────┬─────────┘ └────────┬─────────┘ └────────┬─────────┘ │
|
||||
│ │ │ │ │
|
||||
│ └────────────────────┴────────────────────┘ │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ ┌────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ Report Generation │ │
|
||||
│ │ • 漏洞汇总 • 安全评分 │ │
|
||||
│ │ • 修复建议 • 统计分析 │ │
|
||||
│ └────────────────────────────┬───────────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ END │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## 核心特性
|
||||
### Agent 职责
|
||||
|
||||
### 1. LangGraph 状态图
|
||||
| Agent | 职责 | 使用工具 |
|
||||
|-------|------|----------|
|
||||
| **Orchestrator** | 统筹编排,自主决策审计策略 | 任务分配、结果汇总 |
|
||||
| **Recon** | 信息收集,识别技术栈和入口点 | list_files, npm_audit, safety_scan, gitleaks |
|
||||
| **Analysis** | 深度分析,挖掘潜在安全漏洞 | semgrep, bandit, rag_query, code_analysis |
|
||||
| **Verification** | 沙箱验证,确认漏洞真实有效 | sandbox_exec, vulnerability_validation |
|
||||
|
||||
- **声明式工作流**: 使用图结构定义 Agent 协作流程
|
||||
- **状态自动合并**: `Annotated[List, operator.add]` 实现发现累加
|
||||
- **条件路由**: 基于状态动态决定下一步
|
||||
- **检查点恢复**: 支持任务中断后继续
|
||||
---
|
||||
|
||||
### 2. Agent 工具集
|
||||
## 快速开始
|
||||
|
||||
#### 内置工具
|
||||
### 1. 部署 Agent 模式
|
||||
|
||||
| 工具 | 功能 | 节点 |
|
||||
|------|------|------|
|
||||
```bash
|
||||
# 配置环境变量
|
||||
cp backend/env.example backend/.env
|
||||
# 编辑 .env,设置 AGENT_ENABLED=true
|
||||
|
||||
# 启动包含 Milvus 的完整服务
|
||||
docker compose --profile agent up -d
|
||||
```
|
||||
|
||||
### 2. 构建沙箱镜像
|
||||
|
||||
```bash
|
||||
cd docker/sandbox
|
||||
./build.sh
|
||||
```
|
||||
|
||||
### 3. 使用 Agent 审计
|
||||
|
||||
1. 在项目详情页点击 "Agent 审计"
|
||||
2. 选择目标漏洞类型
|
||||
3. 可选:上传知识库文件增强检测
|
||||
4. 启动审计,实时查看 Agent 执行日志
|
||||
|
||||
---
|
||||
|
||||
## 工具集
|
||||
|
||||
### 内置工具
|
||||
|
||||
| 工具 | 功能 | Agent |
|
||||
|------|------|-------|
|
||||
| `list_files` | 目录浏览 | Recon |
|
||||
| `read_file` | 文件读取 | All |
|
||||
| `search_code` | 代码搜索 | Analysis |
|
||||
|
|
@ -91,7 +117,7 @@ Agent 审计模块是 DeepAudit 的高级安全审计功能,基于 **LangGraph
|
|||
| `sandbox_exec` | 沙箱执行 | Verification |
|
||||
| `verify_vulnerability` | 自动验证 | Verification |
|
||||
|
||||
#### 外部安全工具
|
||||
### 外部安全工具
|
||||
|
||||
| 工具 | 功能 | 适用场景 |
|
||||
|------|------|----------|
|
||||
|
|
@ -103,93 +129,60 @@ Agent 审计模块是 DeepAudit 的高级安全审计功能,基于 **LangGraph
|
|||
| `safety_scan` | Safety Python 审计 | Python 依赖漏洞 |
|
||||
| `osv_scan` | OSV 漏洞扫描 | 多语言依赖漏洞 |
|
||||
|
||||
### 3. RAG 系统
|
||||
---
|
||||
|
||||
## RAG 系统
|
||||
|
||||
### 功能特点
|
||||
|
||||
- **代码分块**: 基于 Tree-sitter AST 的智能分块
|
||||
- **向量存储**: ChromaDB 持久化
|
||||
- **向量存储**: Milvus 或 ChromaDB 持久化
|
||||
- **多语言支持**: Python, JavaScript, TypeScript, Java, Go, PHP, Rust 等
|
||||
- **嵌入模型**: 独立配置,支持 OpenAI、Ollama、Cohere、HuggingFace
|
||||
- **知识库增强**: 支持上传自定义漏洞知识库
|
||||
|
||||
### 4. 安全沙箱
|
||||
### 配置
|
||||
|
||||
- **Docker 隔离**: 安全容器执行
|
||||
```env
|
||||
# 嵌入模型配置
|
||||
EMBEDDING_PROVIDER=openai
|
||||
EMBEDDING_MODEL=text-embedding-3-small
|
||||
|
||||
# 向量数据库配置
|
||||
VECTOR_DB_TYPE=milvus
|
||||
MILVUS_HOST=milvus
|
||||
MILVUS_PORT=19530
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 安全沙箱
|
||||
|
||||
### 功能特点
|
||||
|
||||
- **Docker 隔离**: 安全容器执行 PoC
|
||||
- **资源限制**: 内存、CPU 限制
|
||||
- **网络隔离**: 可配置网络访问
|
||||
- **seccomp 策略**: 系统调用白名单
|
||||
|
||||
## 配置
|
||||
### 配置
|
||||
|
||||
### 环境变量
|
||||
|
||||
```bash
|
||||
# LLM 配置
|
||||
DEFAULT_LLM_MODEL=gpt-4-turbo-preview
|
||||
LLM_API_KEY=your-api-key
|
||||
LLM_BASE_URL=https://api.openai.com/v1
|
||||
|
||||
# 嵌入模型配置(独立于 LLM)
|
||||
EMBEDDING_PROVIDER=openai
|
||||
EMBEDDING_MODEL=text-embedding-3-small
|
||||
|
||||
# 向量数据库
|
||||
VECTOR_DB_PATH=./data/vectordb
|
||||
|
||||
# 沙箱配置
|
||||
```env
|
||||
SANDBOX_ENABLED=true
|
||||
SANDBOX_IMAGE=deepaudit-sandbox:latest
|
||||
SANDBOX_MEMORY_LIMIT=512m
|
||||
SANDBOX_CPU_LIMIT=1.0
|
||||
SANDBOX_NETWORK_DISABLED=true
|
||||
```
|
||||
|
||||
### Agent 任务配置
|
||||
### 沙箱镜像内置工具
|
||||
|
||||
```json
|
||||
{
|
||||
"target_vulnerabilities": [
|
||||
"sql_injection",
|
||||
"xss",
|
||||
"command_injection",
|
||||
"path_traversal",
|
||||
"ssrf"
|
||||
],
|
||||
"verification_level": "sandbox",
|
||||
"exclude_patterns": ["node_modules", "__pycache__", ".git"],
|
||||
"max_iterations": 3,
|
||||
"timeout_seconds": 1800
|
||||
}
|
||||
```
|
||||
- Python 3.11 + Semgrep, Bandit, Safety
|
||||
- Node.js 20 + npm audit
|
||||
- Go 1.21 + OSV-Scanner
|
||||
- Rust + cargo-audit
|
||||
- Gitleaks, TruffleHog
|
||||
|
||||
## 部署
|
||||
|
||||
### 1. 安装依赖
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
pip install -r requirements.txt
|
||||
|
||||
# 可选:安装外部工具
|
||||
pip install semgrep bandit safety
|
||||
brew install gitleaks trufflehog osv-scanner # macOS
|
||||
```
|
||||
|
||||
### 2. 构建沙箱镜像
|
||||
|
||||
```bash
|
||||
cd docker/sandbox
|
||||
./build.sh
|
||||
```
|
||||
|
||||
### 3. 数据库迁移
|
||||
|
||||
```bash
|
||||
alembic upgrade head
|
||||
```
|
||||
|
||||
### 4. 启动服务
|
||||
|
||||
```bash
|
||||
uvicorn app.main:app --host 0.0.0.0 --port 8000
|
||||
```
|
||||
---
|
||||
|
||||
## API 接口
|
||||
|
||||
|
|
@ -227,6 +220,14 @@ GET /api/v1/agent-tasks/{task_id}/findings?verified_only=true
|
|||
GET /api/v1/agent-tasks/{task_id}/summary
|
||||
```
|
||||
|
||||
### 导出报告
|
||||
|
||||
```http
|
||||
GET /api/v1/agent-tasks/{task_id}/report?format=markdown
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 支持的漏洞类型
|
||||
|
||||
| 类型 | 说明 |
|
||||
|
|
@ -244,6 +245,8 @@ GET /api/v1/agent-tasks/{task_id}/summary
|
|||
| `authorization_bypass` | 授权绕过 |
|
||||
| `idor` | 不安全直接对象引用 |
|
||||
|
||||
---
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
|
|
@ -257,11 +260,6 @@ backend/app/services/agent/
|
|||
│ ├── analysis.py # 漏洞分析 Agent
|
||||
│ ├── verification.py # 漏洞验证 Agent
|
||||
│ └── orchestrator.py # 编排 Agent
|
||||
├── graph/ # LangGraph 工作流
|
||||
│ ├── __init__.py
|
||||
│ ├── audit_graph.py # 状态定义和图构建
|
||||
│ ├── nodes.py # 节点实现
|
||||
│ └── runner.py # 执行器
|
||||
├── tools/ # Agent 工具
|
||||
│ ├── __init__.py
|
||||
│ ├── base.py # 工具基类
|
||||
|
|
@ -276,23 +274,65 @@ backend/app/services/agent/
|
|||
└── system_prompts.py
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 故障排除
|
||||
|
||||
### 沙箱镜像检查
|
||||
### 常见问题
|
||||
|
||||
**Q: Agent 审计启动失败**
|
||||
|
||||
```bash
|
||||
# 检查服务状态
|
||||
docker compose --profile agent ps
|
||||
|
||||
# 查看后端日志
|
||||
docker compose logs backend | grep -i agent
|
||||
```
|
||||
|
||||
**Q: RAG 初始化失败**
|
||||
|
||||
```bash
|
||||
# 检查 Milvus 连接
|
||||
curl http://localhost:9091/healthz
|
||||
|
||||
# 检查嵌入模型配置
|
||||
# 确保 EMBEDDING_API_KEY 正确设置
|
||||
```
|
||||
|
||||
**Q: 沙箱执行失败**
|
||||
|
||||
```bash
|
||||
# 检查沙箱镜像
|
||||
docker images | grep deepaudit-sandbox
|
||||
|
||||
# 重新构建沙箱
|
||||
cd docker/sandbox && ./build.sh
|
||||
```
|
||||
|
||||
**Q: 外部工具不可用**
|
||||
|
||||
```bash
|
||||
# 检查工具安装(本地开发时)
|
||||
which semgrep bandit gitleaks
|
||||
|
||||
# 或使用 Docker 沙箱执行
|
||||
```
|
||||
|
||||
### 日志查看
|
||||
|
||||
```bash
|
||||
# 查看 Agent 日志
|
||||
docker compose logs -f backend | grep -E "(agent|Agent)"
|
||||
|
||||
# 查看详细日志
|
||||
tail -f logs/agent.log
|
||||
```
|
||||
|
||||
### 常见问题
|
||||
---
|
||||
|
||||
1. **RAG 初始化失败**: 检查嵌入模型配置和 API Key
|
||||
2. **沙箱启动失败**: 确保 Docker 正常运行
|
||||
3. **外部工具不可用**: 检查 semgrep/bandit 等是否已安装
|
||||
## 更多资源
|
||||
|
||||
- [部署指南](DEPLOYMENT.md) - 完整部署说明
|
||||
- [配置说明](CONFIGURATION.md) - 详细配置参数
|
||||
- [架构详解](AGENT_AUDIT_ARCHITECTURE.md) - 深度架构文档
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
# 部署指南
|
||||
|
||||
本文档详细介绍 DeepAudit 的各种部署方式,包括 Docker Compose 一键部署、生产环境部署和本地开发环境搭建。
|
||||
本文档详细介绍 DeepAudit v3.0.0 的各种部署方式,包括 Docker Compose 一键部署、Agent 审计模式部署和本地开发环境搭建。
|
||||
|
||||
## 目录
|
||||
|
||||
- [快速开始](#快速开始)
|
||||
- [Docker Compose 部署(推荐)](#docker-compose-部署推荐)
|
||||
- [Agent 审计模式部署](#agent-审计模式部署)
|
||||
- [生产环境部署](#生产环境部署)
|
||||
- [本地开发部署](#本地开发部署)
|
||||
- [常见部署问题](#常见部署问题)
|
||||
|
|
@ -50,10 +51,12 @@ docker compose up -d
|
|||
|
||||
### 系统要求
|
||||
|
||||
- Docker 20.10+
|
||||
- Docker Compose 2.0+
|
||||
- 至少 2GB 可用内存
|
||||
- 至少 5GB 可用磁盘空间
|
||||
| 资源 | 基础模式 | Agent 模式 |
|
||||
|------|----------|-----------|
|
||||
| 内存 | 2GB+ | 4GB+ |
|
||||
| 磁盘 | 5GB+ | 10GB+ |
|
||||
| Docker | 20.10+ | 20.10+ |
|
||||
| Docker Compose | 2.0+ | 2.0+ |
|
||||
|
||||
### 部署步骤
|
||||
|
||||
|
|
@ -102,8 +105,8 @@ docker compose logs -f
|
|||
|
||||
| 服务 | 端口 | 说明 |
|
||||
|------|------|------|
|
||||
| `frontend` | 3000 | React 前端应用(生产构建,使用 serve 提供静态文件) |
|
||||
| `backend` | 8000 | FastAPI 后端 API(使用 uv 管理依赖) |
|
||||
| `frontend` | 3000 | React 前端应用(生产构建) |
|
||||
| `backend` | 8000 | FastAPI 后端 API |
|
||||
| `db` | 5432 | PostgreSQL 15 数据库 |
|
||||
|
||||
### 访问地址
|
||||
|
|
@ -135,6 +138,91 @@ docker compose exec db psql -U postgres -d deepaudit
|
|||
|
||||
---
|
||||
|
||||
## Agent 审计模式部署
|
||||
|
||||
v3.0.0 新增的 Multi-Agent 深度审计功能,需要额外的服务支持。
|
||||
|
||||
### 功能特点
|
||||
|
||||
- 🤖 **Multi-Agent 架构**: Orchestrator/Analysis/Recon/Verification 多智能体协作
|
||||
- 🧠 **RAG 知识库**: 代码语义理解 + CWE/CVE 漏洞知识库
|
||||
- 🔒 **沙箱验证**: Docker 安全容器执行 PoC
|
||||
|
||||
### 部署步骤
|
||||
|
||||
```bash
|
||||
# 1. 配置 Agent 相关参数
|
||||
# 编辑 backend/.env,确保以下配置正确
|
||||
|
||||
# Agent 配置
|
||||
AGENT_ENABLED=true
|
||||
AGENT_MAX_ITERATIONS=5
|
||||
|
||||
# 嵌入模型配置
|
||||
EMBEDDING_PROVIDER=openai
|
||||
EMBEDDING_MODEL=text-embedding-3-small
|
||||
EMBEDDING_API_KEY= # 留空则使用 LLM_API_KEY
|
||||
|
||||
# 向量数据库配置(使用 Milvus)
|
||||
VECTOR_DB_TYPE=milvus
|
||||
MILVUS_HOST=milvus
|
||||
MILVUS_PORT=19530
|
||||
|
||||
# 沙箱配置
|
||||
SANDBOX_ENABLED=true
|
||||
```
|
||||
|
||||
```bash
|
||||
# 2. 启动包含 Agent 服务的完整部署
|
||||
docker compose --profile agent up -d
|
||||
```
|
||||
|
||||
### Agent 模式服务说明
|
||||
|
||||
| 服务 | 端口 | 说明 |
|
||||
|------|------|------|
|
||||
| `milvus` | 19530 | Milvus 向量数据库 |
|
||||
| `milvus-etcd` | - | Milvus 元数据存储 |
|
||||
| `milvus-minio` | - | Milvus 对象存储 |
|
||||
| `redis` | 6379 | 任务队列(可选) |
|
||||
|
||||
### 构建安全沙箱镜像
|
||||
|
||||
沙箱用于安全地执行漏洞验证 PoC:
|
||||
|
||||
```bash
|
||||
# 进入沙箱目录
|
||||
cd docker/sandbox
|
||||
|
||||
# 构建沙箱镜像
|
||||
./build.sh
|
||||
|
||||
# 验证镜像构建成功
|
||||
docker images | grep deepaudit-sandbox
|
||||
```
|
||||
|
||||
沙箱镜像包含:
|
||||
- Python 3.11 + 安全工具 (Semgrep, Bandit, Safety)
|
||||
- Node.js 20 + npm audit
|
||||
- Go 1.21 + gosec
|
||||
- Rust (cargo-audit)
|
||||
- Gitleaks, TruffleHog, OSV-Scanner
|
||||
|
||||
### 验证 Agent 模式
|
||||
|
||||
```bash
|
||||
# 检查所有服务状态
|
||||
docker compose --profile agent ps
|
||||
|
||||
# 检查 Milvus 连接
|
||||
curl http://localhost:9091/healthz
|
||||
|
||||
# 查看 Agent 日志
|
||||
docker compose logs -f backend | grep -i agent
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 生产环境部署
|
||||
|
||||
Docker Compose 默认配置已适用于生产环境:
|
||||
|
|
@ -186,6 +274,16 @@ server {
|
|||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
# SSE 事件流(Agent 审计日志)
|
||||
location /api/v1/agent-tasks/ {
|
||||
proxy_pass http://localhost:8000/api/v1/agent-tasks/;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Connection "";
|
||||
proxy_buffering off;
|
||||
proxy_cache off;
|
||||
proxy_read_timeout 86400;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
|
@ -347,6 +445,33 @@ docker compose up -d backend
|
|||
3. 重启 Docker Desktop
|
||||
4. 重新构建:`docker compose build --no-cache`
|
||||
|
||||
### Agent 模式相关
|
||||
|
||||
**Q: Milvus 启动失败**
|
||||
|
||||
```bash
|
||||
# 检查 Milvus 相关服务状态
|
||||
docker compose --profile agent ps
|
||||
|
||||
# 查看 Milvus 日志
|
||||
docker compose logs milvus milvus-etcd milvus-minio
|
||||
|
||||
# 重新启动 Milvus 服务
|
||||
docker compose --profile agent restart milvus
|
||||
```
|
||||
|
||||
**Q: 沙箱镜像构建失败**
|
||||
|
||||
```bash
|
||||
# 检查 Docker 服务状态
|
||||
docker info
|
||||
|
||||
# 使用国内镜像源重新构建
|
||||
cd docker/sandbox
|
||||
# 编辑 Dockerfile,使用国内镜像源
|
||||
./build.sh
|
||||
```
|
||||
|
||||
### 后端相关
|
||||
|
||||
**Q: PDF 导出功能报错(WeasyPrint 依赖问题)**
|
||||
|
|
@ -395,6 +520,7 @@ VITE_API_BASE_URL=http://localhost:8000/api/v1
|
|||
## 更多资源
|
||||
|
||||
- [配置说明](CONFIGURATION.md) - 详细的配置参数说明
|
||||
- [Agent 审计](AGENT_AUDIT.md) - Multi-Agent 审计模块详解
|
||||
- [LLM 平台支持](LLM_PROVIDERS.md) - 各 LLM 平台的配置方法
|
||||
- [常见问题](FAQ.md) - 更多问题解答
|
||||
- [贡献指南](../CONTRIBUTING.md) - 参与项目开发
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "deep-audit",
|
||||
"version": "2.0.0-beta.7",
|
||||
"version": "3.0.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
|
@ -104,4 +104,4 @@
|
|||
"react": "^16.8.0 || ^17 || ^18 || ^19"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,87 +0,0 @@
|
|||
|
||||
import asyncio
|
||||
import base64
|
||||
import os
|
||||
import sys
|
||||
|
||||
# 添加 backend 目录到路径
|
||||
sys.path.append(os.path.join(os.getcwd(), "backend"))
|
||||
|
||||
from app.services.agent.tools.sandbox_tool import SandboxManager, SandboxConfig
|
||||
|
||||
async def verify_rce():
|
||||
print("🚀 开始验证 RCE 漏洞...")
|
||||
|
||||
# 1. 读取目标文件内容
|
||||
file_path = "ttt/t.php"
|
||||
if not os.path.exists(file_path):
|
||||
print(f"❌ 文件不存在: {file_path}")
|
||||
return
|
||||
|
||||
with open(file_path, "rb") as f:
|
||||
content = f.read()
|
||||
|
||||
b64_content = base64.b64encode(content).decode()
|
||||
print(f"📄 读取文件 {file_path} ({len(content)} bytes)")
|
||||
|
||||
# 2. 初始化沙箱管理器
|
||||
# 注意:需要启用网络模式以便 curl 本地服务(虽然是 localhost,但 bridge 模式更稳妥,或者默认 none 也可以访问 localhost?
|
||||
# Docker none 网络模式只有 loopback 接口,所以 localhost 是可以通的。
|
||||
# 但是为了保险,我们使用默认配置(通常是 none),如果不行再调整。
|
||||
# 这里的关键是 php server 和 curl 在同一个容器内运行。
|
||||
|
||||
config = SandboxConfig()
|
||||
# 确保网络模式允许本地通信(none 模式下只有 lo,应该没问题)
|
||||
# 但有些环境可能需要 bridge
|
||||
# config.network_mode = "bridge"
|
||||
|
||||
manager = SandboxManager(config)
|
||||
await manager.initialize()
|
||||
|
||||
if not manager.is_available:
|
||||
print("❌ Docker 沙箱不可用")
|
||||
return
|
||||
|
||||
print("🐳 沙箱初始化成功")
|
||||
|
||||
# 3. 构造验证 Payload
|
||||
# - 创建目录
|
||||
# - 写入文件 (使用 base64 避免转义问题)
|
||||
# - 启动 PHP 服务器 (后台运行)
|
||||
# - 等待服务器启动
|
||||
# - 发送恶意请求 (cmd=id)
|
||||
|
||||
cmd_payload = "id"
|
||||
verification_url = f"http://localhost:8000/t.php?cmd={cmd_payload}"
|
||||
|
||||
sandbox_cmd = (
|
||||
f"mkdir -p ttt && "
|
||||
f"echo '{b64_content}' | base64 -d > ttt/t.php && "
|
||||
f"TMPDIR=/workspace php -S 0.0.0.0:8000 -t ttt > php.log 2>&1 & "
|
||||
f"sleep 3 && "
|
||||
f"curl -v '{verification_url}' || (echo '--- PHP LOG ---' && cat php.log)"
|
||||
)
|
||||
|
||||
print(f"⚡ 执行沙箱命令:\n{sandbox_cmd}\n")
|
||||
|
||||
result = await manager.execute_command(sandbox_cmd, timeout=10)
|
||||
|
||||
# 4. 分析结果
|
||||
print("📊 执行结果:")
|
||||
print(f"Success: {result['success']}")
|
||||
print(f"Exit Code: {result['exit_code']}")
|
||||
print(f"Stdout: {result['stdout'].strip()}")
|
||||
print(f"Stderr: {result['stderr'].strip()}")
|
||||
|
||||
if result['success']:
|
||||
output = result['stdout']
|
||||
if "uid=" in output and "gid=" in output:
|
||||
print("\n✅ 漏洞验证成功!发现了命令执行结果。")
|
||||
print(f"证明: {output.strip()}")
|
||||
else:
|
||||
print("\n⚠️ 命令执行成功,但未发现预期的 id 命令输出。")
|
||||
else:
|
||||
print("\n❌ 验证执行失败。")
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(verify_rce())
|
||||
Loading…
Reference in New Issue