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), 逆向工具, 间接提示注入, 隐私保护