跳转到主要内容
能够访问网络的智能体可以被变成数据管道。攻击者在智能体读取的 文档中植入指令——网页、检索到的块、工具结果——这些指令引导 智能体向攻击者控制的主机 POST 敏感数据,或探测内部服务(SSRF)。 智能体从未”决定”外泄;它执行对它来说看起来像合法指令的内容。 本页介绍 OrcaRouter 中的智能体防火墙和防护栏如何让你防御 AI 数据外泄——无需修改你的智能体代码。
防火墙仅对通过 MCP 派发路径或 evaluate hook 路由到网关的 目的地看到出站流量。你的智能体完全在其自己进程内执行的工具 在其视野之外。将你的智能体的网络绑定工具调用通过网关路由, 它们就会受到治理。

1. 攻击如何工作

通过智能体的典型路径分三步:
  1. 注入——智能体读取携带嵌入指令的不可信内容(网页、获取 的文档、CRM 备注)。
  2. 收集——注入的指令告诉智能体使用它已有的工具收集敏感 材料——API 密钥、数据库行、用户 PII。
  3. 外泄——智能体被告知通过 fetch 形工具发送该材料: http_fetchweb_searchfetch_urlrequest。目的地 由攻击者控制。
SSRF 是向内重定向的相同形状:智能体不是被引导到外部主机,而是 被引导到 169.254.169.254(云元数据)、内部 Redis 端口或另一个 私有服务。注入步骤参见提示注入; 本页关注网络步骤。

2. 出站允许列表——锁定出站目的地

最持久的防御是出站允许列表:列举你的智能体被合法允许访问的 主机,并拒绝其他一切。 出站规则使用 stage: egressegress 字段。判定控制极性—— allow 放行列出的目的地;低优先级的 deny 通配符拦截其余的:
[
  {
    "priority": 10,
    "label": "Allow known API endpoints",
    "stage": "egress",
    "tool_name_glob": "*",
    "verdict": "allow",
    "egress": {
      "allow": [
        "api.openai.com",
        "api.anthropic.com",
        "api.orcarouter.ai"
      ]
    }
  },
  {
    "priority": 20,
    "label": "Deny all other outbound destinations",
    "stage": "egress",
    "tool_name_glob": "*",
    "verdict": "deny"
  }
]
条目匹配 CIDR、IP 字面量或不区分大小写的主机名。主机名会尽力解析, 并对 IP/CIDR 条目重新检查,因此 DNS 返回的 169.254.169.254 这样的 目的地仍然会被 10.0.0.0/8 CIDR 拒绝条目捕获。被拦截的调用返回 HTTP 400,错误码为 firewall_blocked 要在没有明确允许列表的情况下拒绝已知恶意范围,写一个有针对性的 出站拒绝规则,列出云元数据端点(169.254.169.254)和 RFC-1918 私有范围(10.0.0.0/8172.16.0.0/12192.168.0.0/16)。 在其上以更低的优先级数字叠加你的允许列表,这样拒绝规则先被评估。

3. 在名称层拦截 fetch 形工具

在出站目的地被评估之前,你可以完全移除该能力。tight 自治级别 按工具名 glob 拒绝 http_fetchweb_searchfetch_urlrequest,作为 SSRF 和外泄的最后保障。如果你的智能体不需要任何 这些工具,tight 一步移除攻击面:
POST /api/workspace/firewall/autonomy
{ "level": "tight" }
要在不采用完整 tight 姿态的情况下拒绝 fetch 工具,写一条 inbound 执行面的拒绝规则。inbound模型选择工具之前拦截 工具——智能体在其工具列表中永远不会收到该能力:
{
  "priority": 5,
  "label": "Deny fetch-shaped tools",
  "stage": "inbound",
  "tool_name_glob": "http_fetch",
  "verdict": "deny"
}
对你的智能体栈使用的每个 fetch 形工具名重复此操作。

4. Secrets Blocker 防护栏——在提示词层阻止凭证

Secrets Blocker 防护栏在输入阶段运行,在请求离开网关之前 扫描提示词中的 AWS 风格访问密钥、OpenAI 密钥、Anthropic 密钥、 GitHub 令牌和类似的凭证模式。如果检测到密钥,请求就会被拦截—— 凭证永远不会到达模型,也永远不会出现在工具调用中。 从 Guardrails 面板启用它,或作为 tight 自治级别的一部分。它独立 于防火墙出站规则。
威胁阻止它的层
提示词携带 API 密钥Secrets Blocker(输入防护栏)
智能体调用 fetch 工具朝向攻击者主机出站允许/拒绝规则
向模型声明的 fetch 形工具Inbound 拒绝规则或 tight 自治
智能体访问云元数据或 RFC-1918列出这些 CIDR 的出站拒绝规则

5. 使用影子模式推出

如果你不确定你的智能体今天合法访问哪些主机,在执行之前从 影子模式开始:
  1. 用你预期的允许列表创建出站规则,并在策略上设置 shadow_mode: true
  2. 观察 Events 信息流——被拦截的调用以 [shadow] would deny 和目的地出现。
  3. 调整 allow 列表,直到只有攻击者可到达的目的地会被拒绝, 然后禁用影子模式开始执行。
影子模式开启时,不会有任何流量被拦截。

6. 下一步去哪里

防火墙规则参考

完整匹配语言——出站列表、CIDR、参数子句和所有判定。

智能体防火墙概览

策略、执行面、自治级别和可观测性。

提示注入

将智能体引向外泄的注入步骤。

MCP 工具投毒

注册 fetch 形能力的恶意 MCP 工具。