当前位置:首页>python>Python包遭供应链投毒 月9700万次

Python包遭供应链投毒 月9700万次

  • 2026-10-11 08:38:17
Python包遭供应链投毒 月9700万次

LiteLLM,一个广泛用于统一调用多家大模型(如 OpenAI、Anthropic、Google Vertex AI 等)API 的 Python 库。

攻击者在 PyPI 官方仓库上传了两个恶意版本,可窃取 ‌SSH 密钥、云平台凭证(AWS/Azure/GCP)、Kubernetes 配置、API 密钥、加密钱包、Git 凭证‌等敏感信息 ‌。

而LiteLLM 本身月下载量超 ‌9700 万次‌,至少 ‌2000+ 开源项目‌将其作为依赖,包括 DSPy、CrewAI、OpenHands、GraphRAG 等主流 AI 工具链。

即使未直接安装 LiteLLM,‌间接依赖其的工具(如 OpenClaw)也可能导致中招。

2026年3月24日,LiteLLM官方披露:

LiteLLM AI Gateway 正在调查一起疑似供应链攻击,该攻击涉及在 PyPI 上发布了未经授权的软件包。现有证据表明,一名维护者的 PyPI 账户可能已被盗用,并用于分发恶意代码。

事件摘要

受影响的 PyPI 包:litellm=1.82.7、litellm=1.82.8

  • 上线时间:2026-03-24 10:39(UTC)

  • 存续时长:约 40 分钟,后被 PyPI 强制下架

  • 入侵源头:疑似 CI/CD 安全扫描依赖 Trivy 遭入侵,导致凭证泄露

  • 未受影响:使用官方 LiteLLM Proxy Docker 镜像的用户(依赖已锁定,不使用问题 PyPI 包)

  • 已暂停所有版本发布,完成全面供应链审计后,已发布安全版 v1.83.0;官方 main 分支无恶意代码。

受影响版本

以下 PyPI 版本已确认被植入恶意代码:

v1.82.7:proxy_server.py 含恶意payload

v1.82.8:含 litellm_init.pth 木马文件,且 proxy_server.py 含恶意payload

注:上述版本已从 PyPI 彻底移除。

事件经过

攻击者绕过官方 CI/CD 工作流,直接向 PyPI 上传恶意安装包,恶意程序为凭证窃取工具,会:

  • 扫描并窃取环境变量、SSH 密钥、云厂商凭证(AWS/GCP/Azure)、Kubernetes tokens、数据库密码

  • 将数据加密后通过 POST 请求发送至 models.litellm.cloud(非官方域名)‌。

影响范围判断

你可能受影响,如果满足任一条件

  • 2026-03-24 10:39–16:00(UTC)通过 pip 安装 / 升级 LiteLLM
  • 未指定版本执行 pip install litellm,拉取到 1.82.7/1.82.8
  • 在此窗口构建 Docker 镜像且未锁定 LiteLLM 版本
  • 项目依赖链自动引入未锁定的 LiteLLM(AI 框架、MCP、LLM 编排工具等)

你不受影响,如果满足任一条件

  • 使用官方 LiteLLM Proxy Docker 镜像(ghcr.io/berriai/litellm)
  • 使用 LiteLLM Cloud 服务
  • 版本为 v1.82.6 及更早,且未在风险窗口升级
  • 从 GitHub 源码编译安装(源码未被入侵)
如何自查是否受影响

1. 检查本地版本

pip show litellm | grep Version
若为 ‌1.82.7 或 1.82.8‌,则已中招
入侵指标(IoC)

检查受影响的系统是否存在以下入侵指标:

  • 检查您的 site-packages目录中是否存在名为 litellm_init.pth的文件。

  • 检查出站流量或对 models.litellm[.]cloud的请求。 请注意,此域名与 LiteLLM 官方无关。

  • 检查出站流量或对 checkmarx[.]zone的请求。 请注意,此域名与 LiteLLM 官方无关。

受影响用户的紧急处置措施

如果你安装或运行了 v1.82.7或 v1.82.8版本,请立即执行以下操作:

1.轮换所有秘钥(最高优先级):

将受影响系统上存在的所有凭据视为已泄露,立即轮换以下所有密钥:

  • API 密钥

  • 云访问密钥

  • 数据库密码

  • SSH 密钥

  • Kubernetes 令牌

  • 环境变量或配置文件中存储的任何密钥

2. 检查文件系统

检查你的 site-packages目录是否存在恶意文件 litellm_init.pth:

find /usr/lib/python3.13/site-packages/ -name "litellm_init.pth"

如果发现该文件:

  • 立即删除。

  • 排查主机是否遭受进一步入侵。

  • 若安全团队正在取证,请保留相关文件。

3. 审计版本历史

  • 全面检查您以下环境的版本记录:

  • 本地环境

  • CI/CD 流水线

  • Docker 构建

  • 部署日志

确认 v1.82.7或 v1.82.8版本是否在上述任何地方被安装过。

最终修复措施:将 LiteLLM 固定到已知的安全版本,例如 v1.82.6或更早版本,或者在官方宣布后,固定到后续已验证的安全发布版本。

官方已采取措施

LiteLLM AI Gateway 团队已采取以下措施:

    • 从 PyPI 移除受感染的软件包。

    • 轮换了维护者的凭据,并设立了新的授权维护者。

    • 聘请了谷歌的 Mandiant 安全团队,协助对构建和发布链条进行取证分析。

    长期预防建议

    1. 依赖管理强化

    # 严格版本锁定(避免自动升级)  requirements.txt litellm==1.82.6 # 不要使用 >= 或通配符 # 生产环境启用哈希校验 pip install --require-hashes -r requirements.txt 

    2. 企业级安全措施

    • 私有PyPI镜像:

      搭建内部镜像,新版本需安全审计后同步

    • CI/CD安全:

      最小权限原则:为CI/CD工具授予最小必要权限

      集成SCA工具:在流水线中扫描依赖漏洞

      禁用自动升级:手动审核后更新依赖

    • 运行时防护:

      监控Python进程异常行为

      网络出站白名单策略

      K8s Pod安全策略限制特权容器

    3. 监控与检测

    # 定期审计依赖树 pipdeptree | grep -i litellm # 使用漏洞扫描工具 pip-audit pip check 
    安全反思与最佳实践

    1. 供应链安全新认知

    • 依赖即风险:每次引入新依赖都是潜在的攻击面扩大

    • 工具链安全:CI/CD工具、扫描器等基础设施组件成为新攻击目标

    • 自动化双刃剑:自动依赖更新在便利性与安全性间需平衡

    2. "依赖厌恶"原则实践

    Karpathy观点值得参考:

    "能用50行代码解决的问题,不要引入5000行的依赖"

    适用场景建议:

    • 简单功能(HTTP客户端、日期处理等)

    • 维护不活跃的包

    • 安全敏感的核心组件

    3. 分层防御策略

    防御层级具体措施责任方预防层依赖版本锁定、私有镜像、代码签名开发团队检测层SCA扫描、行为监控、网络审计安全团队响应层应急预案、凭证轮换流程、事件响应运维团队。

    参考: https://docs.litellm.ai/blog/security-update-march-2026


    知安,您产品的安全医院!

    https://www.knowsafe.com/

    最新文章

    随机文章