事件概述
PyPI上的litellm==1.82.8版本wheel包被植入了恶意.pth文件(litellm_init.pth,34628字节),每次Python解释器启动时都会自动执行凭证窃取脚本,不需要你主动import litellm就会触发。
这是一起严重的供应链攻击事件,恶意文件已经被列入包自身的RECORD清单中:
litellm_init.pth,sha256=ceNa7wMJnNHy1kRnNCcwJaFjWX3pORLfMh7xGL8TUjg,34628
复现方法
pip download litellm==1.82.8 --no-deps -d /tmp/check
python3 -c "
import zipfile, os
whl = '/tmp/check/' + [f for f in os.listdir('/tmp/check') if f.endswith('.whl')][0]
with zipfile.ZipFile(whl) as z:
pth = [n for n in z.namelist() if n.endswith('.pth')]
print('PTH files:', pth)
for p in pth:
print(z.read(p)[:300])
"
你会看到litellm_init.pth包含如下内容:
import os, subprocess, sys; subprocess.Popen([sys.executable, "-c", "import base64; exec(base64.b64decode('...'))"])
恶意行为分析
恶意载荷经过双重base64编码,解码后会执行以下操作:
阶段1:信息收集
脚本会从系统中窃取几乎所有敏感数据:
- 系统信息:主机名、当前用户、系统版本、IP地址、路由表
- 环境变量:所有环境变量(包含所有API密钥、Secret、Token)
- SSH密钥:~/.ssh/目录下的所有密钥、配置、known_hosts
- Git凭证:
/.gitconfig、/.git-credentials - 云服务凭证:AWS、GCP、Azure的所有配置文件和凭证
- Kubernetes配置:~/.kube/config和所有K8s配置文件、服务账号Token
- Docker配置:~/.docker/config.json等
- 包管理器配置:.npmrc、.vault-token、.netrc、数据库配置文件等
- Shell历史:所有shell的历史记录
- 加密货币钱包:Bitcoin、Ethereum等所有主流加密货币的钱包文件
- SSL私钥:/etc/ssl/private/下的所有私钥、Let's Encrypt证书密钥
- CI/CD密钥:terraform.tfvars、GitLab CI、Jenkins等配置文件
- 数据库凭证:PostgreSQL、MySQL、Redis等配置文件
- Webhook地址:Slack、Discord等Webhook URL
阶段2:加密和外传
- 收集到的数据写入临时文件
- 生成随机32字节AES-256会话密钥
- 使用AES-256-CBC加密收集到的数据
- AES会话密钥用硬编码的4096位RSA公钥加密
- 打包成tpcp.tar.gz后上传到攻击者控制的服务器:models.litellm.cloud/
注意:攻击者域名是litellm.cloud,不是官方的litellm.ai,请注意区分。
影响范围
任何通过pip安装了litellm==1.82.8的用户,所有环境变量、SSH密钥、云凭证和其他机密都已经被收集并发送到攻击者服务器。影响包括:
- 本地开发机器
- CI/CD流水线
- Docker容器
- 生产服务器
受影响版本
- 确认受影响:litellm==1.82.8
- 其他版本:尚未检查,攻击者可能已经攻陷了多个版本
应对措施
- PyPI官方:立即下架litellm 1.82.8版本
- 用户:立即检查site-packages目录下是否存在litellm_init.pth文件
- 用户:立即轮换所有在安装过litellm 1.82.8的系统上存在过的凭证,包括环境变量、配置文件中的所有密钥
- BerriAI官方:审计PyPI发布凭证和CI/CD流水线,确认入侵点
事件时间线
- 发现时间:2026-03-24
- 官方更新:请关注官方issue #24518获取最新进展