Vulnerability  ·  2026-10-26

vLLM Nemotron-VL processors disable Pillow decompression-bomb guard globally, enabling unauthenticated memory-exhaustion DoS

VulnerabilityMedium impactGlobalCVE-2026-116177
vLLM's nemotron_vl.py and nano_nemotron_vl.py each set Image.MAX_IMAGE_PIXELS = None at module load time, permanently disabling Pillow's process-global decompression-bomb defense. An unauthenticated caller who can reach /v1/chat/completions on an instance that has imported either Nemotron-VL processor can submit a pathological image that decompresses into substantial memory, potentially OOM-killing the worker.
Because the setting is process-global, the guard is disabled for every image load in that process, and the attack is unauthenticated and single-request. It lets a remote caller exhaust memory and deny service to co-tenants on a shared vLLM serving instance (CWE-400, CVSS 7.5).
Send a crafted decompression-bomb image to /v1/chat/completions to exhaust memory and OOM-kill the worker.
vLLM >= 0.10.2, < 0.25.0 deploying Nemotron-VL models.
Upgrade to vLLM 0.25.0 (PR #47010 removes the module-level assignments and adds a configurable VLLM_MAX_IMAGE_PIXELS decoded-pixel-count limit).
vLLM GitHub advisory GHSA-mm38-5g96-7j6xNVD detail CVE-2026-116177
See this in the live feed Explore related AI security and governance findings — updated every morning.
Open the feed →