litellm 1.82.7/1.82.8 版本遭入侵:通过 PyPI 的凭证窃取机制
PyPI 上的 litellm 库 1.82.7 和 1.82.8 版本包含恶意代码,用于窃取 SSH 密钥、云凭证、Kubernetes 机密以及 API 密钥。该攻击利用供应链,在启动 Python 解释器或导入模块时自动触发。受影响系统包括那些带有传递依赖的系统,例如 Cursor 的 MCP 插件。
事件发现
攻击通过 .pth 文件中的分叉炸弹暴露出来,该炸弹耗尽了主机资源。如果没有这个 bug,恶意软件本可以悄无声息地运行。这些版本于 2026 年 3 月 24 日 UTC 10:39–10:52 之间发布,没有任何 GitHub 更新——恶意代码仅注入到 PyPI 包中,绕过了代码审查。
FutureSearch 研究人员注意到缺少发布标签。仓库本身是干净的,这是供应链攻击的典型特征。
恶意软件技术细节
第一阶段:数据收集
载荷提取以下内容:
- SSH 密钥和配置。
.env文件。- AWS、GCP、Azure 凭证。
- Kubeconfig 和 Kubernetes 机密。
- 数据库密码。
- Shell 历史记录。
- 加密钱包文件。
- 环境变量。
会向云提供商的 IMDS 端点发出查询。
第二阶段:数据外泄
数据使用 AES-256-CBC(硬编码公钥 RSA-4096)加密后,发送至 models.litellm[.]cloud——一个非官方域名。
第三阶段:持久化
在 Kubernetes 中,恶意软件会:
- 通过服务账户令牌读取所有集群机密。
- 在
kube-system中创建特权alpine:latestpod,并挂载主机 FS。 - 安装后门
~/.config/sysmon/sysmon.py。 - 注册 systemd 用户服务,在所有节点上运行。
1.82.8 版本使用 litellm_init.pth(34 628 字节),由 Python 自动执行。1.82.7 版本在 proxy/proxy_server.py 中包含混淆代码。
检测和修复
使用以下命令检查系统:
# litellm version
pip show litellm
# Traces in uv cache
find ~/.cache/uv -name "litellm_init.pth"
# Backdoor
ls ~/.config/sysmon/sysmon.py
ls ~/.config/systemd/user/sysmon.service
在 Kubernetes 中:kubectl get pods -n kube-system | grep node-setup-。
如果安装了 1.82.7/1.82.8 版本:
pip uninstall litellm
rm -rf ~/.cache/uv
# Or: pip cache purge
回滚至 1.82.6(3 月 22 日,Endor Labs 确认干净)。轮换所有凭证:SSH 密钥、云令牌、kubeconfig、API 密钥、数据库密码。检查过去 24–48 小时内的 CI/CD 管道和 Docker 镜像。
TeamPCP 活动背景
该攻击属于 TeamPCP 活动的一部分(自 2025 年 12 月以来):
- 3 月 19 日:Trivy(
trivy-action的 75/76 个标签)。 - 3 月 21–23 日:KICS/Checkmarx、OpenVSX、npm 中的 CanisterWorm(64+ 个包)。
- 3 月 24 日:litellm。
共同特征:AES-256 + RSA-4096,使用同一公钥。litellm 的 GitHub Issue #24512 被标记为“not planned”并关闭,评论内容可疑——可能账户遭入侵。
入侵指标
- C2 域名:
models.litellm[.]cloud。 - 文件:
litellm_init.pth。 - SHA-256:
ceNa7wMJnNHy1kRnNCcwJaFjWX3pORLfMh7xGL8TUjg。 - 后门:
~/.config/sysmon/sysmon.py。 - K8s:
kube-system中的node-setup-*pod。
关键点
- .pth 文件中的恶意代码无需
import即可触发,影响所有 Python 进程。 - 数据外泄采用加密;C2 是一个伪造的 litellm 域名。
- Kubernetes 利用通过特权 pod 获得完整集群访问权限。
- 属于 TeamPCP 攻击链的一部分:需监控 Trivy、KICS、npm 包。
- 必须回滚至 1.82.6 并全面轮换凭证。
— Editorial Team
暂无评论。