这是一件极其严肃的软件安全事件。
今天,Karpathy 发长推文警告全部开发者注意,GitHub 超过 4 万星,月下载量达 9700 万次的 Python 库 LiteLLM 在 PyPI 上被投毒。
首先提请各位开发者检查自己的 LiteLLM 版本 ,含有恶意代码的版本号为 1.82.7 和 1.82.8,如果中招请尽快重新安装。
目前,被攻破的版本已被撤回,PyPI 隔离措施已解除。包维护人员正在处理后续影响。

这一事件影响非常广泛,可以被称之为教科书级别的供应链攻击。
熟悉 Python 的朋友们一定知道 PyPI 上软件包的重要性,没有 pip install 命令我们将寸步难行。
但这次 LiteLLM 的问题正出在 PyPI 软件包上。简单的 pip install litellm 就足以窃取你的 SSH 密钥、AWS/GCP/Azure 凭证、Kubernetes 配置、git 凭证、环境变量(包括你所有的 API 密钥)、shell 历史记录、加密货币钱包、SSL 私钥、CI/CD 机密以及数据库密码。
除去 LiteLLM 本身每月的 9700 万次下载之外,更严重的是以 LiteLLM 为基础依赖的其他项目和软件包同样也会遭受投毒的攻击。
Karpathy 在推文中写道:「像这样的供应链攻击基本上是现代软件中最令人恐惧的事情。每当你安装任何一个依赖项时,你都可能从其庞大的依赖树深处引入一个被投毒的包。对于那些拥有海量依赖库的大型项目来说,这种风险尤其高。而每次攻击中失窃的凭证,又会被用来接管更多的账户,进而污染更多的软件包。」
该事件首次由 FutureSearch 报告给 PyPI,FutureSearch 就事件始末详情发布了博客。

根据 FutureSearch 提供的信息,该攻击负载分为三个阶段运行:
1.信息搜刮 (Collection)
一个 Python 脚本会从主机中搜刮敏感文件,包括:SSH 私钥和配置、.env 文件、AWS / GCP / Azure 凭证、Kubernetes 配置、数据库密码、.gitconfig、shell 历史记录、加密货币钱包文件,以及任何匹配常见机密模式的文件。它还会运行令来导出环境变量,并查询云端元数据端点(如 IMDS、容器凭证)。
2.数据外传 (Exfiltration)
收集到的数据会使用硬编码的 4096 位 RSA 公钥,通过 AES-256-CBC 模式进行加密(生成随机会话密钥,再用 RSA 密钥加密该密钥)。数据被打包成 tar 归档文件,并通过 POST 请求发送到 https://models.litellm.cloud/ —— 请注意,该域名并非 LiteLLM 官方基础设施的一部分。
3.横向移动与持久化
kube-system 中创建一个具有特权的 alpine:latest Pod。/root/.config/sysmon/sysmon.py 处安装持久化后门,并配合一个 systemd 用户服务运行。~/.config/sysmon/sysmon.py 尝试相同的持久化手段。
这件事引发了马斯克的关注,「Caveat emptor」意味着提醒大家注意承担风险。
这个带有恶意代码的软件版本被发现的过程非常具有戏剧性,其根源来自于攻击代码中的 bug。
开发者 Callum McMahon 在 Cursor 内部运行的 MCP 插件将此包作为传递依赖项拉取时发现了这个问题。
.pth 启动器通过 subprocess.Popen 启动一个子 Python 进程,但由于 .pth 文件在每次解释器启动时都会触发,子进程会重新触发相同的 .pth —— 这会创建一个指数级分叉炸弹,导致机器因内存爆炸而崩溃。这个分叉炸弹实际上是恶意软件中的一个漏洞。
Karpathy 也称,如果攻击者编程能力更强,可能几周都不会有人注意到。
据说,恶意代码的开发者采用了 AI 编码导致出现 Bug,有开发者表示「vibe coding」这次救了我们。

