恶意模型为何盯上宿主机器
大型语言模型通常通过代理框架在某一台计算机上执行操作,但模型对提示的响应计算,却发生在另一台具备图形处理器访问能力的计算机上。一个恶意模型能否夺取加载其权重的那台宿主机器?这篇文章探讨的正是这个问题。对攻击者来说,这台机器价值极高:它拥有运行前沿模型所需的算力,能轻易接触模型权重,并且相比互联网上的普通计算机,对数据中心里的其他机器拥有更高权限。
文章分析的主要攻击路径是:模型输出一串语义无关的令牌,利用推理引擎软件中的漏洞,让这些令牌被误当作代码或指令执行,而不是作为数据返回给用户。推理引擎负责把模型加载到图形处理器上、运行模型生成输出令牌,再把令牌解析成响应。
推理引擎为何可能执行模型输出的代码
像任何程序一样,vLLM或SGLang这类推理引擎也可能存在可利用的缺陷。由于模型控制着传给推理引擎的令牌,恶意模型可以输出一串令牌,让编写不严谨的推理引擎误认为是需要执行的代码或指令。文章指出,现代推理引擎不只是把令牌序列映射成字符串,vLLM的文档列出了对超过200种模型架构的支持,其示例目录中约有35个Jinja聊天模板。推理引擎需要解析多种聊天格式,稍有偏差的解析逻辑就可能把模型输出解释为可执行代码。
vLLM曾用eval处理工具调用参数
文章提到一个具体案例:CVE-2025-9141是vLLM基于XML的工具解析器中存在的任意代码执行缺陷,该解析器用于Qwen3 Coder。这个解析器几乎把每个工具调用参数都传给eval,使模型能够在宿主机器上执行任意代码。Gemini自动分析了引入该缺陷的拉取请求,并正确标记为严重安全漏洞。尽管如此,vLLM的主要维护者仍强制合并了这个拉取请求。
维护者写道,把任意令牌序列解析成完整聊天内容并不简单,这个过程在不同模型之间常常存在差异。这种复杂性为可能允许在宿主机器上执行任意代码的缺陷创造了更多机会。
解析错误让普通字符串变成推理块
文章还举了另一个例子。在一个vLLM问题讨论中,用户讨论MiniMax-M3的推理方式,模型输出了字符串。vLLM错误地把这个普通字符串解析为推理块的开始。原本的响应应该是:我会完全照你说的重复:,然后换行,接着是“怎么样?”。但vLLM把它解析成了:我会完全照你说的重复,后面直接进入推理块,换行后的内容被截断。
这个案例说明,即使模型没有恶意,解析逻辑的细微错误也可能改变输出结构。如果恶意模型刻意构造类似序列,就可能利用这类解析混乱触发更严重的后果。文章强调,推理引擎的复杂性本身就在制造更多可被利用的空间。
热门跟贴