sonuoffsec/DVAP
GitHub: sonuoffsec/DVAP
一款 100% 本地运行的开源 AI 安全训练与研究平台,提供覆盖 OWASP LLM Top 10 的漏洞靶场、CTF 挑战和 LLM 安全基准测试。
Stars: 17 | Forks: 5
# DVAP - Damn Vulnerable AI Platform
**训练。突破。防御。AI 系统。**
一个用于 AI 安全训练、红/蓝队对抗、CTF、基准测试和研究的开源平台。
100% 本地运行。无需云服务,无需付费 API,数据不离开你的机器。
[](LICENSE)
[](docker-compose.yml)
[](#labs)
[](#labs)
## 前置条件
- [Docker](https://docs.docker.com/get-docker/) 24+ 和 Docker Compose v2
- 至少 16 GB 内存(Ollama 会将模型加载到内存中;8 GB 仅适用于小模型)
- 20 GB 可用磁盘空间,用于基础镜像和至少一个模型
- x86-64 CPU;支持 Apple Silicon 和 ARM64,但未经测试
GPU 是可选的。Ollama 可以在 CPU 上运行,但没有 GPU 推理会很慢。
## 快速开始
```
git clone https://github.com/sonuoffsec/DVAP
cd DVAP
cp .env.example .env
docker compose up -d
```
当所有容器健康运行后,打开 `http://localhost:8080`。首次运行需要 30-60 秒。
## 目录
- [前置条件](#prerequisites)
- [快速开始](#quick-start)
- [什么是 DVAP?](#what-is-dvap)
- [为什么选择 DVAP?](#why-dvap)
- [DVAP 有何不同](#how-dvap-differs)
- [主要功能](#key-features)
- [平台概览](#platform-overview)
- [演示](#demo)
- [截图](#screenshots)
- [实验室](#labs)
- [OWASP LLM Top 10 覆盖范围](#owasp-llm-top-10-coverage)
- [架构](#architecture)
- [安全架构](#security-architecture)
- [服务](#services)
- [环境变量](#environment-variables)
- [升级](#upgrading)
- [开发与生产环境](#development-vs-production)
- [运行测试](#running-tests)
- [路线图](#roadmap)
- [治理](#governance)
- [贡献](#contributing)
- [许可证](#license)
## 什么是 DVAP?
DVAP 是一个开源的 AI 安全研究、训练、基准测试和红队对抗平台,旨在帮助安全专业人员、AI 工程师、研究人员、学生和组织了解现代 AI 系统是如何失效的,以及如何防御它们。
专为 AI 时代构建,DVAP 提供了存在故意漏洞的 AI 应用、代理、RAG 系统、MCP 集成以及特定领域的环境,可供攻击、分析、基准测试和保护。
与基于云的 AI 试验场不同,DVAP 完全在你的机器上运行。
**无需云服务。无需订阅。无 API 成本。无供应商锁定。**
## 为什么选择 DVAP?
现代 AI 应用引入了全新的攻击面:
- Prompt Injection
- Memory Poisoning
- RAG Poisoning
- Tool Abuse
- MCP Exploitation
- Multi-Agent Attacks
- Autonomous Agent Manipulation
- Data Exfiltration
- Identity and Trust Failures
- AI Supply Chain Risks
然而,目前没有哪个单一平台能够让研究人员在一个地方安全地学习、练习、进行基准测试和验证这些攻击。
DVAP 的目标是成为 AI 安全教育、研究和实验的权威开源平台。
## DVAP 有何不同
| | DVAP | DVWA | HackTheBox | Gandalf (Lakera) | 博客文章 / 论文 |
|---|---|---|---|---|---|
| 特定于 AI 的漏洞 | 是 | 否 | 部分 | 部分 | 是(仅理论) |
| 本地运行,无需云 | 是 | 是 | 否 | 否 | 不适用 |
| 15 个专用 AI 实验室 | 是 | 否 | 否 | 否 | 否 |
| LLM 基准测试引擎 | 是 | 否 | 否 | 否 | 否 |
| 包含 flag 的 CTF | 是 | 是 | 是 | 否 | 否 |
| OWASP LLM Top 10 覆盖范围 | 完整 | 否 | 部分 | 部分 | 不定 |
| MITRE ATLAS 映射 | 是 | 否 | 否 | 否 | 不定 |
| 报告生成 | 是 | 否 | 否 | 否 | 否 |
| 研究工作区 | 是 | 否 | 否 | 否 | 否 |
| Agent 和 MCP 安全 | 是 | 否 | 否 | 否 | 否 |
| 免费且开源 | 是 | 是 | 部分 | 否 | 是 |
DVAP 是首批在单一的自托管环境中,将实战 AI 攻击实验室、本地 LLM 基准测试、CTF 挑战和专业报告结合起来的平台之一。
## 主要功能
**AI 安全实验室**
15 个包含故意漏洞的实验室,涵盖真实的 AI 攻击技术。
**研究工作区**
检查 prompt、内存、工具调用、检索到的文档、代理动作和攻击链。
**安全基准测试**
针对 AI 安全攻击套件评估本地和外部模型。
**夺旗赛 (CTF)**
通过引导挑战、flag、提示和演练来学习 AI 安全。
**报告引擎**
生成映射到 OWASP LLM Top 10、MITRE ATLAS、CWE 和 CVSS 的专业发现和基准测试报告。
**100% 本地**
在你自己的机器上运行所有内容。你的 prompt、数据、发现和实验永远不会离开你的环境。
## 平台概览

## 🎬 演示
[](https://youtu.be/-hzp43YpKIQ)
▶ 训练。突破。防御。AI 系统。 · 点击观看完整的攻击演练
## 📸 截图
### 🖥️ 研究指挥中心
Research Command Center · Live platform activity, model benchmark leaderboard, flag capture progress, and service health in a single operational view.
### 🧩 平台模块
⚗️ AI Security Labs
15 containerized vulnerable AI environments across every major attack class
|
🚩 CTF Challenges
Flags, hints, and walkthroughs mapped to OWASP LLM Top 10 and MITRE ATLAS
|
📊 Benchmark Center
Evaluate local LLMs against prompt injection, jailbreak, and data exfiltration suites
|
🔬 Research Workspace
Full trace recording of prompts, memory, tool calls, and agent behavior
|
### 🛡️ 发现面板
Findings Dashboard · Track, triage, and document security findings with severity ratings, OWASP LLM Top 10 mapping, MITRE ATLAS techniques, and export-ready reports.
## 实验室
15 个容器化的实验室,每个都包含 flag、提示、演练以及 OWASP LLM Top 10 + MITRE ATLAS 映射。
| 实验室 | 难度 | OWASP LLM | MITRE ATLAS |
|---|---|---|---|
| Prompt Injection | 初级 | LLM01 | AML.T0051, AML.T0054 |
| Memory Poisoning | 中级 | LLM02 | AML.T0054 |
| RAG Poisoning | 中级 | LLM02, LLM03 | AML.T0020, AML.T0043 |
| Tool Output Injection | 中级 | LLM07 | AML.T0054, AML.T0068 |
| MCP Security | 高级 | LLM07 | AML.T0068 |
| Browser Agent Security | 高级 | LLM07, LLM09 | AML.T0054 |
| Multi-Agent Security | 高级 | LLM08 | AML.T0054 |
| Autonomous Agent Security | 高级 | LLM08, LLM09 | AML.T0054 |
| Data Exfiltration | 高级 | LLM06 | AML.T0057, AML.T0058 |
| Agent Identity and Trust Abuse | 高级 | LLM08 | AML.T0058 |
| AI 银行平台 | 中级 | LLM01, LLM06 | AML.T0043 |
| AI 医疗环境 | 高级 | LLM01, LLM06 | AML.T0043 |
| 多租户 AI SaaS | 高级 | LLM06 | AML.T0043 |
| AI 供应链安全 | 专家 | LLM03, LLM05 | AML.T0010, AML.T0048 |
| AI 开发者平台 | 专家 | LLM03, LLM07 | AML.T0010, AML.T0068 |
每个实验室都在独立的 Docker 容器中运行,并带有由 Ollama 支持的独立 LLM endpoint。
## OWASP LLM Top 10 覆盖范围
DVAP 与[大型语言模型应用的 OWASP Top 10](https://owasp.org/www-project-top-10-for-large-language-model-applications/) 保持一致。每个类别都映射到一个或多个专用实验室。
| 类别 | 名称 | 实验室 | 状态 |
|---|---|---|---|
| LLM01 | Prompt Injection | Prompt Injection、AI 银行平台、AI 医疗环境 | 已覆盖 |
| LLM02 | Data and Memory Poisoning | Memory Poisoning、RAG Poisoning | 已覆盖 |
| LLM03 | Supply Chain and Training Data Risks | RAG Poisoning、AI 供应链安全、AI 开发者平台 | 已覆盖 |
| LLM04 | Model Denial of Service | | 计划中 (v1.2) |
| LLM05 | Insecure Supply Chain | AI 供应链安全 | 已覆盖 |
| LLM06 | Sensitive Information Disclosure | Data Exfiltration、AI 银行平台、AI 医疗环境、多租户 AI SaaS | 已覆盖 |
| LLM07 | Insecure Plugin Design | Tool Output Injection、MCP Security、Browser Agent Security、AI 开发者平台 | 已覆盖 |
| LLM08 | Excessive Agency | Multi-Agent Security、Autonomous Agent Security、Agent Identity and Trust Abuse | 已覆盖 |
| LLM09 | Overreliance | Browser Agent Security、Autonomous Agent Security | 已覆盖 |
| LLM10 | Model Theft | | 计划中 (v1.2) |
15 个实验室涵盖了 10 个类别中的 8 个。LLM04 和 LLM10 已列入 v1.2 路线图。
## 架构
```
graph TB
User([User Browser]) --> Nginx[Nginx :8080]
Nginx --> Web[Next.js Frontend :3000]
Nginx --> API[FastAPI Backend :8000]
API --> PG[(PostgreSQL)]
API --> Redis[(Redis)]
API --> Qdrant[(Qdrant)]
API --> Sock[Docker Socket]
Sock --> L1[Lab Container]
Sock --> L2[Lab Container]
Sock --> LN[Lab Container ...]
L1 --> Ollama[Ollama :11434]
L2 --> Ollama
LN --> Ollama
subgraph dvap-internal network
Web
API
PG
Redis
Qdrant
end
subgraph dvap-labs network
L1
L2
LN
Ollama
end
```
实验室容器隔离在单独的 Docker 网络上。它们可以访问 Ollama 进行 LLM 推理,但无法访问数据库、Redis 或 Qdrant。
## 安全架构
### 网络隔离
两个 Docker 网络将实验室流量与平台基础设施分开:
- `dvap-internal` (172.20.0.0/24) - PostgreSQL、Redis、Qdrant、API、前端、Nginx
- `dvap-labs` (172.21.0.0/24) - 实验室容器和 Ollama
实验室容器可以访问 Ollama,但不能访问内部网络上的任何其他内容。它们无法访问 PostgreSQL、Redis 或 Qdrant。
### Docker Socket 访问
**已知的权衡:** API 容器挂载了 `/var/run/docker.sock` 以按需生成和停止实验室容器(Docker-out-of-Docker)。这赋予了 API 进程对宿主机 Docker daemon 的等同于 root 的访问权限。
这是一个刻意的设计决定。DVAP 是用于安全研究和训练的本地单用户安装,而不是多租户服务。接受这种权衡是因为:
- 没有可以通过网络访问的管理员界面来触发任意的容器操作
- 实验室容器资源限制(512 MB 内存,0.5 CPU)可防止资源耗尽
- 实验室镜像由本仓库中受控的 Dockerfile 构建
如果你要在共享或网络环境中部署 DVAP,请将 socket 挂载替换为无 root 权限的 Docker socket 或 Podman socket (`/run/user/1000/podman/podman.sock`),并相应地限制 API 的网络访问。
### 实例 TTL
通过 Redis TTL 键,实验室实例将在 1 小时后自动停止。调用 `POST /api/v1/instances/cleanup` 可触发提前清理。
### 速率限制
提交 flag 受到速率限制,每个会话 token 在 60 秒窗口内最多尝试 15 次。
## 服务
| 服务 | 端口 (内部) | 用途 |
|---|---|---|
| PostgreSQL | 5432 | 主数据存储 |
| Redis | 6379 | 速率限制、实例 TTL |
| Qdrant | 6333 | 对发现结果进行语义搜索 |
| Ollama | 11434 | 本地 LLM 推理 |
| API | 8000 | FastAPI 后端 |
| Web | 3000 | Next.js 前端 |
| Nginx | 8080 (宿主机) | 反向代理 |
## 环境变量
有关所有变量,请参见 `.env.example`。在任何网络部署之前需要更改的关键变量:
```
SECRET_KEY= # strong random value for HMAC signing
POSTGRES_PASSWORD= # change from the default
REDIS_PASSWORD= # change from the default
```
## 升级
一条命令即可让你的安装保持最新:
```
make upgrade
```
这会执行 `git pull`,然后重建并重启所有容器。每次 API 容器启动时,都会自动运行数据库迁移。
不使用 `make` 时:
```
git pull
docker compose up -d --build
```
### 自动升级的内容
- 后端代码和 API endpoint
- 前端仪表板
- 数据库 schema(Alembic 迁移- 实验室定义
### 绝不会触碰的内容
- 你的数据(发现结果、研究会话、基准测试结果、活动)
- 你的 `.env` 文件
### 检查新的环境变量
```
diff .env .env.example
```
## 开发与生产环境
```
# 开发 (默认) - 自动加载 docker-compose.override.yml
# API 和前端的热重载,源码以 volumes 方式挂载
docker compose up -d
# 生产 - 内置 images,无 volume 挂载,4 个 uvicorn workers
docker compose -f docker-compose.yml up -d
```
在生产环境运行之前构建镜像:
```
docker build -t dvap-api:latest --target production ./backend
docker build -t dvap-web:latest --target production ./frontend
```
## 运行测试
测试需要 PostgreSQL 实例。首先启动技术栈:
```
docker compose up -d postgres
export TEST_DATABASE_URL=postgresql+asyncpg://dvap:
@localhost:5432/dvap_test
cd backend
pip install -e ".[dev]"
pytest
```
## 路线图
### v1.1 - 扩展实验室覆盖范围
- [ ] LangChain Agent 安全实验室
- [ ] CrewAI Multi-Agent 安全实验室
- [ ] LlamaIndex RAG 安全实验室
- [ ] AutoGPT 风格的 Autonomous Agent 实验室
### v1.2 - 增强基准测试
- [ ] 支持 OpenAI 和 Anthropic API 模型
- [ ] 自定义基准测试套件构建器
- [ ] 跨模型版本的基准测试比较报告
- [ ] 针对模型安全的自动化回归测试
### v1.3 - 平台改进
- [ ] 具有会话隔离的多用户支持
- [ ] 用于研究工作区的 VS Code 扩展
- [ ] 用于 CI/CD 安全测试的 GitHub Actions 集成
- [ ] 实验室难度进阶系统
### v2.0 - AI 红队自动化
- [ ] 自动生成攻击链
- [ ] AI 辅助的漏洞发现
- [ ] 红队活动模板
- [ ] 与流行安全工具集成(Burp Suite、Metasploit)
想要为路线图做贡献?请提交 Issue 或发起讨论。
## 治理
DVAP 由 [Sonu Chaudhary](https://github.com/sonuoffsec) 开发和维护。
欢迎社区贡献,并受[贡献指南](CONTRIBUTING.md)的约束。长期方向由 GitHub Issues 和 Discussions 推动。实验室添加、功能提案和路线图意见将进行公开审查。
不存在单点故障风险:该仓库是基于 Apache 2.0 的开源项目,社区可随时对其进行 fork。
## 贡献
有关如何添加实验室、运行测试和提交 Pull Request 的信息,请参见 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 许可证
Apache 2.0 - 有关全文,请参见 [LICENSE](LICENSE)。标签:AI安全, AI风险缓解, Chat Copilot, CISA项目, DLL 劫持, Docker, MCP安全, 域名收集, 大语言模型, 安全防御评估, 搜索引擎查询, 测试用例, 漏洞演练, 自动化攻击, 请求拦截, 逆向工具, 靶场平台