vLLM反序列化漏洞剖析:从拒绝服务到潜在远程代码执行

本文详细分析了vLLM中一个高危反序列化漏洞(CVE-2025-62164)。该漏洞存在于Completions API端点,由于在加载用户提供的张量时缺乏充分验证,攻击者可能引发内存越界写入,导致服务崩溃甚至远程代码执行。文章涵盖了漏洞的技术细节、影响范围及修复方案。

vLLM反序列化漏洞导致拒绝服务及潜在远程代码执行

漏洞概述

在vLLM 0.10.2及更高版本的Completions API端点中存在一个内存损坏漏洞,可导致服务崩溃(拒绝服务)并可能引发远程代码执行(RCE)。当处理用户提供的提示嵌入向量时,端点使用torch.load()加载序列化张量,但缺乏充分验证。

技术细节

由于PyTorch 2.8.0中引入的变更,稀疏张量完整性检查默认被禁用。因此,恶意构造的张量可以绕过内部边界检查,并在调用to_dense()期间触发内存越界写入。这种内存损坏可能导致vLLM崩溃,并可能在托管vLLM的服务器上执行代码。

漏洞代码位置

漏洞位于vllm/entrypoints/renderer.py:148的以下代码中:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
def _load_and_validate_embed(embed: bytes) -> EngineEmbedsPrompt:
    tensor = torch.load(
        io.BytesIO(pybase64.b64decode(embed, validate=True)),
        weights_only=True,
        map_location=torch.device("cpu"),
    )
    assert isinstance(tensor, torch.Tensor) and tensor.dtype in (
        torch.float32,
        torch.bfloat16,
        torch.float16,
    )
    tensor = tensor.to_dense()

由于缺少检查,加载用户提供的无效提示嵌入张量可能导致在to_dense调用中发生越界写入。

影响范围

所有能够访问此API的用户都可能利用此漏洞。对不可信输入的不安全反序列化可能被滥用以实现拒绝服务,并可能在vLLM服务器进程中实现远程代码执行。这影响了将vLLM作为服务器运行的部署或任何反序列化不可信/模型提供负载的实例。

受影响版本

  • vLLM >= 0.10.2, < 0.11.1

已修复版本

  • vLLM 0.11.1

修复方案

修复通过vllm-project/vllm#27204实现。解决方案是显式启用torch.sparse.check_sparse_tensor_invariants上下文管理器,确保在加载稀疏张量时执行完整性检查。

安全建议

  1. 立即升级:所有使用vLLM 0.10.2至0.11.0版本的用户应立即升级到0.11.1或更高版本。
  2. 输入验证:在处理用户提供的序列化数据时,始终实施严格的输入验证和完整性检查。
  3. 最小权限原则:限制对Completions API端点的访问,仅允许受信任的用户和系统调用。

漏洞评分

  • CVSS v3.1评分:8.8(高危)
  • 攻击向量:网络
  • 攻击复杂度:低
  • 所需权限:低
  • 用户交互:无
  • 影响范围:机密性(高)、完整性(高)、可用性(高)

相关标识符

  • CVE ID:CVE-2025-62164
  • GHSA ID:GHSA-mrw7-hf4f-83pf

致谢

发现者:AXION安全研究团队(Omri Fainaro, Bary Levy),感谢他们的发现和协调披露。

参考链接

  1. vllm-project/vllm#27204(修复提交)
  2. vllm-project/vllm@58fab50(代码变更)
  3. https://nvd.nist.gov/vuln/detail/CVE-2025-62164(NVD数据库条目)

此漏洞凸显了在AI/ML系统处理用户输入时实施严格安全措施的重要性,特别是在涉及张量序列化和反序列化的场景中。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计