as547777/conversational-hijack-agentdojo
GitHub: as547777/conversational-hijack-agentdojo
一个针对AgentDojo框架实现的对话劫持间接提示注入攻击工具,通过伪造对话历史利用LLM上下文一致性漏洞,用于评估LLM智能体的安全性。
Stars: 0 | Forks: 0
# 针对 AgentDojo 的对话劫持攻击
针对 AgentDojo 评估框架实现的自主 *indirect prompt injection* 攻击 (Debenedetti et al., 2024)。本作品为 FER 2026 学术研讨会论文的一部分。
**作者:** Antun Slaviček
**指导教师:** prof. dr. sc. Stjepan Picek
## 关于攻击
对话劫持模拟了之前用户与 agent 之间已结束的对话。其目的是利用模型在上下文上的一致性——LLM 会“相信”它认为自己在对话早期已做出并确认的决定。
我实现了三种在明确程度上有所不同的变体:
- **Labeled** - 带有可见的“早期”对话起止标记
- **Clean** - 相同的对话内容但不带标记,看起来像自然的延续
- **Subtle** - 仅用一句话提及“之前已同意的内容”
假设是,攻击的形式会影响 ASR (Attack Success Rate),并且不同的变体会与防御机制产生不同的交互。
该攻击在 AgentDojo Travel suite 上进行了评估,模型为 `gpt-4o-mini-2024-07-18`。
## 仓库内容
```
.
├── conversational_hijack_attack.py implementacija sve tri varijante
├── requirements.txt
├── README.md
└── LICENSE
```
## 环境设置
前置条件:Python 3.10+,OpenAI API 密钥。
```
pip install -r requirements.txt
export OPENAI_API_KEY="sk-..."
```
在 Windows PowerShell 上:
```
$env:OPENAI_API_KEY = "sk-..."
```
## 集成到 AgentDojo
查找 AgentDojo 的安装路径:
```
python -c "import agentdojo, os; print(os.path.dirname(agentdojo.__file__))"
```
将 `conversational_hijack_attack.py` 复制到 `agentdojo/attacks/` 目录中(与现有的 `important_instructions_attacks.py` 并列)。
确认攻击已成功注册:
```
python -c "from agentdojo.attacks.attack_registry import ATTACKS; print([k for k in ATTACKS if 'conversational' in k])"
```
预期输出:
```
['conversational_hijack_labeled', 'conversational_hijack_clean', 'conversational_hijack_subtle']
```
如果攻击不可见,请将其添加到 `agentdojo/attacks/__init__.py` 中:
```
from agentdojo.attacks import conversational_hijack_attack # noqa: F401
```
## 运行
快速测试(约 5-10 分钟,约 $0.02):
```
python -m agentdojo.scripts.benchmark -s travel \
--model gpt-4o-mini-2024-07-18 \
--attack conversational_hijack_labeled \
--user-task user_task_0 --user-task user_task_6 \
--injection-task injection_task_0
```
针对所有三种变体的完整基准测试(每种变体约 2 小时,约 $0.10):
```
python -m agentdojo.scripts.benchmark -s travel --model gpt-4o-mini-2024-07-18 --attack conversational_hijack_labeled
python -m agentdojo.scripts.benchmark -s travel --model gpt-4o-mini-2024-07-18 --attack conversational_hijack_clean
python -m agentdojo.scripts.benchmark -s travel --model gpt-4o-mini-2024-07-18 --attack conversational_hijack_subtle
```
## 结果
JSON 输出将写入 `runs/gpt-4o-mini-2024-07-18/travel/` 目录。每个测试用例包含 `utility`(已解决用户任务)和 `security`(攻击被成功阻止)。ASR 计算方式为 `1 - mean(security)`。
详细的结果分析与解释请参见研讨会论文的第 4.7 章。
## 参考文献
- Debenedetti, E., et al. (2024). *AgentDojo: A Dynamic Environment to Evaluate Attacks and Defenses for LLM Agents.* NeurIPS 2024.
- Greshake, K., et al. (2023). *Not what you've signed up for: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injection.* AISec '23.
## 许可证
MIT,详见 `LICENSE`。
标签:AgentDojo, CISA项目, DLL 劫持, FER, GPT-4o-mini, OpenAI API, Petitpotam, Python, 上下文一致性, 会话劫持, 分布式搜索, 大语言模型, 学术研究, 对话系统, 导航智能体, 提示词攻击, 攻击成功率(ASR), 无后门, 研讨会项目, 网络安全, 自然语言处理(NLP), 逆向工具, 间接提示注入, 隐私保护