← 所有文章

你的Agent有一个你未审查的中间人

研究人员从淘宝、闲鱼和Shopify托管的店面购买了28个付费LLMAPI路由器,并从公开社区收集了另外400个。他们在请求中植入凭证并对每个路由器进行探测,以查看它们如何处理流量。1

其中17个路由器触及了请求中植入的AWS金丝雀凭证。一个从作为诱饵放置的私钥中抽走了ETH。研究团队设置为蜜罐的一个泄露OpenAI密钥生成了1亿个GPT-5.4 tokens,并且根据摘要所述,”超过七个Codex会话”,之后他们才将其撤回。1另外的弱配置诱饵产生了20亿个计费tokens、440个Codex会话中的99个凭证,以及401个已经在自主YOLO模式下运行的会话。1

LLMAPI路由器是新的攻击面。没有人在审计它。

TL;DR

第三方LLMAPI路由器是应用层代理,对Agent与上游模型之间每个进行中的JSON载荷拥有完整的明文访问权限。没有任何提供商在客户端与上游之间强制执行加密完整性。Liu、Shou、Wen、Chen和Fang的一篇新arxiv论文首次系统性地研究了这一攻击面,实地数据令人不安:28个付费路由器中有1个、400个免费路由器中有8个正在主动向响应中注入恶意代码,2个部署了自适应规避触发器,17个触及了植入的AWS金丝雀凭证,1个从植入的私钥中抽走了ETH。1作者形式化了两个核心攻击类别和两个自适应规避变种,然后构建了一个名为Mine的研究代理,该代理针对四个公开Agent框架实现了”所有四个攻击类别”(他们的原话),并评估了三种可部署的客户端防御措施。1如果您的Agent正在使用一个不是您自己构建的路由器,那么您就有一个从未审计过的信任边界。

核心要点

  • Agent运营者:您的客户端与上游模型之间的每一个LLMAPI路由器都是一个应用层代理,对每个请求和响应都拥有明文访问权限。没有强制执行加密完整性。如果您使用的是从市场购买或从公共社区列表中获取的路由器,请将其视为敌对中间人,除非能够证明相反。
  • Harness构建者:您的PreToolUse hooks在工具执行之前运行,但恶意路由器会在模型响应生成之后、到达您的hook之前对其进行修改。在您的hook栈中添加响应端验证,并考虑对异常响应形态部署失败关闭(fail-closed)策略门控。
  • 任何运行YOLO模式的人:研究人员的蜜罐中有401个会话已经在自主YOLO模式下运行。1在自主会话中修改工具调用的路由器,其影响范围远远大于修改您将要阅读的响应的路由器。不要通过您不控制的路由器运行YOLO模式。

路由器到底是什么?

在本文的语境中,LLMAPI路由器是一种第三方服务,它位于您的客户端与一个或多个上游模型提供商之间。您使用OpenAI兼容的API向路由器发送请求。路由器将这些请求分发到它选择的任何上游——GPT-5、Claude、Gemini、开源权重模型,或所有这些的池——并以相同的形式将响应返回给您。1

路由器之所以存在,是因为LLM生态系统混乱。人们希望拥有一个可用于每个模型的API密钥。人们希望价格套利——批量购买tokens,然后以更低价格转售。人们希望在直接访问提供商受限的地区找到地理变通方案。人们希望使用单个客户端测试多个模型。所有这些都是合理的理由,健康的路由器市场为所有这些需求服务。

问题在于,路由器是一个应用层代理。它不仅仅是转发字节。它读取请求JSON、选择上游、可选地重写请求、转发请求、读取响应、可选地重写响应,然后返回结果。这个流水线的每一步都在路由器的基础设施上以明文形式发生。1

这里没有TLS等效物。TLS保护从客户端到路由器以及从路由器到上游模型之间的字节。但它无法保护载荷免受路由器本身的侵害。没有任何提供商在原始客户端与最终模型之间强制执行加密完整性——没有签名断言证明模型收到的请求与客户端发送的请求相同,也没有签名断言证明客户端收到的响应与模型生成的响应相同。1

这种缺失就是攻击面。

实地数据

