← 所有文章

你的Agent中间商你从未审查过

研究人员从淘宝、闲鱼和Shopify托管店铺购买了28个付费LLM API路由器,并从公开社区收集了400多个。他们在请求中植入凭证,并对每个路由器进行探测,观察它对流量的处理行为。1

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

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

MCP信任链是一系列中介(API路由器、代理和工具服务器),它们位于您的AI agent和上游模型之间,每一环都拥有对每个请求和响应的完整明文访问权限。没有任何供应商端到端强制执行加密完整性,这意味着任何中介都可以读取、修改或泄露传输中的数据。实地研究发现28个付费路由器中有17个接触了植入的AWS凭证,一个从私钥中抽走了ETH,这表明未经审查的信任链环节是活跃的攻击面。

TL;DR

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

核心要点

  • Agent运营者:位于您的客户端和上游模型之间的每一个LLM API路由器都是一个应用层代理,拥有对每个请求和响应的明文访问权限。没有供应商强制执行加密完整性。如果您从市场购买了路由器,或从公开社区列表中获取了路由器,请将其视为敌对中介,直到您独立验证它为止。
  • Harness构建者:您的PreToolUse钩子在工具执行之前运行,但恶意路由器会在模型生成之后、在响应到达钩子之前修改响应。在您的钩子堆栈中添加响应端验证,并考虑对异常响应形状设置失败关闭策略门。
  • 任何运行YOLO模式的人:研究人员的蜜罐中有401个会话已在自主YOLO模式下运行。1在自主会话中修改工具调用的路由器,其爆炸半径远大于修改您将要阅读的响应的路由器。不要通过您无法控制的路由器运行YOLO模式。

路由器到底是什么?

在本文的语境下,LLM API路由器是一种第三方服务,位于您的客户端与一个或多个上游模型供应商之间。您使用与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的路由器是一个更强的发现。提示中的私钥不是凭证绊线;它是诱饵,只有当路由器真的抽走钱包时才会产生被攻破的证据。有一个路由器做到了。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的自适应变体)。注入仅在请求匹配特定依赖或上下文时才触发:仅当请求涉及特定库时,仅当引用特定函数时,仅当提示中出现某些文件路径时。选择性触发使攻击在随机测试中不可见。

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

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

下一层的组合模式

我一直在写同样的结构性漏洞:各自经过授权的组件组合成未经授权的行为。Trivy到LiteLLM是软件包层的组合。静默出口是工具描述层的组合。MCP工具投毒是协议层的组合。axios维护者被入侵事件是人类维护者层的组合。

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

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

论文评估的三种防御

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

1. 失败关闭策略门。客户端对响应形状、允许的工具调用、允许的URL、允许的命令强制执行策略。任何超出策略的东西都失败关闭:客户端拒绝请求,而不是允许它。

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

3. 仅追加透明日志。客户端将每个请求和响应写入仅追加日志,无人可以追溯修改。日志记录不能阻止攻击,但可以让它们在取证上可追踪。

这些都不是银弹。我的解读是:失败关闭策略门是这三者中最强的,因为它拒绝允许清单之外的任何内容,而不是试图检测攻击;但摘要没有对防御进行排名,所以请将此视为我的观点,而不是论文的发现。异常筛查会漏掉看起来正常的攻击,而自适应规避变体(AC-1.a和AC-1.b)专门模仿测试条件下的正常行为。策略门的有效性取决于策略本身,而为”模型响应应该是什么样子”编写一份完整的策略很难。

您实际上应该做什么

如果您运行的agent正在通过您未构建的路由器调用LLM API:

  1. 停止使用您从市场购买或从公开社区获取的路由器,除非您信任运营方。这里的”信任”是指您有某种外部依据(已知的团队、已签订的合同、可对其执行的法律管辖区),而不是”它在市场上有好评”。

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

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

  4. 记录所有内容。仅追加透明日志是让您能够重建事件的东西。每个请求。每个响应。每个工具调用。将它们存储在路由器无法触及的地方。

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

令人不安的暗示

路由器攻击面是一个清晰的例子,说明agent生态系统在部署基础设施的速度上超过了保护它的速度。人们想要一个API密钥对接每个模型。人们想要价格套利。人们想要区域访问。路由器提供了所有这些。市场奖励它们。安全审计尚未发生。

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

每一次的模式都是一样的。我们构建agent堆栈的新一层。开发人员在任何人审计之前就采用新一层。攻击者出现。研究人员出现。社区写出了发现。注意到的运营者修补了他们的部署。没有注意到的运营者以艰难的方式发现了这一点。

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


常见问题

在这个语境下,什么是LLM API路由器?

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

这与CDN或常规HTTP代理有何不同?

CDN转发字节而不读取应用程序载荷。LLM API路由器读取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,2026年4月。本文中所有路由器攻击数据、攻击类别定义、实地研究方法和防御评估的主要来源。所有统计数据(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框架实现”所有四种攻击类别”,三种客户端防御:失败关闭策略门、响应端异常筛查、仅追加透明日志)均直接源自论文摘要。 

相关文章

Fork Bomb 救了我们

LiteLLM攻击者犯了一个实现错误。正是这个错误,让47,000次安装在46分钟内被发现。

1 分钟阅读

MCP服务器是新的攻击面

50个MCP漏洞,60天内30个CVE,其中13个严重。工具使用协议是无人审计的攻击面——这里是分类与修复方案。

1 分钟阅读

Ralph循环:我如何在夜间运行自主AI代理

我构建了一个使用停止钩子、生成预算和文件系统记忆的自主代理系统。以下是失败经验以及真正能交付代码的方法。

3 分钟阅读