Skip to main content

SGLang CVE-2026-109229

| EUVDEUVD-2026-97435 HIGH
Improper Handling of Highly Compressed Data (Data Amplification) (CWE-409)
2026-10-12 VulnCheck GHSA-fqvf-j3pr-77v9
8.7
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach exposed SGLang image endpoint
  2. Exploit
    Submit tiny highly-compressed huge-dimension image
  3. Execution
    Generic loader decodes unbounded bitmap
  4. Impact
    Worker memory exhausted, service denial

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V2 - Validation and Business Logic Compression ratio limits
Exploitation Conditions

Exploitation requires an SGLang server (≤0.5.21) that loads NanoNemotronVLImageProcessor, which sets Pillow's Image.MAX_IMAGE_PIXELS to None and thereby removes decompression-bomb protection for the entire worker process, affecting even the generic image loader. The attacker must be able to reach an endpoint that accepts attacker-supplied images for decoding. Given CVSS PR:N/UI:N, no authentication or user interaction is confirmed necessary, so any network-reachable instance serving that image path is exposed. The principal limiting factor is deployment-specific: instances that do not serve a model using this processor (and thus never disable the pixel guard) are not affected, which narrows real-world exposure to multimodal/Nemotron-VL style configurations.

Impact

This is a genuine but bounded availability risk. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) describes a remote, unauthenticated, low-complexity attack, and the impact is scoped purely to availability (VA:H) with no confidentiality or integrity impact (VC:N/VI:N) - consistent with a denial-of-service memory-exhaustion bug (CWE-409, data amplification) rather than code execution. The 8.7 'High' score is driven entirely by easy reachability plus total availability loss, so the real-world priority depends heavily on whether the affected code path is actually loaded. No EPSS score was provided and the issue is NOT in CISA KEV, so there is no evidence of active exploitation; no public exploit code is referenced either. The signals are therefore internally consistent (network DoS, no exploitation data) - this is a credible patch-soon issue for exposed SGLang inference servers, not a drop-everything emergency. Key limiting nuance: the flaw is triggered by the NanoNemotronVLImageProcessor disabling Pillow's MAX_IMAGE_PIXELS guard process-wide, which realistically requires a deployment serving a model that uses that processor - verify applicability against your model configuration.

Exploit ScenarioDerived

An attacker sends small, highly compressed images (decompression bombs) with enormous declared pixel dimensions to the image-ingest endpoint of an internet-exposed SGLang server running a multimodal model that loads NanoNemotronVLImageProcessor. Because the processor sets Image.MAX_IMAGE_PIXELS to None process-wide, the generic image loader attempts to decode the full uncompressed bitmap, exhausting worker memory and crashing or hanging the serving process. No public exploit code is identified at time of analysis, but the technique (Pillow decompression bombs) is well known and trivial to reproduce.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 12, 2026

Memory-exhaustion denial of service in SGLang (all versions through 0.5.21) allows remote, unauthenticated attackers to crash inference workers by submitting small, highly compressed images with enormous pixel dimensions to the image loader. The root cause is that NanoNemotronVLImageProcessor sets Pillow's Image.MAX_IMAGE_PIXELS to None, a process-wide global that disables decompression-bomb protection for the entire worker, including the generic image-loading path used by other models. Per the independent assessment this is a genuine but bounded availability risk: it only affects deployments that actually load NanoNemotronVLImageProcessor, and there is no public exploit identified at time of analysis. EPSS and CISA KEV data were not provided, so active exploitation is not confirmed.

RemediationAI