研究人员从三个市场(淘宝、闲鱼、Shopify托管店面)购买了28个付费路由器,并从公共社区收集了400个免费路由器。他们通过一系列探测对每个路由器进行测试,这些探测使用包含植入凭证、已知载荷和标记字符串的插装请求。1

以下是他们的发现:

发现 数量 备注
主动向响应中注入恶意代码的付费路由器 1(共28个) 摘要中明确区分
主动向响应中注入恶意代码的免费路由器 8(共400个) 摘要中明确区分
部署自适应规避触发器的路由器 2 摘要中未指明付费/免费区分
触及研究人员拥有的AWS金丝雀凭证的路由器 17 摘要中未指明付费/免费区分
从研究人员拥有的私钥中抽走ETH的路由器 1 摘要中未指明付费/免费区分

自适应规避的发现才是真正令人不安的。自适应规避触发器意味着路由器在大多数时间表现正常,仅在特定条件下才切换到攻击行为——特定的请求形态、特定的客户端指纹、特定的频率。您无法通过抽样随机请求来捕获它,因为路由器知道自己正在被抽样并会表现得很好。

金丝雀凭证是绊线:当有人尝试使用它们时会触发警报。17个路由器”触及”它们意味着至少有17个路由器从进行中的载荷中提取了凭证并尝试对AWS使用它们。1摘要没有详细说明每个路由器的确切机制,但绊线的设计意味着触及即使用。

那个从研究人员拥有的私钥中抽走ETH的路由器是一个更有力的发现。prompt中的私钥不是凭证绊线——它是诱饵,只有在路由器实际抽走钱包时才会产生泄露的证据。一个路由器做到了。1

两项投毒研究

研究人员进行了两项额外研究,以表明表面上良性的路由器可以通过第三方暴露被拉入同一攻击面。

研究1:泄露的OpenAI密钥。研究人员泄露了一个有效的OpenAI API密钥,就像它是因开发人员失误而泄露的一样。在观察窗口期间,根据摘要,这个单一的泄露密钥——通过捕获它的路由器——生成了1亿个GPT-5.4 tokens和”超过七个Codex会话”。1某个人——或许多人——找到了这个密钥,通过社区路由器使用它来路由请求,并消耗掉了1亿个tokens的计算资源。路由器成为了被盗密钥的洗钱层。

研究2:弱配置诱饵。研究人员搭建了配置较弱的诱饵端点。这些诱饵产生了20亿个计费tokens、440个Codex会话中的99个凭证,以及——这是关键的一点——401个已经在自主YOLO模式下运行的会话。1

401个自主会话已经通过一组诱饵进行路由。这些会话中的每一个都是一个活跃的攻击面,恶意中间人可以在其中注入工具调用、泄露机密或修改模型的输出,而Agent会在没有人类介入的情况下执行返回的任何内容。401这个数字只是一项研究诱饵捕获的——通过不受控制的中间人进行路由的实际运营规模必然更大。

两个核心攻击类别和两个自适应变种

该论文形式化了两个核心攻击类别和两个自适应规避变种。摘要对分类法的表述很明确:AC-1和AC-2是核心类别;AC-1.a和AC-1.b是AC-1的变种。研究代理Mine针对四个公开Agent框架实现了”所有四个攻击类别”(摘要原话)。1

AC-1:载荷注入(核心类别)。路由器修改响应以注入额外的指令、工具调用或客户端Agent会执行的内容。Agent以为自己正在读取模型的输出;实际上它正在读取路由器所有者的输出。

AC-2:机密泄露(核心类别)。路由器从进行中的请求和响应中读取机密——API密钥、tokens、私钥,任何看起来像凭证的东西——并将它们发送到攻击者的基础设施。

AC-1.a:依赖项定向注入(AC-1的自适应变种)。注入仅在请求匹配特定依赖项或上下文时才触发——例如,仅当请求涉及特定库时,仅当引用特定函数时,仅当prompt中出现某些文件路径时。这使得攻击在随机测试中不可见。

AC-1.b:条件交付(AC-1的自适应变种)。恶意载荷在特定条件下交付(一天中的时间、请求频率、客户端指纹)。同样的检测规避逻辑。

这些攻击类别中的每一个对客户端和上游模型都是不可见的,因为两端都信任路由器。客户端看到的是正常的响应形态。模型看到的是正常的请求形态。路由器可以在中间自由地做任何事情,而任何一方都没有加密方式来检测篡改。1

