vLLM反序列化漏洞剖析:从拒绝服务到潜在的远程代码执行
漏洞概述
在vLLM 0.10.2及更高版本的Completions API端点中,存在一个可导致服务崩溃(拒绝服务)并可能引发远程代码执行(RCE)的内存损坏漏洞。该漏洞位于处理用户提供的提示嵌入向量(prompt embeddings)时,端点使用torch.load()加载序列化的张量,但未进行充分的验证。
技术细节
由于PyTorch 2.8.0中引入的一项变更,稀疏张量的完整性检查默认被禁用。因此,恶意构造的张量可以绕过内部边界检查,并在调用to_dense()期间触发越界内存写入。这种内存损坏会导致vLLM崩溃,并可能使托管vLLM的服务器执行任意代码。
漏洞位于vllm/entrypoints/renderer.py文件第148行的代码中:
|
|
由于缺少检查,加载用户提供的无效提示嵌入张量会导致在调用to_dense时发生越界写入。
影响范围
- 受影响版本:vLLM >= 0.10.2, < 0.11.1
- 已修复版本:vLLM 0.11.1
所有能访问此API的用户都可能利用此漏洞。对不可信输入的不安全反序列化可被滥用以实现拒绝服务,并可能在vLLM服务器进程中实现远程代码执行。这影响了将vLLM作为服务器运行或任何反序列化不可信/模型提供负载的实例。
修复方案
该漏洞已在vLLM项目的PR #27204中得到修复。修复的核心是确保在使用torch.load加载张量时,显式启用稀疏张量的完整性检查,或在处理前进行更严格的验证。
关联信息
- CVE ID:CVE-2025-62164
- GHSA ID:GHSA-mrw7-hf4f-83pf
- 相关弱点:
- CWE-20: 不正确的输入验证
- CWE-123: 写任意值到任意地址的条件
- CWE-502: 反序列化不可信数据
- CWE-787: 越界写入
致谢
此漏洞由AXION安全研究团队(Omri Fainaro, Bary Levy)发现并协调披露。