rcalabrog/LLM-RedTeam-Lab
GitHub: rcalabrog/LLM-RedTeam-Lab
这是一个本地优先的LLM安全测试实验室,旨在通过确定性规则评估提示注入、越狱攻击及防御措施的有效性。
Stars: 0 | Forks: 0
# LLM Red Team Lab

**LLM Red Team Lab** 是一个本地优先的安全测试实验室,用于评估易受攻击和受防御保护的 LLM 目标上的越狱、提示注入、提示泄露及防御有效性。
它提供了完整的工作流,用于运行确定性的对抗性活动、比较易受攻击的目标与受防御保护的目标、使用透明规则评估结果,并将活动历史持久化保存到 SQLite 中。
## 1. 项目概述
LLM Red Team Lab 让您能够:
- 针对可配置的本地目标运行对抗性提示活动。
- 通过可切换的防御措施,对比基线易受攻击行为与受保护行为。
- 使用具有明确证据的确定性规则评估结果。
- 从本地 SQLite 存储中保存并重新打开历史活动。
该项目旨在展示实用的 AI 安全工程模式:可复用的目标抽象、模块化防御、确定性评估以及可复现的本地实验。
## 2. 功能特性
- 本地基于 Ollama 的模型运行时集成。
- 两种目标变体:`simple_vulnerable_chat`(有意设计的弱基线)和 `guarded_chat`(启用防御管道)。
- 可复用、可切换的防御管道(`input_filter`、`context_sanitizer`、`output_guard`)。
- 内置对抗性攻击库(多种类别、类型化 schema、可筛选的目录)。
- 确定性活动运行器,支持批量执行和部分故障处理。
- 基于规则的评估器,包含 `success`(成功)、`failed`(失败)和 `ambiguous`(模棱两可)分类。
- 每次攻击的推理产物:匹配的信号、匹配的规则、推理摘要和响应片段。
- 聚合指标以及类别/严重性细分。
- 用于保存活动历史的 SQLite 持久化。
- 统一的 FastAPI 工作流端点,便于前端编排。
- 用于运行配置、指标和结果检查的 Next.js 前端,达到作品集级就绪。
## 3. 前置条件和安装
### 前置条件
- Python `3.10+`
- Node.js `20+`
- 已安装 Ollama 并在 PATH 中可用
- 本地模型:`qwen3.5:9b` 和 `llama3.1:8b`
### 克隆
```
git clone https://github.com/rcalabrog/LLM-RedTeam-Lab
cd llm-red-team-lab
```
### 后端设置
```
cd backend
python -m pip install -r requirements.txt
copy .env.example .env
cd ..
```
### 前端设置
```
cd frontend
npm install
cd ..
```
### 拉取所需的 Ollama 模型
```
ollama pull qwen3.5:9b
ollama pull llama3.1:8b
```
### 运行后端
从仓库根目录:
```
uvicorn backend.app.main:app --reload
```
从 `backend/` 目录:
```
cd backend
uvicorn app.main:app --reload
```
### 运行前端
```
cd frontend
npm run dev
```
### 环境说明
- 后端环境文件:`backend/.env`
- 默认 SQLite 路径:`backend/data/llm_red_team_lab.db`
- 前端 API 基础路径默认为:`http://127.0.0.1:8000/api/v1`
- 可选的前端覆盖设置(在运行 `npm run dev` 前在 shell 中设置):
```
NEXT_PUBLIC_API_BASE_URL=http://127.0.0.1:8000/api/v1
```
## 3.1 LLM 要求
### 本项目使用的测试机器
该项目在本地具有以下配置的机器上进行了测试:
- **GPU:** NVIDIA GeForce GTX 1660 6GB
- **RAM:** 32GB DDR4 3200 C16
此配置足以运行项目中使用的当前本地模型配置,但生成速度和响应能力仍取决于量化级别、上下文大小,以及模型是否能完全装入 VRAM 或需要 CPU/RAM 卸载。
### 当前模型的最低要求
该项目目前使用:
- `qwen3.5:9b`
- `llama3.1:8b`
作为本地使用的实用基线:
- **`qwen3.5:9b`**
- **最低 VRAM:** 4-bit 量化版本约需 5GB
- **推荐系统内存:** 16GB+
- **推荐以获得更流畅的本地体验:** 6GB+ VRAM 和 16–32GB RAM
关于 Qwen 3.5 9B 的公共硬件指南指出,在 **4-bit 量化时大约需要 5GB VRAM**,而在 **BF16/全精度时大约需要 18GB**,随着上下文增长,内存需求也会增加。
- **`llama3.1:8b`**
- **实用最低 VRAM:** 量化本地使用约需 6–8GB
- **推荐系统内存:** 16GB+
- **推荐以获得更流畅的本地体验:** 8GB+ VRAM 和 16–32GB RAM
对于 7B–9B 级别的模型,本地硬件指南通常将量化推理所需的 VRAM 范围定在 **6–8GB VRAM**,更大的 VRAM 有利于提高速度并减少卸载。
### 如果您的 PC 配置较低 — 或者如果您想使用更强的模型
如果您的机器不满足这些要求,或者如果超过了这些要求并且您想尝试更大或更强大的本地模型,一个非常有用的资源是:
- **CanIRun.ai** — 一个硬件/模型兼容性检查器,可根据您的 GPU、VRAM、RAM 和浏览器检测到的硬件,估算您的机器可以运行哪些本地 AI 模型。
您可以在此使用它:
- `https://www.canirun.ai/`
### 在本项目何处更改模型
要切换到不同的本地模型,请更新后端环境配置:
```
backend/.env
```
## 4. 详细使用指南
1. 启动 Ollama:
```
ollama serve
```
2. 验证所需模型是否存在:
```
ollama list
```
3. 启动后端(`http://127.0.0.1:8000`)。
4. 启动前端(`http://localhost:3000`)。
5. 打开 UI 并检查左侧边栏中的就绪状态。
6. 查看启动时加载的目录数据(目标、防御、攻击类别)。
7. 选择目标:`simple_vulnerable_chat` 用于基线行为,或 `guarded_chat` 用于受防御保护的行为。
8. 可选地设置类别、严重性和最大攻击数。
9. 如果使用 `guarded_chat`,选择默认或自定义防御。
10. 使用 `Execute`(遵从“持久化”复选框)或 `Execute + Evaluate`(不保存)运行活动。
11. 检查聚合指标和类别细分。
12. 检查每次攻击的行,查看分类、执行状态和信号计数。
13. 选择任意一行以检查匹配的规则、推理摘要、摘录和防御元数据。
14. 从侧边栏重新打开保存的活动,以查看历史运行。
## 5. 技术栈(及选型理由)
| Technology | Used For | Why This Choice |
| ---------------------------- | ------------------------- | ---------------------------------------------------------------------------- |
| Python | Core backend language | Fast iteration, clear typing, strong ecosystem for API and security tooling. |
| FastAPI | HTTP API surface | Typed contracts, clean dependency injection, strong docs/OpenAPI support. |
| pydantic / pydantic-settings | Schemas and config | Strict request/response validation and explicit environment-driven config. |
| httpx | Provider HTTP integration | Async-friendly, reliable client for Ollama provider calls. |
| Ollama | Local model runtime | Local-first execution and reproducible testing without cloud dependency. |
| Qwen `qwen3.5:9b` | Default main model | Strong local-capable model for primary target execution. |
| Llama `llama3.1:8b` | Comparison model | Secondary model support for future differential analysis workflows. |
| SQLite (`sqlite3`) | Persistence | Zero-dependency local storage, explicit SQL, easy reproducibility. |
| Next.js 16 | Frontend app framework | App Router architecture, strong DX, production-ready React setup. |
| React 19 | UI layer | Composable component architecture for complex inspection workflows. |
| TypeScript | Frontend safety | Strong typing for API contracts and UI state consistency. |
| Tailwind CSS | Styling system | Fast iteration with consistent design tokens and utility-driven layout. |
| Framer Motion | UI motion | Subtle transitions for panel/metric feedback without heavy animation. |
## 6. 软件架构
### 后端模块结构
- `llm/`:provider 抽象、Ollama 实现、provider 注册表。
- `targets/`:目标应用抽象以及具体的易受攻击/受保护目标。
- `defenses/`:确定性、可切换的防御模块和管道编排。
- `attacks/`:具有筛选和查找功能的静态类型化攻击目录。
- `orchestration/`:批量活动执行和原始单次攻击结果捕获。
- `evaluation/`:确定性分类规则和聚合指标。
- `storage/`:用于活动持久化的 SQLite schema/init/repository。
- `api/`:精简的 HTTP 路由、共享依赖、统一的工作流端点。
### 前端结构
- `components/`:可复用的 UI 部分(侧边栏、配置器、表格、详情面板、指标)。
- `types/`:类型化的 API 和 UI 领域模型。
- `lib/`:类型化的 API 客户端和结果转换辅助工具。
- `app/page.tsx`:用于引导、状态和工作流操作的组合层。
### 高层流程
```
Frontend UI
-> workflow catalog / readiness / saved campaigns
-> execute-evaluate / execute-evaluate-save
FastAPI API
-> targets
-> defenses
-> attack catalog
-> campaign runner
-> deterministic evaluator
-> SQLite persistence
Stored artifacts
-> raw execution results
-> evaluation outcomes
-> aggregate metrics
-> historical campaign records
```
## 7. API 概述
前端使用的主要 MVP 端点:
| Endpoint | Purpose |
| ---------------------------------------------- | --------------------------------------------------------- |
| `GET /api/v1/workflows/catalog` | Bootstrap targets, defenses, attack category summary. |
| `POST /api/v1/workflows/execute-evaluate` | Run campaign and return evaluated result (not persisted). |
| `POST /api/v1/workflows/execute-evaluate-save` | Run, evaluate, and persist in one call. |
| `GET /api/v1/storage/campaigns` | List saved campaign summaries. |
| `GET /api/v1/storage/campaigns/{run_id}` | Retrieve one full saved campaign. |
| `GET /api/v1/health/readiness` | Local dependency readiness (`llm`, `sqlite`). |
| `GET /api/v1/health` | Basic app health. |
| `GET /api/v1/health/llm` | LLM provider availability check. |
## 8. 评估方法
MVP 评估器完全基于规则且具有确定性。它不使用 LLM 评判器。
对于每次攻击,评估器输出:
- `success`:对抗性目标似乎已达成。
- `failed`:目标似乎已安全抵抗。
- `ambiguous`:混合或不明确的信号。
- 匹配的信号(结构化指标)。
- 匹配的规则(带有证据的规则 ID)。
- 推理摘要(人类可读的解释)。
此设计有利于:
- 透明度(分类发生的原因),
- 可复现性(相同的输入,相同的输出),
- 可审计性(可追溯的证据和规则匹配)。
## 9. 当前限制
- 评估规则是启发式的,主要针对英语。
- 活动执行期间尚无流式进度更新。
- 无身份验证或多用户支持。
- 目标目前是简单的聊天目标,而非完整的 agentic/RAG 生产应用。
- 前端优先考虑桌面端;在此 MVP 中不考虑移动端的人体工学。
- 本地运行时和模型性能取决于主机硬件资源。
## 10. 未来改进
- 添加一个微型 RAG 易受攻击目标,用于间接提示注入场景。
- 扩展防御策略和策略粒度。
- 改进评估逻辑中的多语言规则覆盖。
- 添加趋势图表和历史对比分析。
- 添加可导出的运行报告(JSON/PDF)。
- 在 UI 中添加并排目标对比模式。
- 添加可选的流式执行进度事件。
## 11. 许可证
本项目在 MIT 许可证下获得许可。
详情请参见 [LICENSE](LICENSE)。
标签:AI安全, AI风险缓解, AV绕过, Chat Copilot, DLL 劫持, FastAPI, LLM, LLM评估, Local-first, Ollama, Prompt Leakage, Python, React, SQLite, Syscalls, TypeScript, Unmanaged PE, 人工智能安全, 合规性, 大语言模型, 安全工程, 安全插件, 安全测试, 安全靶场, 对抗攻击, 批量执行, 持久化存储, 提示词泄露, 攻击库, 攻击性安全, 敏感信息检测, 数据展示, 无后门, 本地优先, 模型防御, 确定性评估, 红队, 越狱检测, 逆向工具, 零日漏洞检测