组合模式,更低一层

我一直在写同一个结构性bug:单独授权的组件组合成未授权的行为。Trivy-to-LiteLLM是包层面的组合。静默出站是工具描述层面的组合。MCP工具投毒是协议层面的组合。axios维护者被入侵是人类维护者层面的组合。

路由器攻击是网络层面的组合。您的客户端被授权调用路由器。路由器被授权调用上游模型。上游模型被授权响应。每一跳都是授权的。这些授权跳跃的组合产生了大规模的载荷注入和机密泄露,因为该组合跨越了一个没有人费心用加密方式密封的信任边界。1

您无法在任何单一层面修复这个问题。您需要在组合层面修复它,这意味着客户端必须将路由器视为敌对,直到它独立验证响应形态、工具调用和内容都与上游模型可能生成的内容一致。

论文评估的三种防御措施

该论文评估了针对这些攻击类别的三种客户端防御措施。1

1. 失败关闭策略门控。客户端对响应形态、允许的工具调用、允许的URL、允许的命令强制执行策略。任何超出策略的内容都会失败关闭——请求被拒绝而不是被允许。

2. 响应端异常筛查。客户端监视响应形态异常、不寻常的token模式,或包含已知攻击标记的输出(指向未知主机的URL、可疑的凭证模式、不寻常的工具调用结构)。

3. 仅追加透明度日志。客户端将每个请求和响应写入一个仅追加的日志,该日志无法被追溯修改。这不能阻止攻击,但可以使其在取证上可追踪。

这些都不是万能药。我的看法是:失败关闭策略门控是这三者中最强的,因为它不依赖于检测攻击——它拒绝任何超出明确允许列表的内容——但摘要没有对这些防御措施进行排名,因此请将其视为我的意见,而不是论文的发现。异常筛查会错过看起来正常的攻击,而自适应规避变种(AC-1.a和AC-1.b)专门设计为在测试条件下看起来正常。策略门控的好坏取决于策略本身,而为”模型响应应该是什么样子”编写一个完整的策略是很难的。

您应该实际做什么

如果您正在运行一个通过您未构建的路由器调用LLMAPI的Agent:

  1. 除非您信任运营者,否则停止使用从市场购买或从公共社区获取的路由器。这里的”信任”意味着您有一些外部依据——一个已知的团队、一份签署的合同、一个可以对其执行的法律管辖区——而不是”它在市场上有良好的评价”。

  2. 在您的harness中添加失败关闭策略门控。在Claude Code中,这意味着PreToolUse hooks拒绝明确允许列表之外的工具调用,以及PostToolUse hooks在将响应传递给下一个模型回合之前验证响应形态。hook栈就是您的失败关闭策略层。

  3. 永远不要通过您不控制的路由器运行YOLO模式。蜜罐中的401个自主会话就是先例。如果路由器是敌对的,而您的会话是自主的,那么路由器就在运行您的机器。

  4. 记录一切。仅追加的透明度日志让您能够重建事件。每个请求。每个响应。每个工具调用。将它们存储在路由器无法到达的地方。

  5. 如果您运营Agent基础设施,请强制执行加密完整性。如果您同时运营客户端和上游,请在客户端对请求进行签名,并在上游验证签名。这是唯一真正的修复方案。路由器仍然可以看到明文,但它无法在不使签名失效的情况下修改任何内容。

令人不安的含义

路由器攻击面是Agent生态系统发布基础设施速度快于保护它速度的一个典型例子。人们希望拥有一个可用于每个模型的API密钥。人们希望价格套利。人们希望区域访问。路由器提供了所有这些。市场奖励它们。安全审计尚未进行。

MCP攻击面有50个已记录的漏洞。供应链攻击面有一个在一周内跨越五个生态系统的TeamPCP活动。静默出站攻击面有Clinejection和MCPTox基准测试。现在再加上路由器攻击面:研究了428个路由器,9个正在主动注入恶意代码,17个触及植入的凭证,1个抽走ETH,401个自主会话已经在敌对基础设施上运行。1

每次的模式都是相同的。我们构建了Agent栈的新层。新层在被审计之前就被采用了。攻击者出现了。研究人员出现了。社区写出发现。关注这些事情的运营者修补了他们的部署。没有关注的运营者则用惨痛的方式得知。

路由器攻击面正处于”研究人员刚刚写出来”的阶段。您还有时间修补您的部署。请利用好它。


FAQ

在本文的语境中,LLMAPI路由器是什么?

一种位于您的客户端与上游模型提供商之间的第三方服务,它暴露OpenAI兼容的API,并将您的请求分发给一个或多个上游模型。它是一个应用层代理,对每个请求和响应都拥有明文访问权限。1

这与CDN或普通HTTP代理有何不同?

CDN在不读取应用载荷的情况下转发字节。LLMAPI路由器读取JSON、选择上游、可选地重写请求、转发请求、读取响应,并可选地重写响应。它对您的数据进行应用级处理,而不仅仅是传输。1

TLS能保护我免受恶意路由器的侵害吗?

不能。TLS保护从客户端到路由器以及从路由器到上游模型之间的字节。路由器终止TLS,读取明文,然后在另一端重新加密。TLS无法保护您的载荷免受路由器的侵害。1

我如何检测一个正在主动注入响应的路由器?

如果路由器使用自适应规避,您无法可靠地检测到。论文的AC-1.a和AC-1.b攻击类别专门针对检测规避,仅在运营条件下触发。1您最好的选择是失败关闭策略门控——拒绝任何超出明确允许列表的内容——而不是试图在事后检测攻击。

我直接对着api.anthropic.com运行Claude Code。我受到影响吗?

不会受到本文所述路由器攻击类别的影响,因为您直接调用Anthropic,没有中间人。攻击面专门针对第三方路由器。如果您出于任何原因通过代理路由Claude Code——企业网关、速率限制绕过、模型聚合器——您应该审计该代理。

那OpenRouter、LiteLLM或其他知名聚合器呢?

论文研究了从特定市场(淘宝、闲鱼、Shopify托管店面)购买的28个付费路由器,以及从公共社区列表收集的400个免费路由器。1它没有发布特定的命名产品列表。论文的要点是结构性的:任何路由器都是不受信任的中间人,除非您有单独的信任依据。知名聚合器并非自动更安全——它们只是更显眼,这是一个不同的属性。

对于研究人员发现的401个自主会话,我应该怎么办?

这些会话属于其他运营者,他们通过研究人员的诱饵路由了流量。如果您正在通过任何您未构建的路由器运行自主Agent会话,第一步是停止。第二步是轮换所有经过该路由器的凭证。第三步是审计您的会话日志,查找异常的工具调用或输出。


参考资料


  1. Hanzhi Liu, Chaofan Shou, Hongbo Wen, Yanju Chen, Ryan Jingyang Fang, “Your Agent Is Mine: Measuring Malicious Intermediary Attacks on the LLM Supply Chain,” arXiv:2604.08407, April 2026. 本文中所有路由器攻击数据、攻击类别定义、实地研究方法和防御评估的主要来源。所有统计数据(28个付费路由器、400个免费路由器、1+8个主动注入、2个自适应规避触发器、17个触及AWS金丝雀凭证、1个抽走ETH、来自泄露密钥的1亿个tokens、来自诱饵的20亿个tokens、401个自主YOLO会话、440个Codex会话、99个凭证、两个核心攻击类别的分类法——AC-1载荷注入和AC-2机密泄露——以及两个自适应规避变种AC-1.a和AC-1.b,Mine代理针对四个公开Agent框架实现”所有四个攻击类别”,三种客户端防御:失败关闭策略门控、响应端异常筛查、仅追加透明度日志)均直接来自论文摘要。 

相关文章

The Fork Bomb Saved Us

The LiteLLM attacker made one implementation mistake. That mistake was the only reason 47,000 installs got caught in 46 …

6 分钟阅读

MCP Servers Are the New Attack Surface

50 MCP vulnerabilities. 30 CVEs in 60 days. 13 critical. The attack surface nobody is auditing.

8 分钟阅读

The Ralph Loop: How I Run Autonomous AI Agents Overnight

I built an autonomous agent system with stop hooks, spawn budgets, and filesystem memory. Here are the failures and what…

8 分钟阅读