训练. 攻破. 防御. AI系统。
一个用于AI安全培训、红/蓝队对抗、CTF、基准测试和研究的开源平台。 100%本地运行。无需云服务、无付费API、数据不会离开您的机器。
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秒。
DVAP是一个开源的AI安全研究、培训、基准测试和红队对抗平台,旨在帮助安全专业人员、AI工程师、研究人员、学生和组织了解现代AI系统如何失效以及如何防御。
DVAP专为AI时代而构建,提供刻意设计为易受攻击的AI应用、Agent、RAG系统、MCP集成以及特定领域环境,可供攻击、分析、基准测试和加固。
与基于云端的AI演练场不同,DVAP完全在您自己的机器上运行。
无需云。无需订阅。无API成本。无供应商锁定。
现代AI应用引入了全新的攻击面:
然而,目前没有任何单一平台能让研究人员在同一个地方安全地学习、实践、基准测试和验证这些攻击。
DVAP旨在成为AI安全教育、研究和实验的权威开源平台。
DVAP是首批将动手AI攻击实验室、本地LLM基准测试、CTF挑战和专业报告整合到单一自托管环境中的平台之一。
AI安全实验室 15个刻意设计的易受攻击实验室,涵盖真实世界的AI攻击技术。
研究工作台 检查提示、记忆、工具调用、检索文档、Agent操作和攻击链。
安全基准测试 针对AI安全攻击套件评估本地和外部模型。
夺旗赛(CTF) 通过引导式挑战、flag、提示和逐步演练学习AI安全。
报告引擎 生成映射到OWASP LLM Top 10、MITRE ATLAS、CWE和CVSS的专业发现与基准测试报告。
100%本地 在您自己的机器上运行所有内容。您的提示、数据、发现和实验永远不会离开您的环境。

