一声棒喝,本不立文字
偏要著録,已是二义

X · 研究者一手

@karpathy 软件恐怖故事:litellm PyPI 供应链攻击,简单的 `pip instal…

@karpathy Software horror: litellm PyPI supply chain attack. Simple `pip instal…

二〇二六年五月八日 · 英文原文

PyPI package litellm 发生 supply chain attack,安装可外传 SSH keys、云凭证、Kubernetes configs、env vars 等。litellm 月下载约 9700 万,受影响可经 dspy 等 transitive dependency 扩散。投毒版本约上线不足 1 小时,Callum McMahon 使用 Cursor MCP plugin 时因内存耗尽发现异常。

软件恐怖事件:litellm PyPI supply chain attack。

简单执行 pip install litellm 就足以外传 SSH keys、AWS/GCP/Azure creds、Kubernetes configs、git credentials、env vars(你所有的 API keys)、shell history、crypto wallets、SSL private keys、CI/CD secrets、database passwords。

LiteLLM 本身每月有 9700 万次下载,这已经很糟了;但更糟的是,感染会扩散到任何依赖 litellm 的项目。比如,如果你执行了 pip install dspy(它依赖 litellm>=1.64.0),你也会被 pwn。任何其他依赖 litellm 的大型项目也是一样。

据我所知,被投毒的版本只上线了不到约 1 小时。这次攻击有一个 bug,导致它被发现——Callum McMahon 在 Cursor 里使用一个 MCP plugin,该 plugin 通过 transitive dependency 拉入了 litellm。当 litellm 1.82.8 安装后,他们的机器内存耗尽并崩溃。所以如果攻击者不是用 vibe coding 写的这次攻击,它本可能在很多天甚至几周内都不被发现。

像这样的 supply chain attack 基本上是现代软件里最可怕的事情。每次安装任何 dependency,你都有可能在其整个 dependency tree 深处拉入一个被投毒的 package。对于可能有大量 dependencies 的大型项目来说,这尤其危险。每次攻击中被盗的 credentials 随后又可被用来接管更多账号、攻陷更多 packages。

传统 software engineering 会让你相信 dependencies 是好事(我们是在用砖块搭金字塔),但我认为这必须重新评估。这也是为什么我越来越抵触 dependencies,更倾向于在功能足够简单且可行时,用 LLMs 去“yoink”功能。

译自 X · 研究者一手 · 录于 二〇二六年五月八日