CVE-2026-55646: vLLM: Speech-to-text upload size limit is enforced after full UploadFile read
Current-head vLLM documents VLLM_MAX_AUDIO_CLIP_FILESIZE_MB as the maximum audio file size accepted by the speech-to-text APIs. The default is 25 MB. vllm/envs.py also describes files larger than this value as rejected.
The /v1/audio/transcriptions and /v1/audio/translations routes call await request.file.read() before vLLM checks that limit. In FastAPI and Starlette, UploadFile.read() returns bytes from the uploaded file object; when called without a size argument, the route materializes the remaining file contents. vLLM then performs the compressed file-size check later in _preprocess_speech_to_text() against the already-created bytes object.
As a result, the documented compressed audio file-size limit does not bound the memory allocated by vLLM endpoint code before validation. An oversized multipart upload can cause vLLM to allocate memory proportional to the uploaded file size before rejecting the request as too large.
This is distinct from GHSA-6pr9-rp53-2pmc, which covered decoded PCM expansion after compressed input was accepted. This report covers compressed upload materialization before compressed-size validation.
References
- github.com/advisories/GHSA-v82g-2437-67m2
- github.com/pypa/advisory-database/tree/main/vulns/vllm/PYSEC-2026-2305.yaml
- github.com/vllm-project/vllm/commit/b997071ec493765abbed990c65843ed05e4708a8
- github.com/vllm-project/vllm/pull/45510
- github.com/vllm-project/vllm/security/advisories/GHSA-v82g-2437-67m2
- nvd.nist.gov/vuln/detail/CVE-2026-55646
Code Behaviors & Features
Detect and mitigate CVE-2026-55646 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →