DeepAudit:用 Multi-Agent + Docker 沙箱做代码漏洞挖掘与 PoC 验证的平台

135 阅读7分钟

DeepAudit:用 Multi-Agent + Docker 沙箱做代码漏洞挖掘与 PoC 验证的平台

一、开源项目简介

图片

DeepAudit

DeepAudit 是一个基于 Multi-Agent 协作架构的代码安全审计平台:导入项目后,多智能体自动协作完成审计、并在 Docker 安全沙箱里执行 PoC 验证,最后输出可导出的审计报告。

  • 适合谁:安全工程师 / 开发者 / 运维 / 架构师(想把审计流程“跑起来”并可复现的人)
  • 典型场景:
    • 新项目上线前:做一次深度代码安全审计 + 验证真伪
    • 外包/第三方交付:快速筛出可验证的高风险问题
    • 私有环境:用本地模型(Ollama)审计敏感代码(以仓库说明为准)

二、开源协议

  • AGPL-3.0(以仓库 LICENSE 为准)

三、界面展示(如有 UI)

图片 Agent 审计入口:进入多智能体深度审计流程

图片 审计流日志:实时查看 Agent 执行过程

图片 仪表盘:项目安全态势概览

图片 报告示例:支持导出 PDF / Markdown / JSON(README 说明图为“快速模式”,非 Agent 模式报告)

四、功能概述

1) Multi-Agent 深度审计(核心)

  • 是什么:由多个智能体协作完成“规划 → 信息收集 → 漏洞挖掘 → PoC 验证 → 报告生成”的完整流程。
  • 怎么做:README 描述的 Agent 分工包括 Orchestrator / Recon / Analysis / Verification,由 Orchestrator 编排任务并汇总结果。
  • 注意事项(依赖/权限):
    • 需要配置 LLM(云端平台或本地 Ollama),否则无法进行 LLM 驱动分析。
    • Agent 模式依赖 Redis(作为任务队列),部署时通常与后端一同启动。

2) Docker 沙箱 PoC 验证(减少“只看不证”)

  • 是什么:对疑似漏洞自动生成并执行 PoC,在隔离环境里验证是否可利用。
  • 怎么做:后端通过 Docker 调用沙箱镜像执行验证(README/Compose 中包含沙箱镜像与开关)。
  • 注意事项(依赖/权限):
    • Docker Compose 配置里后端会挂载 /var/run/docker.sock(沙箱执行必需),这意味着后端容器需要能调用宿主机 Docker。
    • 沙箱网络是否禁用、资源限制等通过环境变量控制(以 backend/env.example 为准)。

3) RAG 知识库增强(降低误报/提升上下文理解)

  • 是什么:结合代码语义与漏洞知识库(CWE/CVE 等)做检索增强分析。
  • 怎么做:文档提到向量库与嵌入模型配置(如 ChromaDBEMBEDDING_PROVIDER/EMBEDDING_MODEL 等)。
  • 注意事项:
    • 嵌入模型是独立配置(不一定等同主 LLM),需要相应 Key/端点(以 backend/env.example 为准)。

4) 项目管理与导入(仓库/ZIP)

  • 是什么:支持 GitHub/GitLab/Gitea 导入项目,也支持上传 ZIP;适合多项目协同管理。
  • 怎么做:前端提供项目管理界面;后端通过 Token 拉取仓库内容(Token 配置见 backend/env.examplefrontend/.env.example 注释)。
  • 注意事项(外部依赖):
    • 拉取私有仓库通常需要 Token;Token 权限要求以 README 的说明为准。

5) 即时分析(贴代码/传文件快速出结果)

  • 是什么:对代码片段或文件进行快速分析,适合作为“临时排查入口”。
  • 怎么做:UI 页面提供粘贴/上传能力,调用后端 API 输出结果(前端 API 基础路径见 frontend/.env.example)。
  • 注意事项:
    • 依然依赖 LLM 可用性与调用额度;涉及敏感代码时建议使用本地模型(以仓库说明为准)。

6) 报告导出与可视化配置

  • 是什么:报告支持导出 PDF / Markdown / JSON;运行时可在浏览器中配置 LLM 等参数(README 提到“无需重启服务”)。
  • 怎么做:后端生成报告并提供导出;前端提供管理页面进行运行时配置。
  • 注意事项:
    • 报告格式、导出入口与权限机制以实际 UI/README 为准。

五、技术选型

以下来自 README 的技术徽章、致谢列表与文档描述;更细的版本号以仓库文件为准。

  • 后端:Python · FastAPI · Uvicorn
  • 前端:React · TypeScript · Vite
  • 数据:PostgreSQL
  • 队列/缓存:Redis
  • RAG/向量库:ChromaDB(文档提到向量库与持久化目录)
  • LLM/Agent 相关:LangChain · LangGraph · LiteLLM(README 致谢/说明)
  • 代码解析:Tree-sitter(README 致谢)
  • 安全工具集成(文档提到):Semgrep · Bandit · Gitleaks · TruffleHog · OSV-Scanner
  • 容器化:Docker · Docker Compose(含独立 sandbox 镜像;前端容器为 Nginx 承载)

六、如何使用项目

下面优先给出 README 中可复制运行的路径;细节参数与更多选项以仓库 README/文档为准。

0) 启动前准备(必须)

  • 准备一个可用的 LLM 配置:
    • 云端平台:需要 LLM_PROVIDERLLM_API_KEY(以及可选的 LLM_BASE_URL 中转站)
    • 本地模型:文档提到支持 Ollama(需要本地 Ollama 服务可访问)
  • 宿主机需要 Docker:
    • Agent 的 PoC 验证会用到 Docker 沙箱(Compose 中后端需要访问 Docker socket)

1) Docker Compose(“一行命令部署”,README 推荐)

README 给出的方式是直接把生产 Compose 通过管道喂给 docker compose

curl -fsSL https://raw.githubusercontent.com/lintsinghua/DeepAudit/v3.0.0/docker-compose.prod.yml | docker compose -f - up -d

建议在执行前通过环境变量提供 LLM 配置(避免使用 Compose 里的默认占位):

# 示例:把 Key 作为环境变量注入(变量名以 compose 文件为准)
LLM_PROVIDER=openai LLM_MODEL=gpt-4o LLM_API_KEY="your-api-key" \
  curl -fsSL https://raw.githubusercontent.com/lintsinghua/DeepAudit/v3.0.0/docker-compose.prod.yml | docker compose -f - up -d
  • 默认地址:http://localhost:3000
  • 后端端口(生产 compose 显式暴露):8000:8000(即 http://localhost:8000
  • 查看状态:
docker compose ps
  • 查看日志:
docker compose logs -f

国内加速部署(README 提供)

LLM_PROVIDER=openai LLM_MODEL=gpt-4o LLM_API_KEY="your-api-key" \
  curl -fsSL https://raw.githubusercontent.com/lintsinghua/DeepAudit/v3.0.0/docker-compose.prod.cn.yml | docker compose -f - up -d

README 说明:国内加速方案将 ghcr.io 替换为 ghcr.nju.edu.cn(以仓库为准)。

2) Docker Compose(克隆代码后启动)

# 1. 克隆项目
git clone https://github.com/lintsinghua/DeepAudit.git && cd DeepAudit

# 2. 配置后端环境变量
cp backend/env.example backend/.env
# 编辑 backend/.env,填入你的 LLM API Key 等配置

# 3. 一键启动
docker compose up -d
  • 默认地址:http://localhost:3000
  • 注意:仓库的 docker-compose.yml 中后端会执行数据库迁移并以 --reload 启动(偏开发体验,具体以文件为准)。

3) 手动构建(源码开发,README 给出的流程)

环境要求(README 明确)

  • Python 3.11+
  • Node.js 20+
  • PostgreSQL 15+
  • Docker(用于沙箱)

3.1 启动数据库与依赖服务

docker compose up -d redis db adminer

3.2 启动后端(FastAPI)

cd backend
cp env.example .env

# 使用 uv 管理环境(README 推荐)
uv sync
source .venv/bin/activate

uvicorn app.main:app --reload

3.3 启动前端(React)

cd frontend
cp .env.example .env

pnpm install
pnpm dev

3.4 拉取沙箱镜像(开发模式)

# 标准拉取
docker pull ghcr.io/lintsinghua/deepaudit-sandbox:latest

# 国内加速(南京大学镜像站)
docker pull ghcr.nju.edu.cn/lintsinghua/deepaudit-sandbox:latest

七、二次开发注意事项

1) 环境依赖版本

  • Python:3.11+(README)
  • Node.js:20+(README)
  • PostgreSQL:15+(README)
  • Docker:用于 PoC 沙箱验证(README)

其他依赖的精确版本(如 Python/Node 依赖树)需要从仓库的依赖文件进一步确认;本文未展开,以仓库为准。

2) 本地开发启动方式(前后端)

  • 后端配置入口:backend/.env(由 backend/env.example 复制)
  • 前端配置入口:frontend/.env(由 frontend/.env.example 复制)
  • 后端启动:uvicorn app.main:app --reload(README)
  • 前端启动:pnpm dev(README)
  • 前端 API 基础路径:VITE_API_BASE_URL(见 frontend/.env.example,默认 /api/v1

3) 常见坑(3 条内)

  • Docker socket 权限:Compose 中后端挂载 /var/run/docker.sock 用于沙箱执行;宿主机 Docker 权限不足会导致验证阶段失败(以日志为准)。
  • LLM/嵌入模型配置:LLM_API_KEYEMBEDDING_* 等为空或不可用时,Agent/RAG 能力会受影响(以 backend/env.example 为准)。
  • 代理/网络问题:docker-compose.prod.yml 中显式清空了 HTTP_PROXY/HTTPS_PROXY 等变量;如果你的环境依赖代理访问外部 LLM,需要按实际情况调整(以仓库部署说明为准)。

八、目录结构与主要文件(可选)

结构来自 README 的“项目代码结构”示例与仓库根目录文件清单(以仓库为准)。

DeepAudit/
├── backend/                        # Python FastAPI 后端
│   ├── app/
│   │   ├── agents/                 # Multi-Agent 核心逻辑(orchestrator/recon/analysis/verification)
│   │   ├── core/                   # 配置与沙箱接口等
│   │   ├── models/                 # 数据库模型
│   │   └── services/               # RAG / LLM 服务封装
│   ├── tests/                      # 单元测试(如有)
│   └── env.example                 # 后端配置模板(复制为 backend/.env)
├── frontend/                       # React + TypeScript 前端
│   ├── src/                        # 页面、组件、状态管理等
│   └── .env.example                # 前端配置模板(复制为 frontend/.env)
├── docker/
│   ├── sandbox/                    # 沙箱镜像构建(PoC 验证依赖)
│   └── postgres/                   # 数据库初始化相关(如有)
├── docs/                           # 文档(如 AGENT_AUDIT / LLM_PROVIDERS 等)
├── docker-compose.yml              # 克隆源码后的 compose(包含本地构建与开发配置)
├── docker-compose.prod.yml         # 生产 compose(README 提供“一行命令部署”)
├── docker-compose.prod.cn.yml      # 国内镜像加速版 compose
└── LICENSE                         # AGPL-3.0

九、源码地址

  • GitHub:https://github.com/lintsinghua/DeepAudit

补充:项目还提供了文档与示例链接(例如 README 中的报告示例站点等),以仓库 README 为准。