bb1nfosec/dvai
GitHub: bb1nfosec/dvai
零成本开源的 AI 红队训练靶场,让安全研究者在真实大语言模型上练习对抗攻击技术,并通过变异引擎和社区 TTP 注册表持续进阶。
Stars: 0 | Forks: 0
DVAI — Damn Vulnerable AI Ecosystem
开源、零基础设施成本的 AI 红队训练靶场。
六个行动。玩家提供 API 密钥。Vercel 免费套餐。社区 TTP 注册表。
## 什么是 DVAI?
DVAI 是一个刻意设计的存在漏洞的 AI 生态系统,专为安全研究人员、红队操作员和 ML 工程师练习针对真实语言模型的对抗技术而设计。与传统的 CTF 平台不同,DVAI 完全专注于 **AI 特有的攻击面** —— 从对数概率侧信道到多阶段流水线利用。
每个操作都通过**玩家提供的 API 密钥**(Groq,Claude)进行路由。Vercel 部署本身的成本为**任何规模下均为 $0/月** —— 所有繁重的计算要么在玩家端进行,要么通过密钥代理。
### 设计原则
| 原则 | 实现 |
|-----------|---------------|
| **零基础设施成本** | Vercel 免费套餐 + 玩家 API 密钥。无服务器端 LLM 成本。 |
| **玩家自有密钥** | Groq 用于推理,Claude 用于变异引擎。您自带密钥。 |
| **真实模型,真实攻击** | 具有 logprob 访问权限的生产 LLM。无模拟器。 |
| **自我强化** | 变异引擎分析已解决的 TTP 并生成更难的变体。 |
| **开放研究** | 所有 TTP 导出为 markdown —— 由社区维护的注册表。 |
## 行动
### OP-ORACLE — Logprob 侧信道密钥提取 ⚡ 可玩
**攻击向量**:Token 概率分布分析(logprobs)
**获胜条件**:正确识别完整的秘密字符串
**评分**:调用效率与理论最小值的对比、技术新颖性、在模型变体间的可迁移性
**强化等级**:L1(8 个字符的字母数字) → L5(UUID)
技术细节
预言机系统提示词嵌入了一个机密秘密,并指示模型永远不要泄露它。然而,秘密在上下文窗口中的存在会微妙地影响每个生成 Token 的概率分布 —— 即使响应看起来毫不相关。玩家通过以下方式利用这一点:
- **频率分析**:聚合多个查询的 logprob 数据,以检测异常的 Token 概率
- **位置探测**:旨在激活秘密特定字符位置的查询模式
- **上下文泄露**:导致模型“思考”与秘密相邻的 Token 的问题
系统提示词在每个级别都会进行强化:
- L1:基本防护指令
- L2:+ 反概率分析感知
- L3:+ 响应随机化指令
- L4:密码短语格式(需要词级分析)
- L5:UUID(最大熵,最小的分布泄露)
### OP-SCHEMAPOISON — JSON-LD 上下文权限投毒 🔒
**攻击向量**:通过结构化数据注入进行知识图谱投毒
**目标**:Qdrant Cloud RAG pipeline
**约束**:最终输出中不得出现注入字符串
### OP-EIGENBLIND — 对抗性后缀优化 🔒
**攻击向量**:基于梯度的对抗性后缀生成(玩家端 Colab)
**验证**:Vercel 端点测试在提示变体中的迁移效果
**繁重计算**:玩家的 Colab notebook(无服务器成本)
### OP-OUROBOROS — 多阶段流水线利用 🔒
**攻击向量**:黑盒约束满足 + 多阶段推理利用
**约束**:单个文档必须同时满足验证器和执行器
**获胜条件**:推断出两个标准集并生成有效的 exploit
### OP-LONGCON — 20 轮语义操纵 🔒
**攻击向量**:在长时间对话中逐渐发生语义漂移
**防御**:每轮嵌入余弦相似度监视器
**约束**:无关键字,无单轮异常,在第 ≥20 轮时泄露
### OP-CARTESIAN — 变异引擎绕过 🔒
**攻击向量**:对强化系统本身的元利用
**防御**:双重 Claude 评估(变异器 + 裁判)
**获胜条件**:变异后的挑战在通过裁判审查后,在可衡量的程度上变得更容易
## 架构
```
┌─────────────────────────────────────────────────────────────┐
│ Vercel (Free) │
│ │
│ ┌──────────┐ ┌──────────────┐ ┌─────────────────────┐ │
│ │ Next.js │ │ API Routes │ │ SQLite / Vercel │ │
│ │ Frontend │──│ (Proxies) │──│ KV Store │ │
│ │ (React) │ │ │ │ (mutation log, │ │
│ │ │ │ │ │ session state) │ │
│ └──────────┘ └──────┬───────┘ └─────────────────────┘ │
│ │ │
│ ┌────────────────────┼──────────────────────┐ │
│ │ Player-Supplied API Keys (at runtime) │ │
│ │ │ │ │
│ │ ┌──────────┴──────────┐ │ │
│ │ │ │ │ │
│ │ ┌────▼─────┐ ┌─────▼────┐ │ │
│ │ │ Groq │ │ Claude │ │ │
│ │ │ (Infer.) │ │ (Mutation│ │ │
│ │ │ │ │ Engine) │ │ │
│ │ └──────────┘ └──────────┘ │ │
│ └───────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Qdrant Cloud (OP-SCHEMAPOISON) │ │
│ │ Player-supplied Qdrant Cloud instance │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
Player-Side Heavy Compute:
┌────────────────────────────┐
│ Google Colab Notebooks │
│ (OP-EIGENBLIND gradients) │
└────────────────────────────┘
```
### 成本模型
| 组件 | 提供商 | 每月成本 |
|-----------|----------|-------------|
| 托管 | Vercel 免费套餐 | $0 |
| 数据库 | SQLite(本地)/ Vercel KV | $0 |
| 推理 | 玩家的 Groq API 密钥 | 玩家的 Groq 免费套餐 |
| 变异 | 玩家的 Claude API 密钥 | 玩家的 Anthropic 账户 |
| RAG | 玩家的 Qdrant Cloud | 玩家的 Qdrant 免费套餐 |
| **总计(基础设施)** | — | **$0** |
## 技术栈
- **框架**:Next.js 16(App Router,Standalone 输出)
- **语言**:TypeScript 5(严格模式)
- **样式**:Tailwind CSS 4 + shadcn/ui(New York 变体)
- **数据库**:Prisma ORM + SQLite(本地),Vercel KV(生产)
- **状态**:Zustand 与 localStorage 持久化
- **图表**:Recharts(logprob 可视化)
- **图标**:Lucide React
- **推理**:Groq API(兼容 OpenAI,支持 logprob)
## 入门指南
### 前置条件
- Node.js 18+(或 Bun)
- [Groq](https://console.groq.com) API 密钥(免费)
- [Vercel CLI](https://vercel.com/docs/cli)(用于部署)
### 本地开发
```
# 克隆 repo
git clone https://github.com/YOUR_USERNAME/dvai.git
cd dvai
# 安装 dependencies
bun install
# 设置环境
cp .env.example .env.local
# 初始化 database
bun run db:push
# 启动 development server
bun dev
```
打开 [http://localhost:3000](http://localhost:3000)。系统将提示您创建一个代号并配置您的 Groq API 密钥。
### 部署到 Vercel
```
# 安装 Vercel CLI
npm i -g vercel
# 部署
vercel
# 设置 Vercel KV(可选,用于 production 持久化)
vercel env add KVC_REST_API_URL
vercel env add KVC_REST_API_TOKEN
```
**就是这样。** 无需配置外部服务。无需设置服务器端 API 密钥。玩家在运行时自带密钥。
## 项目结构
```
dvai/
├── src/
│ ├── app/
│ │ ├── api/
│ │ │ ├── session/route.ts # Player session CRUD
│ │ │ ├── oracle/
│ │ │ │ ├── init/route.ts # Initialize OP-ORACLE
│ │ │ │ ├── query/route.ts # Proxy to Groq with logprobs
│ │ │ │ ├── submit/route.ts # Validate guess + score
│ │ │ │ └── status/route.ts # Poll operation status
│ │ │ └── mutations/route.ts # TTP registry (JSON + MD)
│ │ ├── globals.css # Dark terminal theme
│ │ ├── layout.tsx # Root layout (dark default)
│ │ └── page.tsx # Main SPA shell
│ ├── components/
│ │ ├── layout/
│ │ │ ├── sidebar.tsx # Collapsible nav + hardening indicator
│ │ │ └── header.tsx # Session setup + API key dialog
│ │ ├── dashboard/
│ │ │ ├── ops-grid.tsx # 6 operation cards
│ │ │ └── metrics-panel.tsx # Operational metrics
│ │ ├── oracle/
│ │ │ ├── oracle-view.tsx # State router (briefing/active/solved)
│ │ │ ├── briefing-panel.tsx # Mission brief + rules
│ │ │ ├── challenge-panel.tsx # Chat interface + analysis workspace
│ │ │ ├── logprob-viewer.tsx # Token logprob table
│ │ │ ├── logprob-chart.tsx # Recharts frequency analysis
│ │ │ └── results-panel.tsx # Score breakdown + mutation
│ │ ├── ttps/
│ │ │ └── ttp-registry.tsx # TTP table + MD export
│ │ └── ui/ # shadcn/ui components
│ ├── lib/
│ │ ├── groq.ts # Groq API client (logprobs)
│ │ ├── oracle-engine.ts # Secret generation + scoring
│ │ ├── mutation-engine.ts # TTP analysis + mutation strategies
│ │ ├── kv.ts # KV abstraction (SQLite fallback)
│ │ └── db.ts # Prisma client
│ └── store/
│ └── session-store.ts # Zustand (persisted)
├── prisma/
│ └── schema.prisma # 5 models: Session, Op, Submission, Mutation, KV
├── public/
├── .env.example
├── vercel.json # Security headers + region config
├── next.config.ts
├── tailwind.config.ts
└── package.json
```
## 变异引擎
每次解决操作后,变异引擎会:
1. **分析 TTP** — 对技术进行分类(logprob-analysis、prompt-injection、side-channel 等)
2. **生成变异** — 根据操作类型应用 8 种强化策略之一
3. **记录 TTP** — 存储在 Vercel KV 中并附带完整元数据
4. **导出到注册表** — 所有 TTP 均可导出为社区维护的 markdown
### TTP 类别
| 类别 | 描述 |
|----------|-------------|
| `logprob-analysis` | 用于秘密提取的 Token 概率分布分析 |
| `prompt-injection` | 直接或间接的提示操作技术 |
| `statistical-extraction` | 用于推断隐藏信息的统计方法 |
| `context-manipulation` | 更改模型上下文以影响输出 |
| `adversarial-suffix` | 用于行为修改的优化后缀生成 |
| `semantic-drift` | 在多轮对话中逐渐进行的语义操纵 |
| `side-channel` | 通过非主要输出通道的信息泄露 |
| `social-engineering` | 通过对话技术操纵模型行为 |
| `model-fingerprinting` | 通过探测识别模型特征 |
| `constraint-inference` | 通过黑盒测试推断隐藏约束 |
## 评分系统
DVAI 不使用积分。运营指标衡量的是现实世界中红队的效力:
| 指标 | 权重 | 描述 |
|--------|--------|-------------|
| **调用效率** | 50% | 使用的 API 调用与该技术理论最小值的对比 |
| **时间得分** | 20% | 相对于操作复杂度的解决时间 |
| **可迁移性** | 30% | 该技术在跨不同模型变体时的效果 |
| **异常信号** | 扣分 | 操作期间触发的检测事件 |
| **技术新颖性** | 标志 | 变异日志中以前未见过的 TTP |
## 强化系统
每个操作有 5 个强化等级。解决操作会触发变异引擎,该引擎分析 TTP 并应用特定的强化策略:
```
L1 INITIATE → L2 ELEVATED → L3 ADVANCED → L4 EXPERT → L5 IMPOSSIBLE
Basic target Expanded char set Adversarial Passphrase Maximum entropy
Basic defenses + Anti-analysis + Randomization (word-level) (UUID format)
+ Anti-probing + Anti-pattern
```
专门针对 OP-ORACLE:
- **L1**:8 个字符的字母数字,基本防护指令
- **L2**:12 个带有特殊字符的字符串,反概率分析感知
- **L3**:16 个字符的十六进制,响应随机化 + 反模式检测
- **L4**:4 个词的密码短语(需要词级分析)
- **L5**:UUID 格式(最大熵,最小的分布泄露)
## 安全注意事项
- **玩家密钥存储在数据库中** — 在生产环境中,请使用带有静态加密的 Vercel KV,并考虑增加客户端加密
- **无身份验证系统** — 专为开放研究设计。私密部署请添加 NextAuth.js
- **速率限制** — 默认未实现(Groq 处理自己的速率限制)。生产环境请添加 middleware
- **CORS** — Vercel 负责处理此问题。所有 API 路由均为同源
- **输入验证** — 生产环境的 API 路由建议使用 Zod schema
## 路线图
- [x] 仓库脚手架 + 会话管理 + OP-ORACLE(L1-L5)
- [x] 变异引擎 + TTP 注册表
- [ ] OP-SCHEMAPOISON — Qdrant RAG pipeline 投毒
- [ ] OP-EIGENBLIND — 对抗性后缀 + Colab notebook
- [ ] OP-OUROBOROS — 多阶段流水线利用
- [ ] OP-LONGCON — 20 轮语义操纵 + AgentGuard
- [ ] OP-CARTESIAN — 变异引擎元利用
- [ ] 排行榜系统(匿名,基于技术)
- [ ] 用于自托管部署的 Docker compose
- [ ] 多人模式(在同一挑战上竞争 TTP)
## 许可证
MIT — 可自由用于研究、教育和授权的安全测试。
DVAI — 由研究人员构建,为研究人员服务。
零成本。真实模型。开放知识。
标签:AI安全, AI安全培训, Apex, Chat Copilot, CISA项目, Claude, CVE检测, Damn Vulnerable AI Ecosystem, DLL 劫持, DNS 反向解析, GitHub, IP 地址批量处理, Logprob侧信道, Mutation Engine, OPA, OSV, Sysdig, Tailwind CSS, TTP, TypeScript, Vercel, 大语言模型, 子域名变形, 安全插件, 实战演练, 实时处理, 密码管理, 对抗性攻击, 开源, 数据展示, 机器学习, 红队, 网络安全, 自动化攻击, 隐私保护, 零基础设施成本, 靶场