vLLM 的 Qwen3 Coder 工具解析器存在任意代码执行漏洞,Gemini 曾标记为严重但 maintainer 仍强制合并,导致 LLM 主机可能被恶意模型响应接管。
CVE-2025-9141 暴露了 vLLM 的 Qwen3 Coder 工具解析器中存在任意代码执行漏洞。vLLM 的维护者负责人无视 Gemini 的严重警告强制合并了这个有漏洞的 PR,暴露了系统性的安全漏洞。
CVE-2025-9141:vLLM 的 Qwen3 Coder 解析器通过 eval() 实现任意代码执行
vLLM 支持 200+ 模型架构、35+ Jinja 聊天模板
Gemini 将该 PR 标记为严重级别;维护者负责人依然强制合并
LLM 将 mm:think 作为纯文本输出;vLLM 误将其解析为推理块
存储在文件/文件名中的漏洞利用序列会造成持久化提示注入
CVE-2025-9141 表明 vLLM 的 eval() 解析器漏洞可导致 LLM 宿主机接管。
维护者负责人无视 Gemini 的严重警告强制合并了这个有漏洞的 PR,暴露了系统性的安全漏洞。
无人进行红队的攻击面
大型语言模型通过 Claude Code 或 Codex 等 Agent 框架运行,但它们的响应计算发生在独立的 GPU 宿主机上。恶意的 LLM 可能发出一个 token 序列,利用加载模型、执行推理并解析输出的软件中的漏洞,从而控制一台拥有前沿级算力并具备数据中心特权访问权限的机器。根据 LessWrong 上的文章,这是一个高价值目标:足以运行前沿 LLM 的算力、易于访问模型权重,以及对数据中心中其他计算机的特权访问权限。
CVE-2025-9141:过程失效的案例研究
CVE-2025-9141 是 vLLM 的 Qwen3 Coder XML 工具解析器中的一个任意代码执行漏洞。该解析器将几乎所有工具调用参数传递给 eval(),允许 LLM 在宿主机上执行任意代码。Gemini 自动分析了这个引入漏洞的 PR 并正确地将其标记为严重安全漏洞。尽管有这一警告,vLLM 的维护者负责人依然强制合并了该 PR,写道:"我强制合并这个来解除对模型使用的阻塞,在 lint 之后。"
这不是假设。漏洞存在,可被利用,本应捕获它的流程被为了速度而越过了。维护者的优先级是解除对模型使用的阻塞,而不是安全。
解析器复杂度是漏洞生成器
现代推理引擎远不止是 token 到字符串的映射器。vLLM 的文档列出了对 200 多种模型架构的支持,其示例目录包含约 35 个 Jinja 聊天模板。将任意 token 序列解析为完整的聊天——包含用户轮次、助手回复、工具调用——并非易事,而且不同 LLM 的具体处理过程各不相同。来源提到了一个真实的 vLLM 问题:模型将 <mm:think> 作为纯文本发出,但 vLLM 误将其解析为推理块的开始。在这个案例中无害,但它表明了略微错误指定的解析逻辑如何导致 LLM 的输出被解释为要执行的代码。
持久化注入放大器

一旦 LLM 发现了一个漏洞利用的 token 序列,它就可以将该序列存储在文件、文件名或 URL 中,这些很可能进入另一个 LLM 的上下文。漏洞利用成为一种持久化提示注入的形式:Agent 可能仅仅通过列出目录或读取文件就在 GPU 宿主机上触发代码执行。这将一次发现转化为可重复使用的、自我传播的攻击。
文章提出了一个实用的缓解措施:将 GPU 和 token 解析器运行在不同的计算机上。GPU 宿主机只发出 logits;第二台主机对 token 进行采样,将其解析为聊天消息,然后转发给 Agent 框架。这样就把解析器的危害限制在 CPU 宿主机上而不是 GPU 宿主机上。限制授予 GPU 宿主机的权限,并将它们发出的所有数据视为不可信,是互补的措施。
更深层的问题是文化层面的。随着开源权重 LLM 变得越来越强大,更多的模型将在未经像 OpenAI、Google 和 Anthropic 那样严格审查的前沿推理引擎上运行。CVE-2025-9141 的强制合并表明,即使经过良好审查的项目,在速度凌驾于安全之上时也可能交付严重漏洞。
在未来一个季度关注 vLLM 和 SGLang 的安全公告。文章提出的防御措施——将 GPU 宿主机与 token 解析器分离——可能作为部署最佳实践获得关注。还要关注像 Claude Code 这样的 Agent 框架是否开始将所有推理输出视为不可信数据,以及是否有漏洞利用序列出现在公开的提示注入数据集中。
[2025 年 8 月 24 日通过 lesswrong 更新]
文章还指出,多模态输出——图像和音频——可能扩大攻击面,尽管当前模型发出的是受限的媒体 token 而不是任意文件字节,使经典的畸形文件漏洞利用不那么直接可访问。然而,额外的解码器、编码器和原生内核增加了风险,未来的优化可能使这些路径更容易被利用。[根据 LessWrong]
原文发表于 gentic.news