周三,开源 AI 网关 LiteLLM 遭遇供应链攻击。攻击者破坏了其发布流程,分发带有恶意代码的版本 v1.107.0。该版本内置了旨在窃取云和人工智能凭证的恶意软件,以及能够通过 PyPI 和 Docker 注册表在受感染机器上执行任意代码的远程访问木马(RAT)。

受影响范围与紧急处置
PyPI 在数小时内隔离了该特洛伊木马版本,Docker Hub 和 GHCR 也迅速删除了受损镜像 litellm/litellm:1.107.0。然而,任何在上述平台上运行过该软件包的用户都应假定其秘密已被盗取。目前最新的安全版本为 v1.106.2。
LiteLLM 由 BerriAI 开发,提供包括 OpenAI、Anthropic 和 Google Gemini 在内的 LLM 提供商统一接口,每周下载量约为 2300 万次。由于受损安装可能包含 LLM API 密钥、云身份凭证及数据库连接字符串,此次攻击潜在影响巨大。尽管确切规模尚难判断,但据 CloudSEK 数据,3 月发生的一次类似 LiteLLM 安全漏洞事件曾波及全球超过 2,500 家组织和 434,000 条 CI/CD 管道。
技术细节:恶意载荷分析
根据 Wiz 研究人员 Benjamin Read 和 Rami McCarthy 的说法,恶意载荷源自 github.com/Berri-AI/litellm 仓库中的一个恶意提交,该地址是合法 BerriAI 组织名称的一个字符串变体。攻击者利用此仓库向 LiteLLM 发布管道注入了三个恶意文件:
- cook.pth:触发器文件,导致第二个文件自动运行。
- cook.py:每当机器调用 Python 时自动执行,无需用户额外操作。
- sitecustomize.py:即 RAT 本体。Python 解释器启动时执行此文件,进而生成后台守护进程。
Aikido 安全恶意软件猎人 Ilyas Makari 指出,该恶意软件在执行时会收集大量敏感数据。具体指标包括检查 /tmp/.pc_once_*(若存在则表明数据外泄已开启)和 /tmp/remote_code_loader.lock(若存在则表明 C2 代理正在运行或曾运行)。这一情况同样适用于通过 latest、major-latest 或 major-stable 标签拉取官方 Docker 镜像 litellm/litellm:1.107.0 的用户。
数据窃取机制
Read 和 McCarthy 描述称,信息窃取器(infostealer)通过 16 个模块针对浏览器、云提供商和 AI 服务收集数据:
- 浏览器凭证:从 Chrome、Firefox、Edge 和 Safari 中窃取凭证和 Cookie。
- AWS 资源:获取 ~/.aws/ 目录下的 AWS 凭证、环境变量以及 EC2/ECS 实例元数据 (IMDS)。
- GCP 与 Azure:从 CLI 缓存中收集 Google 云平台服务账户密钥、应用程序默认凭证以及 Microsoft Azure 令牌。
- 其他密钥:移动 OpenAI、Anthropic、Cohere 等 LLM 提供商的 API 密钥,以及 SSH 私钥、GPG 密钥和 Shell 历史文件。
所有被盗数据均使用 AES-256-CBC 加密,加密密钥通过 RSA-4096 公钥包裹,最终通过 HTTP POST 发送至攻击者控制的域名 http://www[.]litellm[.]dev/healthcheck。
缓解建议
供应链安全提供商 Socket 已向 LiteLLM 用户和安全团队发布了广泛的威胁追踪和缓解指令。Socket 研究人员建议,使用 v1.107.0 版本的团队应立即停止部署,并调查 Python 安装后运行的环境,包括代理容器和 CI 运行器。务必认真排查环境中是否存在上述失陷指标。
BerriAI 尚未回应 The Register 的置评请求。





