技术说明
vLLM 0.8.0及更高版本在VideoMediaIO.load_base64()方法中易受内存不足拒绝服务攻击。处理video/jpeg数据URL时,该方法在逗号处拆分base64数据字符串以提取JPEG帧,但未强制执行任何帧数限制。攻击者可以制作包含数千个逗号分隔base64 JPEG帧的单个API请求,导致服务器将所有帧解码到内存中直至崩溃。该漏洞可通过未认证的OpenAI兼容聊天完成API端点访问。
攻击途径
对vLLM /v1/chat/completions端点的单个未认证HTTP请求,使用包含数千个逗号分隔base64编码JPEG帧的精心制作的video/jpeg数据URL。如果API在没有身份验证层的情况下公开(自托管部署中很常见),则无需认证。
受影响系统
vLLM 0.8.0及所有更高版本至少到披露日期。vLLM是部署最广泛的开源LLM推理服务器之一,用于在企业和云环境中托管包括Llama、Mistral、Qwen等模型。
缓解措施
应用vLLM存储库中提交58ee614的补丁。如果无法立即打补丁:将vLLM推理端点放在经过认证的API网关后面,在视频数据URL到达vLLM进程之前应用请求大小限制和输入验证,并启用OOM监控以检测攻击尝试。