LiteshGhute/LLMGoat
GitHub: LiteshGhute/LLMGoat
LLMGoat 是一个基于 OWASP LLM Top 10 的攻击性 LLM 安全实战靶场,让安全从业者在本地环境中通过游戏化挑战学习大语言模型的攻防技术。
Stars: 18 | Forks: 4
## 什么是 LLMGoat?
LLMGoat 是一个**游戏化的实践利用环境**,旨在学习攻击性 LLM 安全。随着 LLM 在生产环境中的快速普及,开发者和安全团队往往低估了这些模型特有的攻击面 — 如 prompt 注入、数据投毒、系统 prompt 泄露等。
LLMGoat 让你能够在真实的场景中**安全地利用、观察和评估**这些攻击的影响 — 从而在风险波及生产环境之前充分理解它们。
## 🎥 演示
[](https://www.youtube.com/watch?v=LFmyKLSi3aY)

## 📋 OWASP LLM Top 10 挑战
| # | 漏洞 | 描述 |
|---|--------------|-------------|
| LLM01 | **Prompt 注入** | 通过注入对抗性指令来操纵模型的行为 |
| LLM02 | **敏感信息泄露** | 诱骗模型透露机密或隐私数据 |
| LLM03 | **供应链** | 利用第三方 LLM 组件或 pipeline 中的漏洞 |
| LLM04 | **数据与模型投毒** | 破坏训练数据或 fine-tuning 以改变模型行为 |
| LLM05 | **不当输出处理** | 利用下游对 LLM 生成输出的不安全处理 |
| LLM06 | **过度授权** | 滥用具有过高权限的 LLM agent 执行非预期操作 |
| LLM07 | **系统 Prompt 泄露** | 从模型中提取隐藏的系统级指令 |
| LLM08 | **向量与 Embedding 漏洞** | 通过 embedding 操纵攻击 RAG pipeline |
| LLM09 | **错误信息** | 诱使模型生成并传播虚假或有害内容 |
| LLM10 | **无限制消耗** | 利用资源耗尽或失控的推理成本 |
## 🚀 部署步骤
### 前置条件
- 已安装并运行 [Ollama](https://ollama.com/)
- Python 3.12
**拉取所需的模型:**
```
# 用于 inference 的 LLM
ollama pull mistral
# Embedding 模型 (all-MiniLM-L6-v2) — 首次运行时通过 gpt4all 自动下载
# 无需手动下载
```
### 设置
```
# 1. 进入 app 目录
cd app
# 2. 创建虚拟环境
python3.12 -m venv venv
# 3. 激活它
source venv/bin/activate # macOS / Linux
# venv\Scripts\activate # Windows
# 4. 安装 dependencies
pip3 install -r requirements.txt
# 5. 运行 app
python3 app.py
```
在浏览器中打开 **http://127.0.0.1:8000** 并开始利用。
## 🐳 Docker 设置
**步骤 1 — 在宿主机上启动 Ollama 并拉取 Mistral:**
```
ollama serve
ollama pull mistral
```
**步骤 2 — 构建并运行:**
```
docker compose up --build
```
在浏览器中打开 **http://localhost:8000**。
### 平台兼容性
| 平台 | 状态 |
|---|---|
| macOS (Apple Silicon) | ✅ 通过 Rosetta 模拟运行 |
| macOS (Intel) | ✅ 原生支持 |
| Windows (x86) | ✅ 原生支持 |
| Linux (x86_64) | ✅ 原生支持 |
## 🗂️ 项目结构
```
LLMGoat/
├── app/
│ ├── app.py # Main application entry point
│ ├── requirements.txt # Python dependencies
│ ├── llms/ # LLM integrations and configurations
│ ├── embeddings/ # Cached embedding vectors
│ ├── templates/ # HTML challenge templates
│ └── static/ # Static assets (CSS, JS)
├── assets/ # Images and media
├── solution-manuals/ # Step-by-step challenge walkthroughs
├── Dockerfile
├── docker-compose.yml
└── readme.md
```
## 📖 解决方案手册
[solution-manuals/](./solution-manuals/) 目录中提供了每个挑战的详细操作步骤。
| 挑战 | 操作步骤 |
|-----------|-------------|
| LLM01: Prompt 注入 | [查看](./solution-manuals/prompt-injection.md) |
| LLM02: 敏感信息泄露 | [查看](./solution-manuals/sensitive-info-disclosure.md) |
| LLM03: 供应链攻击 | [查看](./solution-manuals/supply-chain-compromise.md) |
| LLM04: 数据与模型投毒 | [查看](./solution-manuals/data-model-poisoning.md) |
| LLM05: 不当输出处理 | [查看](./solution-manuals/improper-output-handling.md) |
| LLM06: 过度授权 | [查看](./solution-manuals/excessive-agency.md) |
| LLM07: 系统 Prompt 泄露 | [查看](./solution-manuals/system-prompt-leakage.md) |
| LLM08: 向量与 Embedding 漏洞 | [查看](./solution-manuals/vector-embedding-weakness.md) |
| LLM09: 错误信息 | [查看](./solution-manuals/misinformation.md) |
| LLM10: 无限制消耗 | [查看](./solution-manuals/unbounded-consumption.md) |
## ⚠️ 免责声明
LLMGoat **仅严格用于教育和授权的安全研究目的**。所有的利用场景都仅限于本地环境。请勿将此处学到的技术用于您不拥有或未获得明确测试许可的系统。
专为安全从业者、红队人员以及任何对 LLM 攻击面充满好奇的人而构建。
标签:AI安全, AI风险缓解, Chat Copilot, CISA项目, DLL 劫持, OPA, OWASP LLM Top 10, 后端开发, 域名收集, 大语言模型, 安全, 请求拦截, 超时处理, 配置审计, 靶场