英伟达机器人部门总监及杰出科学家 Jim Fan 也表达了关切。

他说,过去的身份盗窃与代理能做的事相比简直不值一提。发送凭证太明显了,新手也能做。
人们其实很少需要 LiteLLM 支持的所有 API,倒不如根据需求随手构建一个自定义的功能软件。这与 Karpathy 的想法不谋而合。
Karpathy 表示其更倾向于在功能足够简单且可行的情况下,利用 LLM 把功能「薅」过来自己实现一遍。
在「不经思考就疯狂点允许」和「危险地跳过权限」之间,几乎没有中间地带。利爪(Claws)必须被关进壳(Shells)里。而且可能是多层嵌套的壳。
但大家都在质疑,这样一份带有恶意代码的软件包是如何顺利通过代码审查,从而实现广泛的推送发布的呢?
我们查阅了来自 snyk 的事故详细报告,发现攻击者并没有通过正常的 GitHub 工作流提交恶意版本。
相反,攻击者使用了一个被窃取的 PyPI 发布令牌,直接把被投毒的包上传到了 PyPI,完全绕过了代码审查。与此同时,官方 GitHub 仓库本身仍然是干净的,没有对应的 tag 或 commit。

太阳底下无新事,Sebastian Raschka 发现此次攻击和数年前的 ctx 包事件非常相似。
虽然这种方案并非无懈可击,但他认为规避此类风险的最佳路径如下:
最后,请大家根据 FutureSearch 的提示,检查自己的设备,并做以下操作来避免危险。
1. 检查是否受影响 如果你在 2026 年 3 月 24 日或之后安装或升级了 LiteLLM,请检查版本是否为 1.82.8:
运行 pip show litellm。检查 uv 缓存(搜索~/.cache/uv -name "litellm_init.pth")。检查 CI/CD 中的虚拟环境。
2. 移除包并清理缓存 从所有受影响的环境中删除 LiteLLM 1.82.8。必须清理包管理器缓存(执行 rm -rf ~/.cache/uv 或 pip cache purge),以防止从本地缓存的 wheel 文件重新安装毒包。
3. 检查持久化痕迹 排查是否存在以下文件:~/.config/sysmon/sysmon.py ~/.config/systemd/user/sysmon.service 如果运行在 Kubernetes 中,审计 kube-system 命名空间,检查是否存在匹配 node-setup-* 模式的 Pod,并审查集群机密(secrets)是否存在未经授权的访问记录。
4. 重置凭证(最关键)必须假设受影响机器上的所有凭证都已泄露,请立即轮换:
SSH 密钥。云服务商凭证(GCP ADC、AWS 访问密钥、Azure 令牌)。Kubernetes 配置。.env 文件中的所有 API 密钥。数据库密码。
文章来自于“机器之心”,作者 “冷猫”。
【开源免费】字节工作流产品扣子两大核心业务:Coze Studio(扣子开发平台)和 Coze Loop(扣子罗盘)全面开源,而且采用的是 Apache 2.0 许可证,支持商用!
项目地址:https://github.com/coze-dev/coze-studio
【开源免费】n8n是一个可以自定义工作流的AI项目,它提供了200个工作节点来帮助用户实现工作流的编排。
项目地址:https://github.com/n8n-io/n8n
在线使用:https://n8n.io/(付费)
【开源免费】DB-GPT是一个AI原生数据应用开发框架,它提供开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单、更方便。
项目地址:https://github.com/eosphoros-ai/DB-GPT?tab=readme-ov-file
【开源免费】VectorVein是一个不需要任何编程基础,任何人都能用的AI工作流编辑工具。你可以将复杂的工作分解成多个步骤,并通过VectorVein固定并让AI依次完成。VectorVein是字节coze的平替产品。
项目地址:https://github.com/AndersonBY/vector-vein?tab=readme-ov-file
在线使用:https://vectorvein.ai/(付费)
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md