No vendor-released patch or fixed version is identified in the available data; the upstream GitHub issue (https://github.com/sgl-project/sglang/issues/43707) is the tracking reference, so treated as an open fix and verify against the project's releases before assuming a version is safe. The most effective compensating control is to avoid loading NanoNemotronVLImageProcessor: do not serve NanoNemotron-VL models on internet-reachable SGLang instances, or patch the processor locally so the pixel guard is not mutated globally (e.g. restore Image.MAX_IMAGE_PIXELS to a sane value after any per-call override, or scope the override to a context that resets it), with the trade-off that some very large legitimate inputs may then be rejected. As defense in depth, re-enable and enforce Pillow's default guard on the generic loader path in python/sglang/srt/utils/common.py, and add an explicit pre-decode dimension/pixel-count check (reject images whose header dimensions exceed a configured ceiling) at the ingestion endpoint, accepting that overly strict limits can break legitimate high-resolution uploads. Additionally, restrict network access to image-accepting endpoints to trusted clients or place them behind an authenticated reverse proxy (PR:N means this is not currently required by the code, so this is an added layer with operational cost), and cap worker memory with container or cgroup limits plus automatic restart so a successful bomb triggers a fast, contained worker recycle rather than host-wide memory pressure; note that per-worker isolation increases memory overhead and the blast radius shifts to availability of that replicas' requests. Rate-limiting or queuing image submissions reduces repetition of the attack but does not prevent a single large submission from succeeding.

Affected VersionsENISA

sglang 0 ≤0.5.21

Affected Packages

euvd sglang no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The vulnerability maps to CWE-409 (Improper Handling of Highly Compressed Data, i.e. 'decompression bomb'). Pillow (PIL) ships a built-in safety guard: the module-level constant Image.MAX_IMAGE_PIXELS, which raises a DecompressionBombWarning/DecompressionBombError when an image's pixel count is excessive relative to its compressed size. The affected code, in python/sglang/srt/multimodal/processors/nano_nemotron_vl.py (line 82 of the v0.5.21 tree), assigns Image.MAX_IMAGE_PIXELS = None during image preprocessing for the NanoNemotron-VL multimodal model. Because this is a mutation of a shared module global rather than an instance-scoped or per-call setting, the protection is removed for every subsequent Pillow decode inside the same worker process. The generic image loader implemented in python/sglang/srt/utils/common.py (lines 1952-1961) therefore also loses its guard, so an attacker does not need to target the Nemotron-VL endpoint specifically; any endpoint that decodes attacker-supplied images on an affected worker becomes a memory-amplification primitive. A tiny file (e.g. a few kilobytes of highly compressible raster data) can expand to billions of pixels, and decoding allocates memory proportional to the decompressed bitmap, exhausting the worker before any inference occurs. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N with high availability impact and no confidentiality or integrity impact) is consistent with the independent CVSS 3.1 assessment (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H): unauthenticated, network-reachable, no user interaction, availability-only impact. The limiting factor is configuration-dependent, since instances that never instantiate NanoNemotronVLImageProcessor keep Pillow's default pixel guard intact.

Know when Sglang gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 8.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.5 HIGH

Remote unauthenticated image submission with no user interaction (AV:N/AC:L/PR:N/UI:N); pure memory-exhaustion DoS yields A:H with no confidentiality or integrity impact and unchanged scope.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

SGLang through 0.5.21 contains a denial of service vulnerability that disables Pillow decompression bomb protection process-wide by setting Image.MAX_IMAGE_PIXELS to None in NanoNemotronVLImageProcessor. Remote attackers can submit small, highly compressed images with huge dimensions to the generic image loader, exhausting worker memory during decoding.

Executive ViewAI

Why It Matters

SGLang deployments that load the NanoNemotronVLImageProcessor face a high-severity availability risk: attackers can crash inference workers by submitting small compressed images with enormous pixel dimensions, exhausting memory. This affects only environments using that specific processor, but for those, it can disrupt AI inference services and cause costly downtime. No public exploit identified at time of analysis, but leadership should prioritize identifying affected deployments and applying interim mitigations while awaiting a vendor fix.

Business Impact: Medium
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: restrict network exposure of affected inference endpoints; explicitly set Pillow's Image.MAX_IMAGE_PIXELS to a safe value after loading NanoNemotronVLImageProcessor to re-enable decompression-bomb protection; enforce memory limits and automatic worker restarts; monitor for abnormal memory consumption; consider removing or replacing the NanoNemotronVLImageProcessor until a patch is available.

Threat Intelligence Overview

EPSS Score
0.4%
Top 65% exploitable
Prevalence
Medium
popular LLM inference framework, but AI-serving deployments only
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
Medium

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in Sglang

View all
CVE-2026-15969 CRITICAL
9.8 Jul 30

Remote code execution in SGLang (versions up to and including 0.5.15) allows unauthenticated attackers to run arbitrary

CVE-2026-3059 CRITICAL
9.8 Mar 12

SGLang's multimodal generation module deserializes untrusted data with pickle.loads() over an unauthenticated ZMQ broker

CVE-2026-3060 CRITICAL
9.8 Mar 12

SGLang's encoder parallel disaggregation system is vulnerable to unauthenticated RCE through pickle deserialization in t

CVE-2026-7304 CRITICAL
9.8 May 18

Unauthenticated remote code execution in SGLang (the LLM/multimodal generation serving runtime) affecting version 5.10 a

CVE-2026-5760 CRITICAL
9.8 Apr 20

Remote code execution in SGLang 0.5.9's /v1/rerank endpoint allows unauthenticated attackers to execute arbitrary code b

CVE-2026-15976 CRITICAL
9.8 Jul 30

Remote code execution in SGLang (versions up to and including 0.5.15) allows attackers to run arbitrary code on the infe

CVE-2026-86793 CRITICAL
9.8 Sep 11

Remote code execution in SGLang AI inference servers allows unauthenticated attackers to run arbitrary code through the

CVE-2026-15971 CRITICAL
9.8 Jul 30

Remote code execution in SGLang (versions ≤ v0.5.15) allows attackers to achieve arbitrary code execution through the op

CVE-2026-7301 CRITICAL
9.8 May 18

Unauthenticated remote code execution affects SGLang, an LLM/multimodal inference-serving framework, at version 5.10, wh

CVE-2026-93034 CRITICAL
9.8 Oct 08

Unauthenticated remote code execution in SGLang versions through v0.5.20 arises from unsafe pickle deserialization in th

CVE-2026-93088 CRITICAL
9.8 Sep 22

Unauthenticated remote code execution in SGLang 0.5.11 through 0.5.14 occurs when the multimodal generation runtime is l

CVE-2026-14890 CRITICAL
9.1 Jul 16

Unauthenticated remote code execution in SGLang (versions 0 through 0.5.14) arises when the expert-parallel backup subsy

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy