Skip to main content

SGLang CVE-2026-15969

| EUVDEUVD-2026-51267 CRITICAL
Deserialization of Untrusted Data (CWE-502)
2026-07-30 certcc GHSA-359v-m36h-r94v
9.8
CVSS 3.1 · Vendor: certcc
Share

Severity by source

Vendor (certcc) PRIMARY
9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
9.8 CRITICAL

Network-reachable endpoint deserializes untrusted pickle with no authentication or interaction (AV:N/AC:L/PR:N/UI:N), yielding full host RCE, so C/I/A all High.

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

Primary rating from Vendor (certcc).

CVSS VectorVendor: certcc

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

4
Analysis Generated
Jul 31, 2026 - 20:30 vuln.today
CVSS changed
Jul 31, 2026 - 18:37 NVD
9.8 (CRITICAL)
CVE Published
Jul 30, 2026 - 18:09 cve.org
UNKNOWN (no severity yet)
CVE Published
Jul 30, 2026 - 18:09 cve.org
CRITICAL 9.8

DescriptionCVE.org

SGLang contains an unauthenticated RCE in /load_lora_adapter_from_tensors via bypass of SafeUnpickler’s incomplete denylist, allowing arbitrary command execution through crafted base64-encoded pickle payloads.

AnalysisAI

Remote code execution in SGLang (versions up to and including 0.5.15) allows unauthenticated attackers to run arbitrary commands by abusing the /load_lora_adapter_from_tensors endpoint, which deserializes attacker-supplied base64-encoded pickle payloads. The framework's SafeUnpickler relies on an incomplete denylist that can be bypassed, so a crafted pickle stream reaches dangerous reduce logic and executes OS commands on the serving host. Rated CVSS 9.8 with SSVC total technical impact and marked automatable; no public exploit has been confirmed and EPSS is a modest 0.65% (48th percentile), so widespread automated exploitation is not yet evidenced.

Technical ContextAI

SGLang is a high-performance serving runtime for large language models, exposing HTTP endpoints for model and adapter management. The affected surface is the LoRA adapter loading path (/load_lora_adapter_from_tensors), which accepts serialized tensor data. The root cause is CWE-502 (Deserialization of Untrusted Data): SGLang attempts to mitigate pickle's inherent code-execution risk with a SafeUnpickler that enforces a denylist of forbidden classes/modules, but denylist-based pickle filtering is fundamentally fragile - any class or global not enumerated (or reachable via an alias/alternate import path) slips through. Because Python's pickle invokes __reduce__/__reduce_ex__ during load, a payload that references a permitted-but-dangerous callable executes at unpickle time, before any application-level validation.

RemediationAI

Upgrade SGLang to a fixed release beyond 0.5.15 as published in the vendor GitHub Security Advisory (GHSA-2wvm-gjg7-5jfm at https://github.com/sgl-project/sglang/security/advisories/GHSA-2wvm-gjg7-5jfm); the advisory is the authoritative source for the exact patched version, which is not independently confirmed in the available data - do not rely on an assumed version number. If immediate patching is not possible, restrict network access to the SGLang management/inference API so the /load_lora_adapter_from_tensors endpoint is not reachable from untrusted networks (bind to localhost or place behind an authenticating reverse proxy and firewall), and disable or block dynamic LoRA adapter loading from tensors if your deployment does not require it, accepting the trade-off that runtime adapter hot-loading will no longer function. Because the flaw is deserialization-based, treating any pickle-loading endpoint as an RCE primitive and denying external access to it is the most reliable compensating control until the patch is applied.

More in Sglang

View all
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

CVE-2026-7302 CRITICAL
9.1 May 18

Arbitrary file write in SGLang's multimodal generation runtime (version 5.10) allows a remote, unauthenticated attacker

Share

CVE-2026-15969 vulnerability details – vuln.today

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