hwanchang00/ChatInject
GitHub: hwanchang00/ChatInject
一项针对LLM智能体的提示词注入攻击研究,通过滥用聊天模板结构实现隐蔽的多轮对话注入攻击。
Stars: 13 | Forks: 2
## ChatInject

ChatInject 是一种间接提示词注入攻击,它利用 LLM 智能体对结构化聊天模板的依赖性。通过将恶意载荷格式化为模仿本地聊天模板的形式,并扩展为基于说服的多轮对话来引导智能体,ChatInject 能够使智能体接受并执行原本可疑的指令。
## 快速开始
```
pip install agentdojo
```
如果您想使用提示词注入检测器,需要安装 `transformers` 扩展:
```
pip install "agentdojo[transformers]"
```
## 设置
### OpenRouter API 密钥
在运行基准测试之前,您需要设置 OpenRouter API 密钥:
```
export OPENROUTER_API_KEY="YOUR_API_KEY"
```
或者,您可以在项目根目录创建 `.env` 文件:
```
OPENROUTER_API_KEY=YOUR_API_KEY
```
要获取 API 密钥,请访问 [OpenRouter](https://openrouter.ai/) 并创建一个账户。
## 可用的攻击方法
以下攻击方法可用于使用 `qwen3-235b-a22b-2507` 进行测试:
- **`injecagent`**:默认纯文本注入攻击,将引人注目的前缀与注入任务作为纯文本连接
- **`injecagent_with_utility_system_multiturn_7`**:默认多轮攻击,嵌入说服性多轮对话,其中每轮都格式化为纯文本并连接成单个字符串
- **`chat_inject_qwen3`**:InjecPrompt + ChatInject 变体,应用模型特定的格式化,其中引人注目的前缀用系统角色标签包装,注入任务用用户角色标签包装,使用目标模型的聊天模板
- **`chat_inject_qwen3_with_utility_authority_system_multiturn_7`**:多轮 + ChatInject 攻击,结合说服性对话和模板利用,其中对话中的每轮都使用模型特定模板包装在相应的角色标签中
要查看其他可用模型,请查看 `src/agentdojo/models.py`。要查看其他可用攻击,请查看 `src/agentdojo/attacks/baseline_attacks.py`。
## 运行基准测试
首先,导航到 src 目录:
```
cd ./src
```
可以使用 [benchmark](src/agentdojo/scripts/benchmark.py) 脚本运行基准测试,使用 `qwen3-235b-a22b-2507`。有关如何使用该脚本的文档可以通过 `--help` 标志获取。
### 不同攻击方法的示例:
**1. 默认纯文本注入攻击(injecagent):**
```
export OPENROUTER_API_KEY="YOUR_API_KEY"
python -m agentdojo.scripts.benchmark -s banking -s slack -s travel \
--model "qwen/qwen3-235b-a22b-2507" \
--defense instructional_prevention \
--attack injecagent
```
**2. 多轮对话攻击(injecagent_with_utility_system_multiturn_7):**
```
export OPENROUTER_API_KEY="YOUR_API_KEY"
python -m agentdojo.scripts.benchmark -s banking -s slack -s travel \
--model "qwen/qwen3-235b-a22b-2507" \
--defense instructional_prevention \
--attack injecagent_with_utility_system_multiturn_7
```
**3. 模型特定格式化攻击(chat_inject_qwen3):**
```
export OPENROUTER_API_KEY="YOUR_API_KEY"
python -m agentdojo.scripts.benchmark -s banking -s slack -s travel \
--model "qwen/qwen3-235b-a22b-2507" \
--defense instructional_prevention \
--attack chat_inject_qwen3
```
**4. 多轮 + 模板利用攻击(chat_inject_qwen3_with_utility_authority_system_multiturn_7):**
```
export OPENROUTER_API_KEY="YOUR_API_KEY"
python -m agentdojo.scripts.benchmark -s banking -s slack -s travel \
--model "qwen/qwen3-235b-a22b-2507" \
--defense instructional_prevention \
--attack chat_inject_qwen3_with_utility_authority_system_multiturn_7
```
## 致谢
本项目基于苏黎世联邦理工学院(ETH Zurich)和 Invariant Labs 的 [AgentDojo](https://github.com/ethz-spylab/agentdojo) 仓库的优秀工作。我们衷心感谢原始作者的贡献以及他们将代码公开分享。
标签:AI红队, Chat Template, DLL 劫持, ESC8, ICLR 2026, Jailbreak, LLM Agent, OpenRouter, Persuasion Attack, transformers, 人工智能安全, 合规性, 多轮对话攻击, 大语言模型, 对抗性攻击, 对抗样本, 提示注入, 搜索语句(dork), 权限管理, 模型越狱, 社会工程学, 网络安全, 聊天模板, 逆向工具, 间接注入攻击, 隐私保护, 集群管理