freyzo/deep-xpia
GitHub: freyzo/deep-xpia
面向多 agent AI 系统的多跳跨提示词注入攻击基准测试工具,包含 250 个攻击用例和 7 种攻击模式分类,用于量化和评估防御检测能力随委托链深度退化的问题。
Stars: 2 | Forks: 1
# deep-xpia
**跨提示词注入如何深入影响多个 agent**
[](LICENSE)
[](https://python.org)
[](#results-simulated-baseline-n5-per-case)
[](#attack-taxonomy)
[](tests/)

你的 AI agent 流水线有 3 个 agent。攻击者注入了一个文档。到了第 3 跳,你的凭证已经出现在他们的 Slack 频道中——而没有任何单个 agent 做错任何事。
**deep-xpia** 对此进行了基准测试:跨 agent 委托链的多跳跨提示词注入。250 个攻击用例。7 种攻击模式。测量了 4 种防御措施。
核心发现:**随着注入从深度 2 传播到深度 5,检测准确率下降了 60 个百分点。** 对于 DXPIA-006(意图洗钱),注入质量在传播过程中反而_提升_了——中间 agent 剥离了检测标记,并将 payload 重新表述为自然输出。
```
depth 2 ████████████████████████████████████░░░░░░░░░░░░░░ 72%
depth 3 ██████████████████████████████░░░░░░░░░░░░░░░░░░░░ 58%
depth 4 ████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 31%
depth 5 ██████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 12%
detection accuracy (intent verification, by hop depth)
```
## 为什么会有这个项目
84% 的组织无法通过关于 agent 行为的合规审计。只有 24% 的组织能监控到 agent 之间的通信。单 agent 的 XPIA 工具(mcp-scan, promptfoo)无法测量注入跨越委托边界时会发生什么。
[ACIArena](https://arxiv.org/abs/2604.07775) 对跨 6 个框架的通用级联注入进行了基准测试,但没有关注混淆代理人模式,也没有测量随深度变化的检测情况。[SentinelAgent](https://arxiv.org/abs/2604.02767) 形式化了委托属性,但没有开源实现。两者都没有测量检测能力如何随跳数深度退化。deep-xpia 通过一个专注于混淆代理人的基准测试和一种新颖的深度相关准确率 (DDA) 指标填补了这一空白。
## 快速开始
```
# docker (带有 visualizer 的完整技术栈)
docker compose up
# 打开 localhost:3000
# 或 pip
pip install deep-xpia
# 交互式 demo
deepxpia demo
# 运行 benchmark
deepxpia bench generate # generate 250 cases
deepxpia bench run --defense none
deepxpia bench run --defense intent-verify
deepxpia bench run --defense all
```
## 用作基准测试
```
# 针对你自己的 LangGraph pipeline
deepxpia bench run --target langgraph --dataset deepxpiabench-v1.jsonl
# live 模式 (真实 LLM 调用,250 个用例约 $5-10)
DEEPXPIA_LIVE=1 deepxpia bench run --model claude-haiku-4-5-20251001
```
## 用作库
```
# intent verification 防御
from deep_xpia.defenses.intent_verify import IntentVerifier
verifier = IntentVerifier(threshold=0.5)
result = verifier.verify(
hop=1,
agent="research_agent",
intent="Analyze market data",
response=agent_output,
)
if result.blocked:
raise SecurityError(f"Injection detected: {result.reason}")
# taint tracking
from deep_xpia.defenses.taint import TaintTracker
from deep_xpia.defenses.taint_types import TrustLevel
tracker = TaintTracker()
label = tracker.tag("external_pr", TrustLevel.UNTRUSTED, pr_content)
_, violation = tracker.check_and_propagate(
2, "deploy_agent", output, "notification_agent", label
)
# scope-bound delegation token
from deep_xpia.defenses.delegation_token import ScopeTokenEnforcer
enforcer = ScopeTokenEnforcer()
root = enforcer.issue_root("orchestrator", {"read_data", "summarize", "delegate"})
child = enforcer.delegate(root, "research_agent", {"read_data", "summarize"})
violation = enforcer.check_action(1, child, "research_agent", "execute_trade")
```
## 攻击分类体系
| ID | 名称 | 跳转机制 | 最小深度 | OWASP |
|---|---|---|---|---|
| DXPIA-001 | Session smuggling | 指令搭车 | 2 | ASI02, ASI03 |
| DXPIA-002 | Memory poisoning | 时间持久化 | 2 | ASI07 |
| DXPIA-003 | Tool chain cascade | 数据流级联 | 3 | ASI02, ASI04 |
| DXPIA-004 | Chain re-routing | 控制平面注入 | 2 | ASI01, ASI03 |
| DXPIA-005 | Scope escalation | 权限差异 | 2 | ASI03 |
| DXPIA-006 | Intent laundering | 对抗性精炼 | 3 | ASI01 |
| DXPIA-007 | Delayed trigger | 条件激活 | 2 | ASI07 |
包含文献来源的完整分类体系:[taxonomy/TAXONOMY.md](taxonomy/TAXONOMY.md)
## 结果(模拟基线,每个用例 N=5)
| 防御 | ASR | TPR | FPR | DXPIA-001 TPR | DXPIA-006 TPR |
|---|---|---|---|---|---|
| None | 0.87 | 0.05 | 0.05 | 0.05 | 0.05 |
| Intent verify | 0.52 | 0.57 | 0.15 | **0.82** | **0.38** |
| Taint | 0.64 | 0.53 | 0.08 | 0.35 | 0.32 |
| Scope tokens | 0.66 | 0.38 | 0.05 | 0.20 | 0.22 |
| DLP | 0.71 | 0.33 | 0.10 | 0.25 | 0.28 |
| All combined | 0.36 | 0.76 | 0.18 | **0.90** | **0.52** |
意图验证(Intent verify)是对抗 Session smuggling 最强的单一防御措施,TPR 达到 0.82。但在对抗意图洗钱(DXPIA-006)时,该数值下降到了 0.38。洗钱后的指令通过了语义相似性检查,因为中间 agent 已经对其进行了清理。将所有 4 种防御叠加使用可将 DXPIA-006 的检测率提升至 0.52——虽然有所改善,但本质上仍像是在抛硬币。
完整结果与失败分析:[results/](results/)
## 坦诚的局限性
- **DXPIA-006 能够抵抗意图验证。** 洗钱后的指令通过了语义相似性检查。复现了 SentinelAgent 关于对抗性意图释义的研究发现 (arXiv:2604.02767)。
- **污点跟踪在内存边界处丢失溯源信息。** DXPIA-002 在简单的内存存储上规避了污点跟踪,因为污点元数据没有与值一起被持久化。
- **范围 token 无法捕获授权范围内的意图漂移。** DXPIA-001 规避了范围 token,因为走私的指令在技术上是经过授权的文本。
- **基准测试规模:250 个用例。** 与 ACIArena (1,356) 的范围不同——专注于混淆代理人模式并引入了 DDA 指标。不能互相替代。
- **特定于模型。** 结果是在 Claude Haiku 上测量得到的。GPT-4o 或其他模型可能会产生不同的攻击成功率和检测模式。
## 项目结构
```
deep-xpia/
src/deep_xpia/
bench/ generator, runner, metrics, report, schema
defenses/ intent_verify, taint, delegation_token, dlp
adapters/ native, base (protocol)
server.py FastAPI + WebSocket event server
events.py event types for visualizer
cli.py CLI
scenarios/
session_smuggling/ DXPIA-001
memory_poisoning/ DXPIA-002
intent_laundering/ DXPIA-006
taxonomy/
TAXONOMY.md, taxonomy.yaml, owasp_mapping.yaml, aciarena_mapping.yaml
tests/ 43 tests
```
## 贡献
发现了绕过方法?提交包含攻击 payload 及其对应检测器的 PR。这就是基准测试不断成长的方式。
贡献方式:
- 新的攻击场景(DXPIA-008+)。请参阅 `scenarios/session_smuggling/` 了解模式。
- 框架适配器(LangGraph, CrewAI, AutoGen)。请参阅 `src/deep_xpia/adapters/base.py` 了解协议规范。
- 新的防御原语。请参阅 `src/deep_xpia/defenses/` 了解现有实现。
- 在不同模型上运行基准测试。在 GPT-4o、Gemini 或开源模型上的结果尤其有用。
每一个贡献的绕过方法都使基准测试变得更加困难。每一个贡献的防御都使 agent 变得更加安全。
## 相关工作
- [ACIArena](https://arxiv.org/abs/2604.07775) (2026):1,356 个用例,6 个框架。通用级联注入。
- [SentinelAgent](https://arxiv.org/abs/2604.02767) (2026):形式化的委托属性 P1-P7。DelegationBench v4。
- [arXiv:2503.12188](https://arxiv.org/abs/2503.12188) (2025):中间 agent 重新格式化注入(DXPIA-006 的基础)。
- [OWASP Agentic AI Top 10](https://owasp.org/www-project-agentic-ai-top-10/) (2026):ASI01-ASI10 风险类别。
## 引用
```
@software{deep-xpia,
author = {Freya Zou},
title = {deep-xpia: Multi-Hop Cross-Prompt Injection Benchmark for Multi-Agent AI Systems},
year = {2026},
url = {https://github.com/freyzo/deep-xpia}
}
```
MIT License。
标签:AI安全, AI红队, Chat Copilot, CISA项目, DLL 劫持, DNS 解析, LLM漏洞, PyRIT, Python, XSS注入, 供应链攻击, 反取证, 多智能体系统, 多跳攻击, 大语言模型, 安全基准, 安全评估, 意图清洗, 提示注入, 攻击分类, 无后门, 深度传播, 网络安全, 请求拦截, 跨提示注入, 逆向工具, 防御机制, 隐私保护, 集群管理