luckyPipewrench/agent-egress-bench
GitHub: luckyPipewrench/agent-egress-bench
一个用于评估 AI Agent 出站流量安全工具(防火墙、代理、扫描器)的标准化攻击测试语料库,覆盖机密泄露、SSRF、Prompt 注入和 MCP 投毒等 72 个测试用例。
Stars: 1 | Forks: 0
# agent-egress-bench
一个用于评估 AI agent 出站流量安全工具的标准化测试语料库。涵盖 8 个类别共 72 个测试用例,涉及机密泄露、prompt 注入、SSRF、MCP 工具投毒以及链式检测。
**测试对象是安全工具,而非 agent。** 该领域内的其他基准测试(AgentDojo、InjecAgent、CyberSecEval、AgentHarm)均旨在测试 LLM 的行为是否正确。而本测试旨在检验位于 agent 与网络之间的 firewall、proxy 或 scanner 是否能拦截攻击。
## 为什么需要这个项目
能够浏览网页、调用 API 并使用 MCP 工具的 AI agent 需要网络层的安全保障。一个拥有机密访问权限和互联网连接的 agent 存在数据泄露风险,无论是通过 prompt 注入、工具投毒还是简单的目标不一致。
现有工具可以部署在 agent 与网络之间(proxy、firewall、MCP wrapper),但缺乏一种标准化的测试方法。本语料库填补了这一空白:提供一套共享的攻击用例,任何安全工具都可以以此进行测试。
## 语料库内容
| 类别 | 目录 | 用例数 | 测试内容 |
|----------|-----------|-------|---------------|
| URL DLP | `cases/url/` | 14 | 通过查询字符串、编码路径、高熵子域名、SSRF 泄露机密 |
| Request body DLP | `cases/request-body/` | 10 | POST body 中的机密(JSON, YAML, CSV, multipart, base64, hex, env dumps) |
| Header DLP | `cases/headers/` | 9 | HTTP 头中的 API key 和 token(Bearer, JWT, AWS, multi-header) |
| Response injection (fetch) | `cases/response-fetch/` | 8 | 获取的网页内容中的 prompt 注入 |
| Response injection (MITM) | `cases/response-mitm/` | 7 | 通过篡改 TLS 拦截响应进行注入 |
| MCP input scanning | `cases/mcp-input/` | 9 | MCP 工具参数中的 DLP 和注入(base64, hex, scattered, SSH keys) |
| MCP tool poisoning | `cases/mcp-tool/` | 7 | 投毒的工具描述、schema 注入、rug-pull 变更 |
| MCP chain detection | `cases/mcp-chain/` | 8 | 多步骤泄露序列(读取-发送、环境变量到网络) |
包含 56 个恶意用例(预期:block)和 16 个良性用例(预期:allow),用于测试误报率。
每个用例都是一个自包含的 JSON 文件,包含攻击 payload、预期判定结果(`block` 或 `allow`)、严重程度、能力标签,以及说明预期结果的机器可读原因。
## 快速开始
**验证语料库:**
```
cd validate && go build -o /tmp/aeb-validate . && /tmp/aeb-validate ../cases
```
**针对工具运行**(以 Pipelock 参考运行器为例):
```
cd examples/pipelock
bash harness.sh /path/to/pipelock
```
输出格式为 JSONL(每个用例一行结果)。运行器规范请参见 [docs/RUNNER.md](docs/RUNNER.md)。
## 工作原理
每个用例文件包含:
- 一个与真实 agent 流量中攻击形式一致的 **payload**
- 一个 **预期判定**(`block` 或 `allow`)
- 描述用例测试维度的 **能力标签**(DLP、注入检测、SSRF 等)
- 工具评估该用例所需支持的 **要求**(TLS 拦截、body 扫描等)
运行器将每个用例输入给安全工具,并观察其拦截或放行了流量。工具无法处理的用例(缺少能力)将计为 `not_applicable`,而非 `fail`。请参见 [docs/SCORING.md](docs/SCORING.md)。
## 为你的工具编写运行器
运行器将你的安全工具连接到本语料库。你需要:
1. 一个声明工具能力的 `tool-profile.json`
2. 一个脚本,将每个用例输入给你的工具并观察判定结果
3. 遵循 [docs/RUNNER.md](docs/RUNNER.md) 中格式的 JSONL 输出
将你的运行器放在 `examples/{your-tool}/` 目录下并提交 PR。
## OWASP Agentic Top 10 映射
这 8 个用例类别映射到 [OWASP Top 10 for Agentic Applications (2026)](https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/):
| 用例类别 | OWASP 条目 | 涵盖范围 |
|---------------|------------|---------------------|
| `url` | ASI02 Tool Misuse | 通过 URL 查询字符串和路径泄露机密 |
| `request_body` | ASI02 Tool Misuse | 通过 POST body 泄露机密 |
| `headers` | ASI02 Tool Misuse | 通过 HTTP 头泄露机密 |
| `response_fetch` | ASI01 Goal Hijack + ASI06 Memory Poisoning | 获取内容中的 prompt 注入 |
| `response_mitm` | ASI01 Goal Hijack + ASI04 Supply Chain | 通过篡改响应进行注入 |
| `mcp_input` | ASI02 Tool Misuse | 工具参数中的 DLP 和注入 |
| `mcp_tool` | ASI04 Supply Chain | 投毒的工具描述、rug-pull 变更 |
| `mcp_chain` | ASI02 Tool Misuse + ASI08 Cascading Failures | 多步骤泄露序列 |
包含 MITRE ATT&CK 技术的完整映射:[docs/OWASP-MAPPING.md](docs/OWASP-MAPPING.md)
## 与其他基准测试的区别
大多数 AI agent 安全基准测试检验的是 **模型** 行为是否安全。而本测试检验 **安全工具** 是否能捕获攻击。
| 基准测试 | 测试对象 | 侧重点 |
|-----------|------------|-------|
| [AgentDojo](https://github.com/ethz-spylab/agentdojo) (ETH Zurich) | LLM agent | 对 prompt 注入的鲁棒性(629 个用例) |
| [InjecAgent](https://github.com/uiuc-kang-lab/InjecAgent) (UIUC) | LLM agent | 间接 prompt 注入成功率(1,054 个用例) |
| [AgentHarm](https://huggingface.co/datasets/ai-safety-institute/AgentHarm) (UK AISI) | LLM | 拒绝执行有害的多步骤任务(440 个用例) |
| [CyberSecEval](https://github.com/meta-llama/PurpleLlama) (Meta) | LLM | 不安全代码生成、网络攻击辅助 |
| [ASB](https://github.com/agiresearch/ASB) (ICLR 2025) | LLM agent | 降低攻击成功率的防御性 prompt(90K 个用例) |
| [AgentShield-bench](https://github.com/doronp/agentshield-benchmark) (Agent Guard) | Security middleware | API 层的 prompt 注入和越狱检测(537 个用例) |
| **agent-egress-bench** | **Security tools** | **网络层的机密泄露、SSRF、MCP 投毒(72 个用例)** |
测试模型的基准测试假设 LLM 是最后一道防线。本语料库假设模型有时会失效,因此测试位于 agent 与网络之间的纵深防御层。
AgentShield-benchmark 是最接近的同类项目,但它运行在应用/API 层(这是一个注入 prompt 吗?)。agent-egress-bench 运行在线路层(这个 HTTP 请求的查询字符串中是否包含泄露的机密?这个 MCP 工具响应是否包含 prompt 注入?)。
## 文档
- [SPEC.md](docs/SPEC.md): 用例 schema、字段定义、枚举、payload 格式
- [SCORING.md](docs/SCORING.md): pass/fail/not_applicable/error 评分模型
- [RUNNER.md](docs/RUNNER.md): 运行器输出约定和判定映射
- [OWASP-MAPPING.md](docs/OWASP-MAPPING.md): 用例类别映射到 OWASP Agentic Top 10
## 贡献
请参见 [CONTRIBUTING.md](CONTRIBUTING.md)。欢迎贡献用例、运行器和文档改进。
**用例 ID 不可变。** 一旦合并,用例 ID 永不改变。对现有用例的语义更改需要使用新 ID 创建新用例。
## 治理
本语料库由 [Pipelock](https://github.com/luckyPipewrench/pipelock) 作者创建。欢迎任何供应商或个人贡献。本仓库不产生排名或跨工具对比表。每个工具独立发布其结果。
**利益冲突披露:** 作者开发了一款 agent 出站流量安全工具。本语料库设计为工具中立:用例测试可观察行为(请求是否被拦截?),而非实现细节。[Pipelock runner](examples/pipelock/) 是一个参考实现,并不代表特权地位。
## 许可证
Apache 2.0。请参见 [LICENSE](LICENSE)。
标签:AI代理防火墙, AI安全, API安全, Chat Copilot, Cutter, DLL注入, DLP, EVTX分析, Homebrew安装, IP 地址批量处理, JSON输出, LLM防火墙, MCP安全, SSRF, 出站流量检测, 大模型安全, 安全合规, 安全基准测试, 安全测试集, 工具投毒, 攻击语料库, 日志审计, 机密信息泄露, 模型上下文协议, 流量审计, 红队评估, 网络代理, 越狱检测