
# DVAI - 极易受攻击的人工智能
**动手式AI安全培训平台。**
通过实际攻击AI系统来学习如何黑客化AI系统。32个挑战。13个类别。无云依赖。
[](https://www.python.org/downloads/)
[](https://nodejs.org/)
[](https://genai.owasp.org/llm-top-10/)
[](LICENSE)
[](#challenge-categories)
[](#)
[快速入门](#-quick-start) · [挑战](#-challenge-categories) · [架构](#-architecture) · [贡献](CONTRIBUTING.md)
## 什么是DVAI?
DVAI是一个故意易受攻击的AI应用程序,你可以攻击真实(和模拟)的AI系统来学习它们是如何崩溃的。它涵盖了从提示注入到对抗性ML、模型供应链攻击、RAG利用和代理AI滥用的一切。
与阅读AI安全不同,DVAI让你**自己构建漏洞利用** - 注入提示、毒化训练数据、篡改模型、滥用AI代理,并观察它们失败。每个挑战都有一个要捕获的标志、当你卡住时的提示,以及一个故事使其变得有趣。
**无需GPU。无需互联网。无需Ollama。** 内置的模拟模式意味着你可以在2分钟内开始黑客攻击。
Dashboard - Progress Tracking
Challenges Categories
## 为什么选择DVAI?
| | DVAI | 其他平台 |
|---|---|---|
| **设置** | 2分钟,一条命令 | 复杂配置,云账户 |
| **离线** | 100%本地,无需互联网 | 通常依赖云 |
| **GPU需求** | 无(模拟模式) | 通常需要 |
| **挑战种类** | 13个类别中的32个 | 焦点狭窄,攻击类型较少 |
| **ML攻击** | 对抗性图像、pickle RCE、模型篡改 | 很少涉及 |
| **趣味性** | 故事、有趣的标志、动画 | 文档密集型 |
| **难度** | 每个挑战3个级别 | 静态或全局切换 |
| **API测试** | 包含兼容OpenAI端点 | 不可用 |
## 🚀 快速入门
### 一条命令
```
git clone https://github.com/offensiveai26/dvai.git
cd dvai
./start.sh
# Open http://localhost:3000
```
### Docker
```
docker compose up --build
# Open http://localhost:3000
```
启动一切,包括本地LLM。无需API密钥。
### 手动设置
```
# 终端 1 - 后端
cd backend
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python3 -m uvicorn app.main:app --port 8000 --reload
# 终端 2 - 前端
cd frontend
npm install && npm run dev
# Open http://localhost:3000
```
### 添加Ollama(可选 - 用于真实LLM攻击)
```
brew install ollama # macOS
ollama serve && ollama pull llama3.2
```
仪表板在连接时会显示绿色指示器。没有Ollama,一切都在模拟模式下运行。
## 🤖 模拟模式与Ollama
| 功能 | 模拟模式 | 带Ollama |
|---------|----------------|-------------|
| 所有32个挑战 | ✅ | ✅ |
| LLM挑战 | 模拟响应 | 真实LLM响应 |
| 设置时间 | 2分钟 | 5分钟 |
| 磁盘空间 | ~500 MB | ~4 GB(模型) |
| 真实性 | 适合学习 | 生产级真实 |
| GPU需求 | 无 | 无(CPU可用) |
**模拟模式**使用故意易受攻击的模拟LLM,对常见的攻击模式做出响应。非常适合学习。**Ollama模式**为你提供了一个真实的LLM来攻击 - 更真实、更不可预测。
## 🎯 挑战类别
| # | 类别 | 挑战 | OWASP | 你将攻击的内容 |
|---|----------|:---------:|-------|-------------------|
| 1 | 💉 提示注入 | 3 | LLM01 | 覆盖指令、劫持摘要器、越狱防护栏 |
| 2 | 💥 不安全输出 | 3 | LLM05 | 通过AI进行XSS、通过自然语言进行SQL注入、代码执行 |
| 3 | ☠️ 数据毒化 | 3 | LLM04 | 后门分类器、提取训练数据、成员推理 |
| 4 | 📦 供应链 | 2 | LLM03 | Pickle反序列化RCE、模型权重篡改 |
| 5 | 🔍 RAG攻击 | 3 | LLM08 | 毒化知识库、劫持检索、溢出上下文窗口 |
| 6 | 🤖 代理AI | 3 | LLM06 | 滥用文件读取代理、提升权限、劫持推理链 |
| 7 | 🎭 对抗性ML | 2 | N/A | 用噪声愚弄图像分类器、规避恶意软件检测器 |
| 8 | ⚡ 过度代理 | 3 | LLM06 | 利用过权限的AI、通过AI进行SSRF、逃离沙箱 |
| 9 | 🌍 现实世界 | 6 | LLM02 | 黑客攻击银行AI、泄露薪资、劫持航班、窃取考试 |
| 10 | 🔓 提示泄露 | 1 | LLM07 | 提取隐藏的系统提示和秘密配置 |
| 11 | 🤥 错误信息 | 1 | LLM09 | 让AI自信地产生幻觉,捕捉它撒谎 |
| 12 | ♾️ 无限消费 | 1 | LLM10 | 耗尽令牌预算、绕过速率限制 |
**总计:32个挑战** - 每个挑战3个难度级别(简单/中等/困难)= 93个独特的攻击场景。
## 🏗️ 架构
```
┌──────────────────────────────────────────────┐
│ Frontend (React + Tailwind) │
│ Cyberpunk UI + Terminal Interface │
├──────────────────────────────────────────────┤
│ Backend (Python + FastAPI) │
│ Challenge Engine + Progress Tracking │
├───────────┬──────────┬───────────┬───────────┤
│ LLM │ ML │ Agent │ RAG │
│ Attacks │ Attacks │ Attacks │ Attacks │
├───────────┼──────────┴───────────┼───────────┤
│ Ollama │ Simulated Models │ SQLite │
│ (optional)│ ChromaDB (RAG) │ (progress)│
└───────────┴──────────────────────┴───────────┘
```
## 🎮 功能
- **13个类别中的32个挑战**,涵盖LLM的OWASP Top 10
- **每个挑战3个难度级别** - 无防御→基本防护栏→加固
- **提示系统** - 逐步揭示
- **基于标志的验证** - 动态生成的标志,永远不会在源代码中
- **分数跟踪**和进度仪表板
- **模拟模式** - 每个挑战无需Ollama即可工作
- **兼容OpenAI的API** (`/v1/chat/completions`) - 测试你的安全工具
- **100%离线** - 完全在您的机器上运行
- **有趣** - 每个挑战都有一个故事、个性和胜利时的庆祝
## 📖 适合谁?
- **安全研究人员**探索AI攻击面
- **开发者**构建AI应用程序,希望了解风险
- **红队人员**将AI利用添加到他们的技能集
- **学生**动手学习ML/AI安全
- **CTF玩家**寻找AI特定的挑战
- **研讨会讲师**教授AI安全(见[贡献](CONTRIBUTING.md))
## ⚙️ 配置
| 环境变量 | 默认 | 描述 |
|---------------------|---------|-------------|
| `OLLAMA_URL` | `http://localhost:11434` | Ollama服务器URL |
| `OLLAMA_MODEL` | `llama3.1:8b` | 要使用的模型 |
| `DVAI_FLAG_SECRET` | `dvai-default-secret-change-me-in-prod` | 用于标志生成的密钥 |
| `DATABASE_URL` | `sqlite:///./dvai.db` | 数据库路径 |
## 🔧 故障排除
| 问题 | 解决方案 |
|---------|-----|
| **后端无法启动** | 检查是否已安装Python 3.11-3.13(3.14尚不支持),`pip install -r requirements.txt` |
| **前端空白页面** | 确保后端正在端口8000上运行 |
| **终端中“连接失败”** | 后端未运行 - 检查终端中的错误 |
| **未检测到Ollama** | 在单独的终端中运行 `ollama serve` |
| **挑战感觉太简单** | 切换到中等或困难难度 |
| **模拟模式响应很通用** | 尝试提示中的常见攻击模式 |
## 📁 项目结构
```
DVAI/
├── backend/ Python backend (FastAPI)
│ ├── app/
│ │ ├── main.py App entry point
│ │ ├── flags.py Dynamic flag generator (HMAC)
│ │ ├── llm.py Ollama client + simulation mode
│ │ ├── db.py Database setup
│ │ ├── models.py SQLAlchemy models
│ │ ├── api/ API routes
│ │ │ ├── challenges.py Challenge endpoints
│ │ │ ├── progress.py Progress tracking
│ │ │ ├── health.py Health check + Ollama status
│ │ │ └── openai_compat.py OpenAI-compatible API
│ │ └── challenges/ Challenge handlers (32 total)
│ │ ├── registry.py Challenge definitions
│ │ ├── prompt_injection/
│ │ ├── insecure_output/
│ │ ├── data_poisoning/
│ │ ├── supply_chain/
│ │ ├── rag/
│ │ ├── agentic/
│ │ ├── adversarial/
│ │ ├── excessive_agency/
│ │ ├── real_world/
│ │ ├── prompt_leakage/
│ │ ├── misinformation/
│ │ └── unbounded/
│ ├── requirements.txt
│ └── Dockerfile
├── frontend/ React frontend
│ ├── src/
│ │ ├── App.jsx Router
│ │ ├── api.js API client
│ │ ├── pages/
│ │ │ ├── Dashboard.jsx Home + category grid
│ │ │ ├── CategoryPage.jsx Challenge list
│ │ │ └── ChallengePage.jsx Terminal + hints + flag submit
│ │ └── components/
│ │ └── Layout.jsx Header + footer
│ ├── public/logo.svg
│ └── package.json
├── docker-compose.yml One-command Docker setup
├── start.sh Start backend + frontend
├── stop.sh Stop everything
├── CONTRIBUTING.md
├── SECURITY.md
└── LICENSE MIT
```
## 🛡️ 安全
DVAI故意易受攻击。漏洞是功能,不是错误。有关要报告的内容和不要报告的内容,请参阅[SECURITY.md](SECURITY.md)。
## 🤝 贡献
想添加挑战、修复错误或改进文档?请参阅[CONTRIBUTING.md](CONTRIBUTING.md)。
## ⚠️ 声明
DVAI故意易受攻击。**不要**将其部署在任何面向公众的服务器上。它仅设计用于本地教育用途。
## 👨💻 作者
由**Vivek Trivedi**开发与设计
## 📄 许可证
MIT许可证 - 有关详细信息,请参阅[LICENSE](LICENSE)。