← 回到手记
代码

紧急插播:LiteLLM 1.107.0 供应链投毒,PyPI 与 Docker 镜像被植入窃密木马

已核实:LiteLLM 1.107.0 于 10 月 21 日通过被攻破的发布流水线推送到 PyPI/Docker,含凭证窃取与远程代码加载;请钉 1.106.2 并轮换密钥。

发生了什么(已核实)

2026 年 10 月 21 日(UTC),开源 AI 网关/统一接口库 LiteLLM 的发布流水线被攻破,恶意版本 litellm==1.107.0 被推送到 PyPI 与 Docker/GHCR。

该版本并非在官方 GitHub 源码标签中投毒,而是通过构建流程指向仿冒仓库 Berri-AI/litellm(合法仓库为 BerriAI/litellm,差一个连字符),在 wheel 与镜像中注入启动钩子:

  • cook.pth / cook.py:凭证收集(privcollect)
  • sitecustomize.py:后台远程代码加载器

Python 一启动就会执行这些钩子,不必 import litellm。恶意包在 PyPI 上约存活 2 小时(约 11:39–13:23 UTC),相关 Docker 浮动标签窗口略长;目前官方已下架/改指安全产物。

以上内容与 Socket 研究报告、LiteLLM 官方事故说明、GitHub 安全讨论及多家安全厂商交叉一致,可作事实陈述。

Socket 方面称 LiteLLM 约有 2300 万/周下载量(其 X 帖亦写「9200 万+/月」,数量级一致)。企业私有 registry 据官方说明未受影响。

谁可能中招

在以下时间窗内安装或运行过相关产物的环境,应视为可能暴露:

渠道 受影响版本/标签 大致窗口(UTC,10/21)
PyPI litellm==1.107.0(全部 7 个 wheel) 约 11:39–13:23
Docker Hub / GHCR v1.107.0、latest、main-latest、main-stable 等 约 11:46 起至当日午后清理完成

未使用 1.107.0、且未拉过上述浮动标签的环境,按官方说明此前版本安全。

恶意载荷会尝试收集云厂商凭证、SSH/GPG、.env、浏览器数据,以及 Codex / Claude / Cursor 等 AI 工具本地凭据,并可能读取 LiteLLM Proxy 库中的密钥配置;另有远程代码加载路径。

建议立刻做的事

不要在可疑环境里先跑 pip / python 做「检查」——那会再次触发钩子。

  1. 确认是否装过 1.107.0:用干净环境看 lockfile、构建日志、镜像 digest(例如官方提到的恶意索引 sha256:1bbcb1443bc962e45f5aad53fe3d2c30600e0379715fb6c664cdd3ac126c339e);在文件系统中查找 cook.pth、sitecustomize.py、litellm-1.107.0.dist-info(找到可确认暴露;找不到不能证明干净)。
  2. 隔离后清理:从 shell 删除各 site-packages 中的 cook.pth、cook.py、sitecustomize.py 及对应 __pycache__;结束占用 /tmp/remote_code_loader.lock 的后台 Python;最好整机/整镜像重建。
  3. 钉死安全版本:litellm==1.106.2(或经核实的更早干净版本);容器请按 digest 固定,避免浮动标签。
  4. 若曾联网运行过 1.107.0,按已泄露处理并轮换:实例/任务 IAM、Proxy 中的 provider / master / virtual key、DATABASE_URL、环境变量里的一切密钥,以及本机 AI 工具与开发者凭据。可结合 CloudTrail 等审计 GetCallerIdentity 等异常使用。

信息来源

说明:本文为紧急安全通告。攻击链细节仍以官方持续更新为准;文中下载量等数字均标注出处,未另作推算。

✳

谢谢你读到这里。