返回行业动态
企业AI落地

LiteLLM 1.107.0 被投毒:AI 网关成了凭据收割点,攻击者已开始试钥匙

开源 AI 网关 LiteLLM 的发布流水线被入侵,1.107.0 版本在 PyPI 与容器仓库带毒约两小时后下架。载荷在 Python 解释器启动时即运行,窃取云凭据、SSH 私钥与各家模型 API Key。Wiz 记录到外泄约 4.5 小时后攻击者即调用 AWS 接口验证凭据,呈现 LLMjacking 特征。受影响组织须轮换全部凭据并重建环境,而非简单升级。

来源:LiteLLM 官方安全事件通告:2026-10-21 版本 1.107.0 发布流水线被入侵原标题:Contained: Oct 21, 2026 LiteLLM release v1.107.0 Compromised查看原文
数据中心走廊中央一只半透明胶囊状网关设备,一条暗红色蠕虫状光缆从侧面刺穿外壳,内部数据流在分岔处分向青绿与赤红两路

图片来源:北京拓实科技原创(AI 生成封面)

发生了什么

10 月 21 日,开源 AI 网关 LiteLLM 的发布流水线被入侵。恶意版本 1.107.0 在 11:39 至 13:23 UTC 之间出现在 PyPI,七个平台的 wheel 全部带毒;容器仓库上的 v1.107.0、latest、main-latest、main-stable 四个标签到 14:20 UTC 才撤下。源码 tag 干净,恶意文件只存在于构建产物与被改动一行的 pyproject.toml 中。

攻击者用三组开发者 GitHub CLI OAuth 令牌越过控制:强推提交覆盖分支保护,借官方 staging 跑通构建,第二个账号通过生产审批门,第三个账号删除工作流记录。构建源指向仿冒仓库 Berri-AI/litellm(官方为 BerriAI/litellm)。

载荷:解释器一启动就执行

  • cook.pth 只有一行 import cook,Python 启动即加载 cook.py,去混淆后运行 privcollect 窃取程序,无需真的调用 litellm。
  • 目标是 SSH 私钥、云凭据、CI/CD 密钥、浏览器密码、AI 编程工具令牌,以及代理库里保存的各家模型 API Key。
  • 数据打包后 POST 到仿冒域名 litellm[.]dev/healthcheck。
  • sitecustomize.py 另起守护进程,每小时读 GitHub 上的 domain.txt 取地址并拉二阶段代码,锁文件为 /tmp/remote_code_loader.lock。

已被实际利用

Wiz 记录到,外泄约 4.5 小时后,攻击者自 168.100.8.57 与 165.227.201.8 对 CI runner 与 Kubernetes 节点上的 AWS 实例角色凭据调用 sts:GetCallerIdentity,随后是 bedrock:ListFoundationModels 与 ListModels,符合盗用算力跑模型的 LLMjacking 特征。部分凭据不只泄露,而已被验证可用。

根因:AI 编程助手把令牌写进网关日志

LiteLLM 复盘称,一套暴露在公网的内部部署出现来源不明的账号,攻击者疑经刚修补的漏洞进入并从日志取走令牌。更有普遍意义的细节是:Claude Code 会把用户的 GitHub CLI OAuth 令牌写进响应体,响应体被网关记录后,令牌就落到日志里。该项目三月已出过同类事件,此后做了私有仓库、不可变标签与镜像签名,但 10 月 19 日临时放开两名工程师的 backport 权限,恰好抵掉了这些约束。

企业侧怎么处置

  • 判定:10 月 21 日 11:39 至 13:23 UTC 装过未锁定版本,或 11:46 至 14:20 UTC 拉过上述标签,即视为受影响。
  • 不要用 pip 重装覆盖清理,.pth 会再次生效;应删除 cook.pth、cook.py、sitecustomize.py 及 pycache 副本,并结束持有锁文件的进程。
  • 在干净机器上轮换全部云凭据、SSH 密钥、仓库令牌与模型 Key;环境与镜像按审阅过的 digest 重建,锁定 1.106.2 或更早。
  • 网关日志记什么、谁有权读,应与生产凭据同等对待。

尚不确定:GitHub 撤下 domain.txt 前文件只有测试值,无法证明每台受感染主机都收到二阶段载荷。

编辑说明

本文由北京拓实科技根据公开信息整理,核心事实与数据请以原始来源为准。