事件经过
vLLM 的 VideoMediaIO.load_base64 帧数保护可通过请求级 media_io_kwargs.video 覆盖 VideoMediaIO.num_frames 而被绕过。将 num_frames 设为 -1 会选中无限制分支,从而分割并解码每一帧,因此一个大型内联视频/JPEG 可能使 API 前端在后续验证拒绝前分配数 GB 的帧数组(CWE-400,CVSS 7.5)。
影响分析
资源消耗发生在 API 前端,早于引擎验证,因此一个聊天请求即可消耗大量内存和 CPU,导致支持多模态的视频部署中的服务进程崩溃或被 OOM 杀死。
攻击途径
提交一个大型内联视频/JPEG,并设置 media_io_kwargs.video.num_frames = -1,以强制解码每一帧。
受影响系统
vLLM >= 0.18.0,< 0.31.0(视频/JPEG MediaIO 路径)。
缓解措施
升级到 vLLM 0.31.0(PR #58830 默认拒绝请求级 media_io_kwargs;仅对可信客户端通过 --trust-request-mm-kwargs 启用)。