出大事了,一个很多人日常在用,甚至没注意到它存在的库——litellm 被投毒了!
这个项目本身是用来统一调用各类大模型 API 的,GitHub 超 4 万星,每月下载接近 1 亿次。而问题就在于:攻击者成功往 PyPI 推送了带后门的版本。
只要你执行过一行:
pip install litellm
或者它作为依赖被间接安装,你机器上的核心敏感信息就可能已经被打包带走。
一次 pip install,可能让整个服务器“裸奔”
这次攻击到底有多狠?
简单说一句话:不需要你使用这个库,只要 Python 启动过,就已经执行了恶意代码。
攻击核心在一个很容易被忽视的机制:.pth 文件
Python 在启动时会自动加载 site 模块,而 .pth 文件如果包含 import 语句,是会被直接执行的。
攻击者就利用这一点,在包里塞了一行代码:
import os, subprocess, sys; subprocess.Popen([...])
效果是:
- 不需要 import litellm
- 不需要调用任何函数
- 不需要运行项目代码
只要发生以下任意行为,就会触发:
- pip 操作
- python -c
- pytest 测试
- IDE 启动 Python 服务
被偷走的,不只是 API Key
恶意代码做的事情非常系统化:
全盘扫描敏感数据
目标目录包括:
- /home
- /opt
- /srv
- /var/www
- /app
- /data
- /tmp
重点收集:
- SSH 密钥
- 云厂商凭证(AWS / GCP / Azure)
- Kubernetes Secrets
- 数据库连接信息
- .env 文件
- 加密钱包信息
加密 + 外传(专业级打包)
整个数据外传流程非常标准化:
- 生成随机 32 字节 AES 密钥
- 用 AES-256 加密数据
- 再用内置 4096 位 RSA 公钥加密 AES 密钥
- 打包为 tar.gz
- POST 到仿冒域名
这不是脚本小子,是标准的成熟攻击链
K8s 环境直接横向扩散
如果检测到 Kubernetes:
- 自动部署特权 Pod
- 尝试感染集群内其他节点
已经不是“窃取”,而是“接管基础设施”
持久化后门
攻击并不会随着你卸载包结束。
后门会:
- 写入
~/.config/sysmon/sysmon.py - 注册 systemd 用户服务
- 每 50 分钟拉取远程指令
- 延迟 5 分钟执行(规避沙箱)
属于典型长期控制
为什么几乎没人第一时间发现?
因为攻击方式太“干净”:
使用合法 PyPI 发布令牌
wheel 包哈希完全正确
pip install --require-hashes无法防御
没有异常 import 行为
唯一暴露它的原因甚至有点“意外”:
攻击代码写得不够严谨
子进程启动后再次触发 .pth,形成递归执行,最终类似 fork bomb,把一台机器内存打爆,才被注意到。
如果这个 bug 不存在——
可能潜伏几周都不会被发现。
更离谱的是攻击源头
整个链路起点,是安全工具本身:
- 3/19:Trivy 被攻陷
- 攻击者窃取 PyPI 发布令牌
- 3/24:直接发布带毒版本
“用来保护你的工具,变成了入口”
社区响应也被压制
事件被报告到 GitHub 后:
- 102 秒内
- 73 个被盗账号
- 发布 88 条垃圾评论
直接把 issue 淹没
随后:
- 用维护者账号关闭 issue
谁会被影响?
你可能觉得“我没装 litellm”,但问题在于:
它是很多项目的依赖,包括:
- DSPy
- MLflow
- Open Interpreter
超过 2000 个包间接依赖
目前确认:
- 已有 1000+ SaaS 环境感染
- 预计影响规模:1 万+
现在该怎么做?
如果你使用过以下版本:
litellm 1.82.7
litellm 1.82.8
请直接按“已泄露”处理:
必做:
- 轮换所有 API Key
- 重置云凭证
- 更新数据库密码
- 更换 SSH Key
检查:
- 是否存在异常
.pth文件 - 是否有 systemd 可疑服务
- 是否有异常外联请求
安全版本:
litellm==1.82.6
自查脚本(覆盖版本检查、.pth 搜索、后门检测、可疑连接、K8s 扫描),安全版本:litellm==1.82.6。装了 1.82.7 或 1.82.8 的,假设所有凭证已泄露,立即轮换。
也可以尝试使用:CocoLoop Safe - 恶意 Skill 专杀工具 · CocoLoop ,现在SKILL的安全自查刻不容缓
这次事件真正的警示
这不是一个单点漏洞,而是一次完整供应链攻击演示:
- 安全工具被攻破
- 发布权限被利用
- 包管理体系信任被绕过
- 运行时机制(.pth)被武器化
更关键的一点是:
攻击发生在“安装阶段”,而不是“运行阶段”
如果你在做 AI、SaaS、自动化系统,这件事其实就一句话总结:
现在最危险的代码,不是你写的,而是你依赖的。