vLLM服务器安全漏洞:通过特定参数导致拒绝服务攻击
漏洞标识:CVE-2025-62426
严重程度:中危(CVSS评分6.5)
影响版本:vLLM 0.5.5至0.11.1
修复版本:vLLM 0.11.1
漏洞概述
vLLM作为大语言模型(LLM)的推理和服务引擎,在其0.5.5至0.11.1版本中,/v1/chat/completions和/tokenize端点存在一个安全缺陷。这些端点允许一个名为chat_template_kwargs的请求参数,该参数在代码中被使用前未针对聊天模板进行适当验证。
攻击者通过构造特定的chat_template_kwargs参数,可以长时间阻塞API服务器的处理,延迟所有其他请求,从而实现对服务器的拒绝服务攻击。
技术原理
漏洞机制
在serving_engine.py中,chat_template_kwargs参数被解包并作为关键字参数传递给chat_utils.py中的apply_hf_chat_template方法,而该字典中的键和值在传递前未经过验证。这意味着攻击者可以利用这些参数覆盖apply_hf_chat_template方法中的可选参数,例如将tokenize参数的默认值从False更改为True。
serving_chat.py和serving_tokenization.py都调用了serving_engine.py中的_preprocess_chat方法,并且都传递了chat_template_kwargs参数。
因此,像{"tokenize": True}这样的chat_template_kwargs会使令牌化操作在应用聊天模板的过程中发生,而这并非预期行为。令牌化是一个阻塞操作,当输入足够大时,可以阻塞API服务器的事件循环,从而在处理完成之前阻塞所有其他请求。
代码位置
影响范围
受影响的系统
- vLLM版本0.5.5至0.11.1
攻击前提
- 攻击者需要具有低权限认证(PR:L)
- 无需用户交互(UI:N)
- 可通过网络远程攻击(AV:N)
安全影响
- 可用性:高影响(A:H),攻击者可导致服务拒绝
- 机密性:无影响(C:N)
- 完整性:无影响(I:N)
解决方案
官方修复
该漏洞已在vLLM 0.11.1版本中修复。修复方案包括:
- 硬编码关键参数:将
tokenize参数硬编码为始终为False,而不是允许调用者可选地覆盖它 - 参数验证改进:不将
chat_template_kwargs作为解包的关键字参数传递,而是将其作为字典传递,并在apply_hf_chat_template中解析针对聊天模板的关键字参数后仅解包必要的参数
修复链接
- GitHub修复提交:vllm-project/vllm#27205
- 具体修复提交:3ada34f
漏洞分类
CWE分类
- CWE-770:资源分配无限制或节流
- 描述:产品在代表参与者分配可重用资源或资源组时,未对可分配资源的大小或数量施加任何限制,违反了该参与者的预期安全策略。
CVSS评分
- 基础分数:6.5(中危)
- 向量:CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
- 攻击向量:网络(AV:N)
- 攻击复杂度:低(AC:L)
- 权限要求:低(PR:L)
- 用户交互:无(UI:N)
- 范围:未改变(S:U)
- 机密性影响:无(C:N)
- 完整性影响:无(I:N)
- 可用性影响:高(A:H)
参考信息
相关标识
- GHSA ID:GHSA-69j4-grxj-j64p
- CVE ID:CVE-2025-62426
时间线
- 发布时间:2025年11月20日
- 最后更新:2025年11月21日
- NVD发布日期:2025年11月20日
- NVD最后修改:2025年12月4日
数据来源
- GitHub Advisory Database
- 国家漏洞数据库(NVD)
安全建议
- 立即升级:所有使用vLLM 0.5.5至0.11.1版本的用户应立即升级到0.11.1或更高版本
- 监控异常请求:监控API端点中的异常
chat_template_kwargs参数使用 - 实施请求限制:考虑对大型聊天补全或令牌化请求实施大小和频率限制
- 防御性编程:在处理用户提供的参数时始终进行验证和清理
此漏洞凸显了在处理用户提供的参数时进行适当验证的重要性,特别是在高性能LLM服务环境中,资源分配不当可能导致严重的服务可用性问题。