月下载量接近 9700 万次 的 AI 开源套件 LiteLLM,被曝遭遇供应链攻击。受影响的 PyPI 版本为 v1.82.7 和 v1.82.8,两者都被植入恶意代码,可窃取加密钱包文件、SSH 密钥、云凭证以及其他敏感��息。受损版本已于 3 月 24 日 下架,但已经安装过的环境仍存在风险。
攻击链从 PyPI 账户凭证被盗开始
最早披露异常的是 FutureSearch 工程师 Daniel Hnyk。他与 Callum McMahon 在将 LiteLLM 作为 Cursor MCP 插件的间接依赖引入时,发现异常行为并展开逆向分析。调查结果显示,幕后攻击者为 TeamPCP。该组织此前曾入侵开源安全扫描器 Trivy 的 CI/CD 管线,并借此获取 LiteLLM 维护者的 PyPI 账户凭证,随后上传带后门的恶意版本。
恶意代码分三步执行,直接瞄准开发环境
第一阶段是凭证收割。恶意 .pth 文件 litellm_init.pth 会在每个 Python 程序启动时自动执行,不需要显式 import。其目标包括 SSH 密钥、.env 文件中的 API 密钥、AWS、GCP、Azure 云凭证、Kubernetes 配置、Git 凭证、Shell 历史记录,以及加密货币钱包文件和数据库密码。
第二阶段是数据外传。被窃取的信息会��用硬编码的 4096-bit RSA 公钥配合 AES-256-CBC 加密,打包为 tar 压缩文件后,通过 POST 请求发送到 https://models.litellm.cloud/。报道指出,这个域名与 LiteLLM 官方无关,而是攻击者控制的泄露端点。
第三阶段则是横向移动与持久化。若目标机器中存在 Kubernetes token,恶意程序会读取所有命名空间的 secrets,并在每个 kube-system 节点部署特权 alpine:latest Pod,挂载主机文件系统。同时,它还会在 /root/.config/sysmon/sysmon.py 写入持久化后门,并创建 systemd 用户服务,保证系统重启后仍能继续运行。
不到 10 小时内完成上传、暴露与下架
事件时间线显示,3 月 24 日 10:52 UTC,v1.82.8 被上传至 PyPI;12:30 UTC,v1.82.7 被确认同样受损;13:03 UTC,GitHub 上的通报 Issue 一度被机器人误判为垃圾信息,并以“not planned”关闭,公开预警因此延后;直到 20:15 UTC,相关版本才从 PyPI 下架。按披露信息计算,恶意版本的暴露时间约为 9 小时。
加密开发者风险更高,修复重点在轮换密钥
LiteLLM 是常用的 AI 模型代理套件之一,部分加密和 DeFi 项目的 AI Agent 基础设施会把它作为模型路由层。此次恶意代码将加密钱包文件直接列入窃取清单,使得在同一台机器上运行 LiteLLM 且保存加密资产的开发者面临直接风险。更麻烦的是,LiteLLM 还可能通过 MCP 插件作为间接依赖被安装,用户未必知道自己已经中招。
已安装 LiteLLM 的用户需要先用 pip show litellm 检查版本,确认是否包含 v1.82.7 或 v1.82.8;随后删除受影响版本并清理 pip 缓存;检查 ~/.config/sysmon/sysmon.py 和 sysmon.service 是否存在;若运行在 Kubernetes 环境中,还应扫描 kube-system 命名空间内是否出现 node-setup-* Pod。报道特别提醒,所有 SSH 密钥、云凭证、API 密钥和加密钱包私钥都应视为已经泄露,并立即轮换。

