vLLM 语音转写路由在检查大小之前就把整个上传读入内存
2026 年 7 月的公告显示,vLLM 的转写与翻译端点在应用大小限制之前,先把整个音频文件读入内存,可被用来耗尽内存。
摘要 大多数 LLM 安全讨论围绕提示词,而这一次关乎底层管道。2026 年 7 月 6 日披露的 vLLM 音频端点漏洞显示,服务器在检查已配置的大小限制之前,先把整个音频文件读入内存——因此,能够访问这些路由的调用方可以发送超大上传,迫使进程分配与文件大小成正比的内存,从而造成内存压力甚至杀死进程。受影响版本为
0.22.0–0.23.x;修复见 0.24.0。本文是漏洞类别分析,而非利用代码。
这是什么?
vLLM 是部署最广泛的大语言模型服务引擎之一。当它服务于语音模型时,会暴露与 OpenAI 兼容的音频路由——/v1/audio/transcriptions 和 /v1/audio/translations——它们以 multipart 请求的形式接收上传的音频文件。
该漏洞于 2026 年 7 月 6 日进入 CVE 生态并记录在 vLLM 自己的 GitHub 安全公告中(GHSA-v82g-2437-67m2),本质是这些上传处理中的顺序错误。vLLM 为音频上传提供了一个有文档说明的上限——VLLM_MAX_AUDIO_CLIP_FILESIZE_MB,默认 25 MB——但该检查在较晚的语音转文字预处理阶段才执行,此时文件早已被读入内存。其评分为 CVSS 6.5(中危),影响仅限于可用性。这里没有代码执行,也没有数据泄露;攻击者获得的是拒绝服务。
工作原理
其机制是典型的不受控资源消耗(CWE-400 / CWE-770),没有什么需要复现的高深内容——关键在于顺序,而非某个 payload。
音频路由上的请求生命周期(易受攻击版本)
--------------------------------------------------
1. 客户端向 /v1/audio/transcriptions 发送 multipart 音频上传
2. 处理程序调用 request.file.read() --> 整个文件被读入 RAM
3. 执行语音转文字预处理
4. 到此才:与 VLLM_MAX_AUDIO_CLIP_FILESIZE_MB 比较
5. 超大请求终于被拒绝 -- 但内存已经被消耗掉了
由于整个请求体在第 2 步就被读入,vLLM 分配的内存取决于攻击者选择的上传大小,而不是运营者以为在保护自己的 25 MB 策略。一次超大的 multipart 上传——或几次并行——就能在请求被丢弃之前抬高常驻内存。视部署的资源限制而定,这会表现为合法请求延迟升高、严重内存压力,或进程被直接杀死。公告指出这些路由需要一定的访问权限,且该漏洞可经网络远程触达,攻击复杂度低。
为什么重要
推理服务器越来越被当作普通的 Web 服务,但它们的单请求成本异常高昂:GPU、庞大的常驻模型、媒体预处理管道。这使它们成为资源耗尽攻击的软目标——攻击目的不是窃取,而是以低成本把服务打垮。一个有文档却在昂贵分配之后才执行的大小限制,是一种常见且容易被忽视的失误——防护是存在的,只是执行晚了一步。
更广泛的教训是:LLM 栈中的不可信输入必须在被物化之前就加以约束,这与任何文件上传端点所需的纪律相同。“AI”的外壳并不改变基本原理:音频路由就是文件上传路由,而先读取、后校验的上传路由,正是内存耗尽型拒绝服务的由来。
防御
- 升级到 vLLM 0.24.0 或更高版本。 修复(pull request #45510)调整了检查顺序,使大小限制在上传被完整读入之前就得到应用。用
pip show vllm检查你的版本。 - 在边缘强制请求体大小限制。 在 vLLM 前面放置一个经过认证的网关或反向代理,并在那里限制上传大小(例如 nginx 的
client_max_body_size),使超大请求在到达推理进程之前就被拒绝。这能防护整个类别,而不仅是这一条路由。 - 不要把裸露的 vLLM 端点暴露给不可信调用方。 默认情况下 vLLM 认证很弱或没有认证;限制入站访问,并在音频路由上要求认证。
- 约束进程,而不仅是策略。 在容器/cgroup 内存限制下运行服务并配置自动重启,使内存峰值能够优雅降级和恢复,而不是拖垮主机。在上传端点上增加限流和按客户端配额。
- 在任何地方都先校验大小再分配。 把“先全部读取、再检查”视为你自己工具中的反模式——在任何接受不可信上传的端点上采用流式处理并尽早拒绝。
状态
| 项目 | 参考 | 日期 | 说明 |
|---|---|---|---|
| 厂商公告 | GitHub(GHSA-v82g-2437-67m2)— CVE-2026-55646 | 2026-07-06 | 音频路由在大小检查前读入整个上传 |
| 弱点类别 | CWE-400 / CWE-770 | — | 不受控资源消耗 / 无分配上限 |
| 严重程度 | CVSS 3.1 基础分 6.5(中危) | — | 网络、低复杂度;仅影响可用性 |
| 受影响版本 | vLLM | 0.22.0 → 0.23.x | 服务语音转文字模型的部署 |
| 修复版本 | vLLM 0.24.0 | 2026 | 在读入之前应用大小限制(PR #45510) |
诚实的定位不是“又一个 vLLM CVE”。而是:推理服务器是一个请求代价高昂的 Web 服务,而不可信上传最古老的规则依然成立——在为输入花费内存之前,先给它设好边界。