文章总结: 攻击组织teampcp通过攻破Trivy的GitHubAction窃取litellm项目PyPI发布令牌,于3月24日向PyPI推送恶意版本1.82.7和1.82.8。恶意代码通过隐蔽导入或.pth文件劫持触发,窃取云凭证、API密钥、加密货币钱包等敏感数据并外传,同时植入持久化后门。建议受影响用户立即检查环境、清理后门并更新所有可能泄露的凭证。 综合评分: 93 文章分类: 供应链安全,恶意软件,应急响应,漏洞预警
LiteLLM 软件供应链投毒攻击事件分析
TtTeam
2026年5月11日 09:31 海南
在小说阅读器读本章
去阅读
LiteLLM 是一款在 AI 开发生态中非常流行的开源 Python 库和代理服务器(每月下载量超 9700 万次),被广泛用于统一调用上百种大语言模型(LLM)的 API。攻击组织 TeamPCP 成功接管了该项目的发布渠道,并向 PyPI 仓库发布了包含凭据窃取与后门植入的恶意版本(1.82.7 和 1.82.8)。
一、 攻击背景与入侵路径
这并非一起孤立的投毒事件,而是 TeamPCP 组织近期针对“可信安全基础设施”系列攻击的一环。 攻击链条如下:
源头感染 (Trivy 被黑):几天前(3月19日左右),该黑客组织攻破了 Aqua Security 的著名漏洞扫描工具 Trivy 的 GitHub Action。
凭据窃取:LiteLLM 项目在自身的 CI/CD 流水线中使用了被污染的 Trivy 进行安全扫描。恶意的 Trivy Action 在运行过程中,成功窃取了 LiteLLM 环境中的 PyPI 发布令牌(PYPI_PUBLISH token)。
恶意发布:攻击者利用该令牌,绕过了项目原有的 GitHub 发布审核流,于 3 月 24 日直接向 PyPI 仓库推送了恶意版本 1.82.7 和 1.82.8。
二、 攻击原理与恶意行为分析
此次攻击展现了极高的隐蔽性和破坏力,两个恶意版本采用了不同的触发机制:
- 触发机制
版本 1.82.7(隐蔽导入触发): 攻击者在 litellm/proxy/proxy_server.py 文件中注入了混淆的 base64 恶意代码。只有当用户或系统显式运行 LiteLLM 代理,或者在代码中 import litellm.proxy 时,恶意载荷才会被激活。
版本 1.82.8(底层 .pth 劫持触发): 攻击者引入了一种在 PyPI 投毒中相对新颖的攻击面——Python 启动钩子(Startup Hooks)。恶意包在 Python 的 site-packages 目录下放置了一个名为 litellm_init.pth 的文件。Python 在初始化时,内置的 site 模块会自动读取所有 .pth 文件,并执行其中以 import 开头的代码行。只要该恶意包被安装在环境中,系统上启动的任何 Python 进程(无论是跑脚本、运行测试、甚至单纯输入 python 进入交互环境)都会直接触发并执行恶意载荷。 注:正是由于恶意进程通过子进程不断调用 Python,触发了自身的无限循环,导致了内存耗尽的“Fork Bomb”现象,才让安全研究员无意间发现了此次攻击。
- 恶意 Payload 执行
一旦触发,恶意脚本将执行以下操作:
阶段一:全方位信息窃取 (Harvesting)恶意代码会疯狂扫描并收集主机上的高价值机密信息,包括但不限于:云服务凭证(AWS, GCP, Azure)和 Kubernetes Token。
各种 .env 环境变量文件(通常包含大量 AI API Key、数据库密码)。
开发者密钥(~/.ssh、~/.gitconfig 等)。
加密货币钱包(Bitcoin、Ethereum、Monero、Dogecoin 等钱包配置和私钥)。
阶段二:加密与外传 (Exfiltration)使用 4096 位 RSA 密钥和 AES-256-CBC 对所有窃取的数据进行加密并打包成 tar 文件,随后通过 POST 请求隐蔽外传至攻击者的 C2 域名 models.litellm[.]cloud(以及早期使用的 checkmarx[.]zone)。
阶段三:持久化后门在 Linux 系统中写入持久化后门 ~/.config/sysmon/sysmon.py,并创建 accompanying systemd 服务以维持长期控制。
如果发现 Kubernetes Service Account Token,恶意脚本将尝试读取当前 K8s 集群中所有命名空间的 Secret,甚至尝试在 kube-system 命名空间中创建特权 Alpine Pod 以接管整个节点。
三、 影响范围评估
直接安装者:在 3月24日 8:30 UTC 至 11:25 UTC 期间通过 pip install litellm(且未锁死安全版本)安装或更新的用户。
间接受害者:大量的 AI Agent 框架、MCP 服务器组件(如 Cursor 相关插件)、大模型编排工具均将 LiteLLM 作为底层依赖。如果在 CI/CD 自动构建、Docker 镜像打包阶段因为没有严格锁定版本,而拉取到了恶意版本,将导致生产环境沦陷。
四、GoPlus安全建议
若您的企业或个人设备在此期间涉及 AI 相关的 Python 环境运行,请立即执行以下应急措施:
风险排查
检查环境:立即排查所有主机、Docker 镜像和 CI/CD 流水线,检查是否安装了 1.82.7 或 1.82.8 版本的 litellm。(pip show litellm | grep Version)
检查后门文件:寻找是否存在 litellm_init.pth 文件,以及 ~/.config/sysmon/sysmon.py 后门程序和相关的 systemd 异常服务。
阻断与清理
隔离受感染的机器或 Kubernetes 节点,切勿仅尝试卸载包,建议直接销毁受感染的容器/实例并重新构建。
废弃并更新API Keys 、Access Keys、SSH Keys等可能已泄露的隐私数据。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:TtTeam 《LiteLLM 软件供应链投毒攻击事件分析》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论