camPetrey/guardrailed-support-chatbot
GitHub: camPetrey/guardrailed-support-chatbot
一个本地运行的防御型客户支持聊天机器人,通过 Llama Guard 和 NeMo Guardrails 多层防护抵御提示注入与数据外泄攻击,专为 CTF 蓝队防御场景设计。
Stars: 0 | Forks: 0
# Sentinel Supply — 防御型支持聊天机器人(CTF 蓝队)
这是一个为虚构的在线安全科技零售商设计的客户支持聊天机器人。它在处理日常支持问题时确实非常实用,同时能够抵御黑盒红队试图提取一条隐藏客户记录(即 flag)的行为。有关完整的设计和威胁模型,请参阅 `CLAUDE.md`。
通过 [Ollama](https://ollama.com) **完全在本地**运行,因此其行为在交接后是固定且可复现的——无需 API 密钥,运行时无需网络,也没有模型漂移。
## 前置条件
有两种类型的依赖,需分别处理:
| 依赖 | 内容 | 安装 |
|---|---|---|
| 原生 runtime + 模型 | Ollama + `gemma2:2b` + `llama-guard3:1b` (~3GB) | `./setup.sh` |
| Python 包 | `requests` 等 | `pip install -r requirements.txt` |
## 设置
```
./setup.sh # installs Ollama, pulls models
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
```
## 运行
```
python -m app.chatbot # interactive support chat
python -m app.chatbot --once "your message" # single message, prints reply
```
## 配置
所有调节参数都在 `app/config.py` 中,并且可以通过环境变量(`BOT_MODEL`、`GUARD_MODEL`、`OLLAMA_HOST`、`BOT_TEMPERATURE` 等)进行覆盖。
## 构建状态
- [x] **阶段 1** — 纯机器人 + 人设 + 10 条记录 + 单用户逻辑
(无防御;已验证在直接询问时会泄露 flag,并且能以正确的角色设定回答良性的支持问题)
- [x] **阶段 2** — 独立的输出过滤器 `app/filter.py` (THE WALL) +
单元测试(`tests/test_filter.py`,30 个测试通过)。涵盖明文、
反转、Unicode/同形字、base64/base32/十六进制/二进制/八进制/十进制
码点、URL 编码以及数字交错/拼写输出。
已验证在 15 个良性支持回复中零误报。
- [ ] 阶段 3 — 将过滤器接入 NeMo 输出 rail
- [ ] 阶段 4 — Llama Guard 输入层
- [ ] 阶段 5 — 自测攻击集
- [ ] 阶段 6 — 良性回归(15 个指导提示词)
标签:AI安全, AI风险缓解, Chat Copilot, DLL 劫持, LLM应用防护, Prompt注入防御, 大语言模型, 客户服务机器人, 本地部署, 逆向工具