redcaller/voice-goat
GitHub: redcaller/voice-goat
一款故意设计漏洞的语音代理靶场平台,帮助安全从业者通过 CTF 方式实战演练 OWASP LLM Top 10 相关的 AI 系统攻击技术。
Stars: 14 | Forks: 0
# VoiceGoat
[](https://genai.owasp.org/llm-top-10/)
[](https://opensource.org/licenses/MIT)
## 免责声明
**本应用存在故意设计的漏洞。** 它仅用于教育和安全培训目的。请勿在没有适当安全防护措施的情况下将其部署在生产环境中或暴露在公共互联网上。有关详细信息,请参阅[公共托管安全评估](docs/PUBLIC_HOSTING_SECURITY_ASSESSMENT.md)。
## 演示
[](https://www.youtube.com/watch?v=mnf5IpNUHg8)
## 概述
VoiceGoat 是一个模块化的存在漏洞的语音代理平台,涵盖了 [OWASP LLM 应用程序 Top 10](https://genai.owasp.org/llm-top-10/)。安全从业人员可以使用此平台来:
- 在安全的环境中了解 LLM 漏洞
- 针对语音代理练习红队技术
- 理解现实世界中的攻击向量
- 通过成功的漏洞利用捕获 flag(CTF 风格)
## 漏洞覆盖范围
| 服务 | OWASP 类别 | 漏洞 |
|---------|----------------|-----------------|
| **VoiceBank** | LLM01: 提示词注入 | 直接、间接、有效载荷分割、混淆 |
| **VoiceAdmin** | LLM06: 过度权限 | 过度功能、过度权限、过度自治 |
| **VoiceRAG** | LLM08: 向量/嵌入 | 跨租户泄漏、RAG 投毒、访问绕过 |
## 前置条件
- **Docker** 和 **Docker Compose** v2.0+(必需)
- **Python 3.11+**(可选,用于不使用 Docker 的本地服务开发)
- **Node.js 20+**(可选,用于不使用 Docker 的控制面板开发)
- **OpenAI API key**(可选,仅在使用 `LLM_PROVIDER=openai` 时需要)
## 快速开始
```
# 1. 克隆仓库
git clone https://github.com/redcaller/voice-goat.git
cd voice-goat
# 2. 创建环境文件
cp .env.example .env
# 如果要使用真实的 LLM provider,请编辑 .env(默认为 mock)
# 3. 启动所有服务
docker compose up -d
# 4. 验证服务状态正常
curl http://localhost:8001/health # VoiceBank
curl http://localhost:8002/health # VoiceAdmin
curl http://localhost:8003/health # VoiceRAG
# 5. 打开仪表板
open http://localhost:8000 # Via Nginx gateway (recommended)
# 或 http://localhost:4000 # 直接指向 Next.js
```
### 端口参考
| 端口 | 服务 | 描述 |
|------|---------|-------------|
| 8000 | Nginx Gateway | 统一入口(控制面板 + API 路由) |
| 8001 | VoiceBank | LLM01 挑战 |
| 8002 | VoiceAdmin | LLM06 挑战 |
| 8003 | VoiceRAG | LLM08 挑战 |
| 8004 | Voice Gateway | Twilio 语音集成 |
| 4000 | Dashboard | Next.js CTF 界面(直连) |
| 4001 | Grafana | 监控控制面板 |
| 5432 | Postgres | 数据库 |
| 6379 | Redis | 缓存 |
| 9200 | OpenSearch | 向量数据库 |
| 5601 | OpenSearch Dashboards | OpenSearch UI |
| 4566 | LocalStack | AWS 服务模拟 |
## 架构
```
┌─────────────────────────────────────────────────────────────┐
│ Docker Network │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ VoiceBank │ │ VoiceAdmin │ │ VoiceRAG │ │
│ │ (LLM01) │ │ (LLM06) │ │ (LLM08) │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ └────────────────┼─────────────────┘ │
│ ┌──────┴──────┐ │
│ │ Shared │ │
│ │ Library │ │
│ └──────┬──────┘ │
│ ┌───────────┼───────────┐ │
│ ┌────┴────┐ ┌────┴────┐ ┌───┴─────┐ │
│ │LLM (Mock│ │LocalStack│ │ Redis │ │
│ │/OpenAI/ │ │(DynamoDB │ │ │ │
│ │Bedrock) │ │ S3, SM) │ │ │ │
│ └─────────┘ └─────────┘ └─────────┘ │
└─────────────────────────────────────────────────────────────┘
```
有关包括数据流、网络拓扑和 Terraform 部署在内的完整详细信息,请参阅[架构深入解析](docs/ARCHITECTURE.md)。
## 项目结构
```
voice-goat/
├── services/ # Python FastAPI services
│ ├── common/ # Shared config, LLM, flags, logging
│ ├── voicebank/ # LLM01: Prompt Injection
│ ├── voiceadmin/ # LLM06: Excessive Agency
│ ├── voicerag/ # LLM08: Vector Weaknesses
│ └── voice_gateway/ # Twilio voice integration
├── dashboard/ # Next.js CTF scoreboard & chat UI
├── docker/ # Nginx, Postgres init, LocalStack init
├── terraform/ # AWS infrastructure as code
├── docs/ # Documentation & challenge walkthroughs
├── docker-compose.yml # Local development stack
├── pyproject.toml # Python dependencies & tool config
└── .env.example # Environment variable template
```
## 游戏化
每个漏洞都有一个相关的 flag:
```
FLAG{CATEGORY_TYPE_ID}
Example: FLAG{LLM01_DIRECT_001}
```
### 难度级别
- **简单**:明显的漏洞,几乎没有混淆
- **中等**:需要对漏洞有深入理解
- **困难**:需要链式攻击、自定义 payload 或深厚的知识
## LLM 提供商
VoiceGoat 支持多个 LLM 后端:
| 提供商 | 描述 | 成本 |
|----------|-------------|------|
| `mock` | 模拟响应(默认) | 免费 |
| `openai` | OpenAI API (GPT-4o, GPT-4o-mini) | 按使用付费 |
| `bedrock` | AWS Bedrock (Claude, Titan) | 按使用付费 |
通过 `.env` 进行配置:
```
# Mock 模式(默认)-- 免费,不需要 API 密钥
LLM_PROVIDER=mock
# OpenAI -- 真实的 LLM 响应
LLM_PROVIDER=openai
OPENAI_API_KEY=sk-your-key-here
OPENAI_MODEL=gpt-4o-mini
# AWS Bedrock -- 需要 AWS credentials
LLM_PROVIDER=bedrock
```
## 语音集成
VoiceGoat 通过 Twilio Media Streams 支持真实的电话呼叫。
```
# 1. 设置 OpenAI provider(语音处理需要)
export LLM_PROVIDER=openai
export OPENAI_API_KEY=sk-your-key
docker compose up -d
# 2. 使用 ngrok 暴露语音网关
ngrok http 8004
# 3. 配置 Twilio webhook 到你的 ngrok URL
# 4. 拨打你的 Twilio 号码!
```
详细说明请参阅 [Twilio 设置指南](docs/TWILIO_SETUP.md)。
## 语音模式
| 模式 | 描述 | 用例 |
|------|-------------|----------|
| `text` | 纯文本模拟(默认) | 本地开发,免费 |
| `speech` | 完整语音集成 | 结合 Twilio 的真实测试 |
| `both` | 混合模式 | 兼顾两者优势 |
通过环境变量设置:`SPEECH_MODE=text`
## 故障排除
## 文档
- [设置指南](docs/SETUP.md) -- 详细的安装和配置说明
- [架构](docs/ARCHITECTURE.md) -- 系统设计和数据流
- [挑战演练](docs/challenges/) -- 每个 flag 的提示和解决方案
- [Twilio 设置](docs/TWILIO_SETUP.md) -- 语音通话集成
- [模型注意事项](docs/MODEL_CONSIDERATIONS.md) -- 选择 LLM 提供商
- [贡献](CONTRIBUTING.md) -- 如何贡献
- [行为准则](CODE_OF_CONDUCT.md)
## 安全注意事项
- 仅在隔离环境中部署(本地 Docker 或私有 VPC)
- 部署到 AWS 时使用 VPN 访问
- 不要使用真实数据或生产凭证
- 监控是否存在意外暴露
- 请参阅[公共托管安全评估](docs/PUBLIC_HOSTING_SECURITY_ASSESSMENT.md)
## 参考资料
- [OWASP LLM Top 10](https://genai.owasp.org/llm-top-10/)
- [AWS LLM 安全指南](https://docs.aws.amazon.com/prescriptive-guidance/latest/agentic-ai-security/)
- [MITRE ATLAS](https://atlas.mitre.org/)
## 许可证
MIT 许可证 - 有关详细信息,请参阅 [LICENSE](LICENSE)。
服务启动失败 / 连接被拒绝
``` # 检查服务日志 docker compose logs voicebank # 重新构建并重启 docker compose down docker compose up -d --build ```Postgres 初始化失败
如果您以前运行过 VoiceGoat 并且 Postgres 数据卷已存在,初始化脚本将不会重新运行。请使用以下命令重置: ``` docker compose down -v # removes volumes docker compose up -d ```出现 "OPENAI_API_KEY not set" 错误
如果您没有 OpenAI 密钥,请确保您的 `.env` 文件中设置了 `LLM_PROVIDER=mock`(默认值)。Mock 模式不需要 API 密钥。控制面板显示 "Error connecting"
控制面板直接与服务端口 (8001-8003) 通信。请确保这些容器正在运行: ``` docker compose ps ``` 服务在启动后可能需要 10-20 秒才能变为健康状态。端口冲突
如果端口 8000-8004、4000-4001、5432、6379 或 9200 已被占用,请停止冲突的进程或编辑 `docker-compose.yml` 以重新映射端口。Apple Silicon / ARM 问题
所有使用的镜像都支持多架构或具有 ARM 变体。如果遇到问题,请尝试 `docker compose build --no-cache`。标签:AI安全, AI漏洞, Chat Copilot, CISA项目, DLL 劫持, Docker, Docker Compose, OPA, Prompt注入, RAG安全, Red Canary, VoiceGoat, 大语言模型, 安全培训, 安全测试, 安全防御评估, 搜索引擎查询, 攻击性安全, 测试用例, 漏洞演练, 红队评估, 网络安全, 语音代理, 请求拦截, 越权访问, 逆向工具, 隐私保护, 靶场