LiteLLM 1.82.7/1.82.8 被投毒:Trivy CI 泄密、账号接管

分类业界资讯
作者newshacker
来源跳转
发表时间

内容

🎯 讨论背景

LiteLLM 是一个给不同 LLM provider 提供统一 API 的 Python 库,常被当作 gateway/router,用于在 OpenAI、Anthropic 等接口之间做适配和 fallback。此次讨论围绕 PyPI 上的 litellm 1.82.7 和 1.82.8 被植入恶意代码展开,评论里指出它与 CI/CD 中的 Trivy(容器漏洞扫描器)链路被攻破有关,随后 PyPI 对该包做了 quarantine 并移除了相关版本。恶意代码被描述为可在安装或导入时执行,借助 Python 的 .pth 机制或直接 import 运行,主要风险是窃取 .git-credentials、SSH key、token 等秘密。因为 LiteLLM 被 DSPy、CrewAI、browser-use 等多个项目直接或间接依赖,社区同时在讨论如何通过 sandbox、OIDC/Trusted Publishing、锁定版本、镜像仓库和发布隔离来缩小 blast radius。

📌 讨论焦点

官方确认与处置进展

维护者确认受影响的是 litellm==1.82.7 和 1.82.8,恶意版本已经从 PyPI 删除,并先进入 quarantine 再被阻断下载。当前公开的结论是,入侵源头来自 CI/CD 里使用的 Trivy 扫描链路,相关的 PYPI_PUBLISH token、GitHub PAT 和其他发布密钥都已轮换或删除。官方还说明,标准 LiteLLM Proxy Docker 镜像因为在 requirements.txt 里固定了版本,所以没有直接受影响;真正高风险的是直接从 PyPI 安装或未固定版本的环境。团队同时暂停了新版本发布,并引入 Mandiant 协助做更大范围的 supply-chain review。

来源1 来源2 来源3 来源4 来源5 来源6

账号接管与 GitHub 垃圾评论

评论区很快出现了明显的账号被接管迹象:维护者个人仓库和公共仓库被改成“teampcp owns BerriAI”之类的说明,像是在公开认领入侵。与此同时,issue 线程被大量重复的“Thanks”式回复淹没,很多人判断这是被劫持账号在批量灌水,用来干扰真实讨论和 mitigation 传播。有人进一步指出这看起来不像正常互动,而是攻击者快速利用 stolen credentials 的后续动作。GitHub 的 spam 和讨论治理能力也因此被集中吐槽。

来源1 来源2 来源3 来源4 来源5 来源6 来源7 来源8

下游依赖面很大,自动更新更危险

很多人担心的不是单个包,而是它的 blast radius:LiteLLM 不只是 gateway,还被 DSPy、CrewAI、browser-use、nanobot 等项目直接或间接依赖。由于不少环境靠 uvxuv runpip install 或自动更新容器在运行时拉包,哪怕只是一个 import 也可能触发恶意代码并扫走 token、.git-credentials 或 SSH key。有人专门写脚本去全盘扫描安装痕迹,也有人在查到底哪些项目还在用未固定版本。讨论里还出现了把 CrewAI 回退到 1.82.6、改用 OpenRouter/Portkey 或干脆自己写 shim 的做法。

来源1 来源2 来源3 来源4 来源5 来源6 来源7 来源8 来源9 来源10

防护思路:沙箱、签名、OIDC 与发布隔离

最一致的建议是把不可信代码关进 sandbox,而不是继续依赖“默认会老实”的 package manager。评论里反复提到 Firejail、bwrap、seccomp、gVisor、Qubes OS、microVM、Guix/NixOS 这类隔离思路,核心都是把扫描、构建、发布、运行分成不同权限域。另一个高频建议是去掉长期存在的发布 token,改成 GitHub/PyPI 的 OIDC / Trusted Publishing,让只有 release job 能发包,Trivy 之类的扫描 job 就算被攻破也拿不到发布权限。还有人强调应该固定版本、校验 SHA256、镜像依赖、用 osv-scanner 做阻断扫描,甚至把发布和 public repo 明确隔离开。

来源1 来源2 来源3 来源4 来源5 来源6 来源7 来源8 来源9 来源10

LiteLLM 价值争议与更大的生态焦虑

一部分评论为 LiteLLM 的存在价值辩护:它解决了多家 LLM provider API 不兼容、fallback、key 管理和 guardrails 等现实痛点,不是简单“多加一层 hat”。但另一派则认为它的代码和依赖树太重、文档和维护状态混乱,1000+ 依赖让安全边界几乎不可审计,甚至准备自己写更小的 shim 或直接删掉大部分依赖。这个事件也被拿来讨论更大的生态问题:Python/Node 这类 package manager 让依赖膨胀过于容易,而 LLM 工具链和 Copilot 又进一步鼓励把未固定的包直接塞进 requirements。更悲观的观点认为,随着 supply chain attack 常态化,软件发布可能需要更强的多方审批、版本延迟或 distro 级审核。

来源1 来源2 来源3 来源4 来源5 来源6 来源7 来源8

📚 术语解释

Trivy: 一个容器/镜像漏洞扫描器,这次其 CI/CD 使用链路被认为是入侵入口。

.pth 文件: Python site 机制会在启动时读取的文件,能在解释器启动或导入阶段执行代码。

Trusted Publishing: PyPI/NPM 等使用 OIDC 的无长期密钥发布方案,用发布工作流直接换取短期授权。

sandbox/沙箱: 限制进程权限的隔离运行环境,用来降低恶意包或被攻破依赖的影响面。

supply chain attack: 通过依赖、构建、发布链路传播恶意代码的攻击方式。

TeamPCP: 评论里用来指代这次账号接管、投毒和灌水活动的攻击者代号。

PyPI quarantine: PyPI 对可疑包实施的临时隔离/阻断下载措施。

评论

(0)
未配置登录方式
暂无评论