2026 年 3 月 24 日,一个令人不安的安全事件在 Hacker News 上引发 442 分和 363 条评论:Litellm 1.82.7 和 1.82.8 版本在 PyPI 上被篡改,包含恶意代码。
Litellm 是一个流行的 LLM 服务统一接口库,被广泛用于协调不同 AI 服务提供商的 API 调用。这次攻击利用了 Python 的.pth 文件机制——这些文件在 Python 解释器启动时自动执行,无需任何 import 语句。
攻击细节
恶意文件 litellm_init.pth(34,628 字节)被植入到 wheel 包中。它的双层 base64 编码载荷执行以下操作:
第一阶段:信息收集
- 系统信息:主机名、用户、内核版本、IP 地址
- 环境变量:所有 API 密钥、秘密、令牌
- SSH 密钥:所有类型的私钥和配置
- Git 凭据:配置和凭证文件
- 云凭证:AWS、GCP、Azure、Kubernetes
- Docker 配置:各种路径的 Docker 配置
- 包管理器配置:npmrc、.netrc 等
- Shell 历史:bash、zsh、sh 历史
- 加密货币钱包:Bitcoin、Ethereum、Solana 等
- SSL/TLS 私钥:系统证书、Let's Encrypt 证书
- CI/CD 秘密:Terraform、GitLab CI、Travis、Jenkins 等
- 数据库凭据:PostgreSQL、MySQL、Redis 配置
- Webhook URL:Slack、Discord webhook
第二阶段:加密和窃取
- 收集的数据写入临时文件
- 生成随机 32 字节 AES-256 会话密钥
- 数据用 AES-256-CBC 加密
- 会话密钥用硬编码的 4096 位 RSA 公钥加密
- 打包成 tpcp.tar.gz
- 通过 curl 发送到
https://models.litellm.cloud/(注意:不是官方域名 litellm.ai)
影响范围
任何通过 pip 安装 litellm==1.82.8 的人都已经将所有环境变量、SSH 密钥、云凭证和其他秘密发送到攻击者控制的服务器。这影响:
- 本地开发机器
- CI/CD 管道
- Docker 容器
- 生产服务器
为什么这次攻击特别危险
基础设施位置:Litellm 位于 AI 基础设施的核心——它处理 API 密钥、协调模型调用、管理认证。攻击者可以访问所有通过 Litellm 管理的密钥。
隐蔽性:.pth 文件在 Python 启动时自动执行,无需任何 import。载荷是双层 base64 编码,对简单的 grep 不可见。
信任滥用:窃取的目标是 models.litellm.cloud——一个看起来合法的域名,但不是官方域名。
影响范围:Litellm 被广泛用于生产环境,影响可能远超普通库。
供应链攻击的演变
这次攻击是供应链攻击演变的又一个例子。从 SolarWinds 到 Log4j 到这次 Litellm,攻击者越来越倾向于攻击基础设施层,因为:
- 杠杆效应:一个库被攻击,所有依赖者都受影响
- 信任传递:开发者信任 PyPI、信任流行库、信任维护者
- 检测困难:攻击代码在库内部,不在应用代码中
应对措施
立即措施:
- 卸载 litellm 1.82.7 和 1.82.8
- 检查 site-packages 中是否存在 litellm_init.pth
- 轮换所有可能暴露的凭证
- 检查 CI/CD 管道
- 监控异常网络流量到 models.litellm.cloud
长期措施:
- 使用依赖扫描工具
- 考虑使用依赖代理或镜像
- 对关键库进行源代码验证
- 最小化权限原则
- 定期轮换凭证
更广泛的含义
这次攻击揭示了 AI 基础设施的脆弱性。AI 生态系统依赖于大量开源库,这些库构成了信任链。当其中一个被破坏时,整个链都受影响。
同时,这次攻击也反映了 AI 领域的吸引力——攻击者瞄准 AI 基础设施,因为这里有价值:API 密钥、模型访问、数据。
结语
Litellm 供应链攻击是一个警示:在 AI 时代,基础设施安全变得更加重要。我们依赖的库越多,攻击面就越大。
这次攻击不是孤立事件——它是 AI 基础设施成为目标的一部分。随着 AI 生态系统的增长,我们需要更强大的供应链安全措施。