15个容器化实验室,每个都包含flag、提示、逐步演练以及OWASP LLM Top 10 + MITRE ATLAS映射。
每个实验室都在隔离的Docker容器中运行,并拥有独立的Ollama后端LLM端点。
DVAP与大型语言模型应用OWASP Top 10保持一致。每个类别映射到一个或多个专用实验室。
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、前端、Nginxdvap-labs (172.21.0.0/24) - 实验室容器和Ollama实验室容器只能访问Ollama,无法访问内部网络上的其他任何内容。它们无法访问PostgreSQL、Redis或Qdrant。
已知权衡: API容器挂载了 /var/run/docker.sock 以便按需创建和停止实验室容器(Docker-out-of-Docker)。这使API进程获得与宿主机Docker守护进程等效的root权限。
这是一个有意为之的设计决策。DVAP是面向安全研究和培训的本地单用户安装,而非多租户服务。接受这一权衡是因为:
如果您在共享或联网环境中部署DVAP,请将socket挂载替换为rootless Docker socket或Podman socket(/run/user/1000/podman/podman.sock),并相应限制API的网络访问。
实验室实例通过Redis TTL键在1小时后自动停止。调用 POST /api/v1/instances/cleanup 可触发提前清理。
flag提交速率限制为每个会话令牌每60秒窗口最多15次尝试。
所有变量请参阅 .env.example。在任何联网部署前需要更改的关键变量:
SECRET_KEY= # 用于HMAC签名的强随机值
POSTGRES_PASSWORD= # 更改默认值
REDIS_PASSWORD= # 更改默认值
一条命令即可将您的安装更新到最新:
make upgrade
该命令执行 git pull,然后重建并重启所有容器。每次API容器启动时都会自动运行数据库迁移。
没有 make 时:
git pull
docker compose up -d --build
.env 文件diff .env .env.example
# 开发模式(默认)- 自动加载 docker-compose.override.yml
# API和前端热重载,源码以卷方式挂载
docker compose up -d
# 生产模式 - 构建镜像,无卷挂载,4个uvicorn工作进程
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:<your-postgres-password>@localhost:5432/dvap_test
cd backend
pip install -e ".[dev]"
pytest
想要为路线图做贡献?请提交issue或发起讨论。
DVAP由Sonu Chaudhary开发和维护。
欢迎社区贡献,并遵循贡献指南进行管理。长期方向通过GitHub Issues和Discussions推动。实验室新增、功能提案和路线图意见均公开审查。
不存在单点故障风险:该仓库在Apache 2.0下开源,社区可随时fork。
有关如何添加实验室、运行测试和提交pull request,请参阅CONTRIBUTING.md。
Apache 2.0 - 完整文本请参阅LICENSE。
| DVAP | DVWA | HackTheBox | Gandalf (Lakera) | Blog Posts / Papers |
|---|
| AI特定漏洞 | 是 | 否 | 部分 | 部分 | 是(仅理论) |
| 本地运行,无需云 | 是 | 是 | 否 | 否 | 不适用 |
| 15个专用AI实验室 | 是 | 否 | 否 | 否 | 否 |
| LLM基准测试引擎 | 是 | 否 | 否 | 否 | 否 |
| 带flag的CTF | 是 | 是 | 是 | 否 | 否 |
| OWASP LLM Top 10覆盖 | 完整 | 否 | 部分 | 部分 | 各不相同 |
| MITRE ATLAS映射 | 是 | 否 | 否 | 否 | 各不相同 |
| 报告生成 | 是 | 否 | 否 | 否 | 否 |
| 研究工作台 | 是 | 否 | 否 | 否 | 否 |
| Agent和MCP安全 | 是 | 否 | 否 | 否 | 否 |
| 免费开源 | 是 | 是 | 部分 | 否 | 是 |
⚗️ AI安全实验室 15个容器化的易受攻击AI环境,涵盖所有主要攻击类别 |
🚩 CTF挑战 映射到OWASP LLM Top 10和MITRE ATLAS的flag、提示和逐步演练 |
📊 基准测试中心 针对提示注入、越狱和数据外泄套件评估本地LLM |
🔬 研究工作台 完整记录提示、记忆、工具调用和Agent行为的追踪 |
| 实验室 | 难度 | OWASP LLM | MITRE ATLAS |
|---|
| 提示注入 | 初级 | LLM01 | AML.T0051, AML.T0054 |
| 记忆投毒 | 中级 | LLM02 | AML.T0054 |
| RAG投毒 | 中级 | LLM02, LLM03 | AML.T0020, AML.T0043 |
| 工具输出注入 | 中级 | LLM07 | AML.T0054, AML.T0068 |
| MCP安全 | 高级 | LLM07 | AML.T0068 |
| 浏览器Agent安全 | 高级 | LLM07, LLM09 | AML.T0054 |
| 多Agent安全 | 高级 | LLM08 | AML.T0054 |
| 自主Agent安全 | 高级 | LLM08, LLM09 | AML.T0054 |
| 数据外泄 | 高级 | LLM06 | AML.T0057, AML.T0058 |
| Agent身份与信任滥用 | 高级 | 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 |
| 类别 | 名称 | 实验室 | 状态 |
|---|
| LLM01 | 提示注入 | 提示注入、AI银行平台、AI医疗环境 | 已覆盖 |
| LLM02 | 数据和记忆投毒 | 记忆投毒、RAG投毒 | 已覆盖 |
| LLM03 | 供应链和训练数据风险 | RAG投毒、AI供应链安全、AI开发者平台 | 已覆盖 |
| LLM04 | 模型拒绝服务 | 计划中 (v1.2) | |
| LLM05 | 不安全的供应链 | AI供应链安全 | 已覆盖 |
| LLM06 | 敏感信息泄露 | 数据外泄、AI银行平台、AI医疗环境、多租户AI SaaS | 已覆盖 |
| LLM07 | 不安全的插件设计 | 工具输出注入、MCP安全、浏览器Agent安全、AI开发者平台 | 已覆盖 |
| LLM08 | 过度自主性 | 多Agent安全、自主Agent安全、Agent身份与信任滥用 | 已覆盖 |
| LLM09 | 过度依赖 | 浏览器Agent安全、自主Agent安全 | 已覆盖 |
| LLM10 | 模型窃取 | 计划中 (v1.2) |
| 服务 | 端口(内部) | 用途 |
|---|
| PostgreSQL | 5432 | 主数据存储 |
| Redis | 6379 | 速率限制、实例TTL |
| Qdrant | 6333 | 对发现进行语义搜索 |
| Ollama | 11434 | 本地LLM推理 |
| API | 8000 | FastAPI后端 |
| Web | 3000 | Next.js前端 |
| Nginx | 8080(宿主机) | 反向代理 |