文章总结: 本文研判2026年3月LiteLLM供应链投毒事件,指出其为TeamPCP组织利用Trivy凭证失窃发起的级联攻击。攻击者通过污染CI/CD链条植入窃密载荷,利用.pth机制实现隐蔽持久化,威胁AI基础设施密钥安全。结论强调高权限流水线组件存在结构性风险,建议企业彻底轮换凭证、严格锁定依赖版本并审查信任模型。 综合评分: 92 文章分类: 供应链安全,威胁情报,恶意软件,AI安全,安全大事件
LiteLLM 供应链投毒事件深度研判
🅼🅰🆈 🅼🅰🆈
独眼情报
2026年3月25日 13:31 湖北
情报置信度声明: 本文基于截至 2026 年 3 月底的多家安全机构公开报告与样本分析。文中涉及的攻击链溯源部分包含基于时间线与依赖关系的逻辑推断,已在相应段落予以标注。
事件概述
2026年3月24日,Python 生态中最流行的大模型统一调用库 LiteLLM 在 PyPI 上遭到供应链投毒。攻击者在 1.82.7 和 1.82.8 两个版本中植入了凭证窃取恶意载荷,受影响版本在 PyPI 上存活约3小时后被隔离下架。LiteLLM 日均下载量约340万次,月下载量超9500万,不仅是广泛使用的开源工具,更是 AI 基础设施的关键中间件。
这起事件并非孤立发生。多家安全研究机构(Wiz、Snyk、Endor Labs 等)的追踪研判显示,此次攻击与 3 月份发生的多起针对 CI/CD 组件的供应链攻击高度关联。该活动集群(疑似被追踪为 TeamPCP)的行动轨迹呈现出明显的级联特征:前两击分别命中了 Aqua Security 的漏洞扫描器 Trivy(3月19日公开披露)和 Checkmarx 的 KICS 安全扫描工具(3月23日),第三击则精准落在了 LiteLLM 上。
攻击链:基于依赖关系的高置信度推断
当前业界观测到的整体攻击链逻辑,展现了教科书级别的供应链级联感染。但需注意,目前从 Trivy 到 LiteLLM 的完整 Token 泄露链路属于基于依赖关系与时间线的高置信度推断,尚未通过公开的构建日志或 commit 记录得到直接证据确认。
- 起点(Trivy 的凭证失窃与不彻底轮换): 根据公开披露的线索,攻击的真正起点可以追溯到 2 月 27-28 日。攻击者利用名为
hackerbot-claw的机器人通过恶意 Pull Request 触发了工作流漏洞并窃取了 PAT(Personal Access Token)。Aqua Security 在 3 月 1 日发现了入侵并尝试了凭证轮换,但该轮换可能并非原子性(atomic)或不够彻底。这导致攻击者截获了新 Token 或保留了部分访问权限,进而促成了 3 月 19 日的“第二击”——通过篡改 GitHub Actions 的版本标签,伪造合法维护者的提交记录,触发了带毒的 v0.69.4 版本发布。 - 中间环节(横向扩散): 窃取的凭证随即被武器化。Docker Hub 上出现了带毒的 Trivy 镜像(0.69.5、0.69.6),npm 生态中数十个包被 CanisterWorm 蠕虫感染,Checkmarx 的 KICS GitHub Action 在 3 月 23 日同样沦陷。路径推断: 据 LiteLLM 维护者自述及 Snyk 分析,LiteLLM 的 CI/CD 流水线使用了 Trivy 进行安全扫描,且未严格锁定安全版本。在 Trivy 被投毒后,LiteLLM 的构建流程大概率拉取了带毒版本,导致 PyPI 发布 Token 暴露。
- 终点(LiteLLM 投毒): 掌握 PyPI Token 后,攻击者在 3 月 24 日接连发布 1.82.7 和 1.82.8 版本。1.82.7 将恶意代码嵌入
litellm/proxy/proxy_server.py;而 1.82.8 则采用了更具隐蔽性和破坏性的.pth文件持久化机制。
信任模型坍塌:为什么 .pth 机制如此危险
Python 的 site 模块在解释器初始化阶段,会自动扫描 site-packages 目录下所有 .pth 文件。这类文件本用于添加搜索路径,但其中以 import 开头的行会被作为代码直接执行。这意味着,只要包被安装,任何启动 Python 解释器的行为(运行脚本、启动 Jupyter Notebook 等)都会静默触发恶意代码。
Snyk 的分析指出,这个 .pth 文件被正确地声明在了 wheel 包的 RECORD 文件中,哈希校验完全通过。这里的核心安全危机并非哈希校验机制失效,而是发布侧的信任模型被突破。在发布凭证已被攻破的情况下,pip install --require-hashes 无法区分恶意版本,因为攻击者使用合法凭证签署了包含恶意载荷的合法哈希发布。
讽刺的暴露细节: > 此次攻击被 FutureSearch 工程师发现,并非归功于静态扫描报警,而是恶意代码自身的 Bug:
.pth文件在 Python 启动时触发,而它又通过subprocess.Popen启动子进程,子进程再次触发.pth,形成指数级 Fork Bomb,导致主机崩溃而暴露。
恶意载荷:三阶段执行与未经验证的擦除逻辑
被植入的恶意代码执行一个三阶段攻击流程:
| 阶段行为 | 目标 |
| — | — |
| 凭证收割 | 遍历主机敏感文件:SSH 私钥、.env、AWS/GCP/Azure 凭证、K8s 配置、数据库密码、加密钱包、shell 历史等。 |
| 加密外传 | 用硬编码的 4096 位 RSA 公钥 + AES-256-CBC 加密,打包为 tpcp.tar.gz,POST 至 models.litellm[.]cloud。 |
| 横向移动 | 读取 K8s 集群 Secrets;在节点创建特权 Alpine Pod;安装 systemd 后门 sysmon.py,轮询 C2 获取新载荷。 |
恶意基础设施与“恶作剧”印记:分析显示,恶意代码还会尝试从 checkmarx[.]zone 下载额外载荷。OX Security 发现该域名目前返回的是一个 YouTube 视频链接(日文二创名曲「Bad Apple!!」)。此外,其 CanisterWorm 变种使用的 ICP(Internet Computer Protocol)去中心化网络 C2,当前配置的占位载荷同样是一个经典的 YouTube 视频——“Rickroll”(Never Gonna Give You Up)。这体现了该活动集群在部署真实载荷前测试联通性的 TTP,同时也带有强烈的黑客亚文化特征。
关于“伊朗节点擦除”逻辑的澄清:有研究员(如 Charlie Eriksen)在样本分析中发现,载荷包含差异化破坏逻辑:若匹配特定条件,则执行 rm -rf / --no-preserve-root 擦除系统;否则仅安装后门。最新技术分析证实,该触发机制是通过检测目标系统的时区(Time Zone)和默认语言环境(是否为波斯语 Farsi)来实现的。
研判说明:尽管技术触发机制已明确,但这是否代表地缘政治动机,亦或是纯粹的测试代码/诱饵逻辑,目前仍属未知,不可直接定性为定向攻击。
研判结论与更大图景
多家机构将此次系列攻击归因至一个自称「TeamPCP」的活动集群(共享相同的 RSA 密钥对、打包命名及基础设施)。基于目前的观测,我们可以得出以下两点核心研判:
1.AI 基础设施成为密钥聚合的“爆破点”: LiteLLM 的产品定位——统一管理和转发百余个大模型提供商的 API 密钥——使其天然成为安全负债的焦点。虽然当前尚不足以断定该组织“专门针对 AI 供应链”,但攻破 LiteLLM 意味着一次性收割目标组织内 OpenAI、Anthropic、Azure 等几乎所有 AI 核心资产。
2.高权限 CI/CD 组件的结构性隐患: 从 Trivy 到 KICS 再到 LiteLLM,观测到的攻击目标呈现出偏向流水线中被隐性信任的高权限组件的趋势。这些组件广泛存在于传递依赖(transitive dependency)中,拥有极高的环境访问权限。只要被攻破环境中的凭证轮换不够彻底,攻击链就会继续向下一个高价值目标延伸。
关于受害规模的注记: > 虽有媒体援引未具名消息源称数据外传请求量级可能达 50 万次,但该数据未说明来源渠道,且大概率未经过滤与去重。实际受影响的组织数量仍需等待更详尽的取证报告披露。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:独眼情报 🅼🅰🆈 🅼🅰🆈《LiteLLM 供应链投毒事件深度研判》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。






![[比赛喜报]这位宝子在“长城杯”获得一等奖](/images/random/titlepic/3.jpg)

评论