Skip to main content

SGLang EUVDEUVD-2026-101799

| CVE-2026-110809 LOW
Improper Resource Shutdown or Release (CWE-404)
2026-10-15 cna@vuldb.com GHSA-cq8f-cv6m-8vvq
2.1
CVSS 4.0 · Vendor: vuldb
View

Attack ChainAIDerived

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

  1. Access
    Authenticate to SGLang session API
  2. Delivery
    Open session and seed request nodes
  3. Exploit
    Send generate with replace=true and no rid
  4. Execution
    Trigger dict-mutation-during-iteration in cleanup
  5. Impact
    Crash request handling (denial of service)

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Resource release
Exploitation Conditions

Requires an actor who can reach and authenticate to the SGLang API session endpoints (open_session and generate), consistent with PR:L - this is not an anonymous internet attack. The specific trigger is a generation request carrying session_params.replace=true with rid=None against a session that already contains request nodes, which drives the buggy cleanup loop in Session.create_req (session_controller.py). Limiting factors: the deployment must expose the session-control feature and accept session_params; the impact is confined to crashing request/session handling (VA:L), not persistent or whole-node compromise; no code execution or data exposure is possible.

Impact

This is a genuinely low-priority issue despite being remotely reachable. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) and the vendor base score of 2.1 agree that impact is minimal: confidentiality and integrity are untouched (VC:N/VI:N) and only availability is affected at a low level (VA:L), with no scope change to other systems. The flaw (CWE-404, improper resource release during session cleanup) causes a crash in session-request handling, not a full-server outage. Exploitation requires low-level privileges (PR:L), i.e. an actor who can already authenticate to the SGLang API, which materially narrows the threat population. A public proof-of-concept exists (the gist repro script and the attached regression tests), reflected in the CVSS temporal metric E:P (Proof-of-Concept), but there is NO CISA KEV listing and NO EPSS score provided, so there is no evidence of real-world active exploitation. Signals are consistent rather than conflicting: a reachable-but-low-impact DoS requiring authentication, with POC available but no observed in-the-wild use. Note the vuldb-sourced wording 'may be used' indicates disclosure, not confirmed exploitation.

Exploit ScenarioDerived

An authenticated client with access to the SGLang inference API opens a session, issues a few generation requests to build a request-node tree, then submits a generate call with session_params.replace=true and no rid. The cleanup path in Session.create_req iterates self.req_nodes while req_node.clear() mutates that same dict, raising a RuntimeError that crashes the request. A public PoC (repro_sglang_session_replace_crash.py) demonstrates the condition.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
No patch listed yet 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 15, 2026

SGLang up to and including 0.5.19 can be crashed through its session-control API: an authenticated client that issues a generation request with session_params.replace=true and rid=None against a session that already holds request nodes triggers the cleanup loop in Session.create_req, which mutates the request-node dictionary while iterating it and raises an unhandled exception. The impact is confined to availability of the affected request/session handling (CVSS 2.1 / assessed CVSS:3.1 A:L) - there is no code execution, privilege escalation, or data exposure - but the flaw is remotely reachable and publicly available exploit code exists, meaning reachable and authenticated SGLang deployments are at risk of request-path crashes. The upstream fix sits in an unmerged pull request, so no released patched version is confirmed and operators must rely on exposure reduction until the fix lands.

RemediationAI

The upstream fix is the change in pull request https://github.com/sgl-project/sglang/pull/41483, which snapshots the request-node values and clears only parentless (root) nodes; however, that PR is still awaiting acceptance, so the status is best described as upstream fix available (PR/commit) with no released patched version independently confirmed - do not assume a tagged SGLang release containing the fix until the PR is merged and a version is published. Until then, the most effective compensating control is exposure reduction: because the trigger requires the ability to call /open_session and /generate with session_params (CVSS PR:L), place the SGLang server behind an authenticating reverse proxy or API gateway and restrict those endpoints to trusted internal clients only - the trade-off is that this does not prevent an authorized but untrusted client (or a compromised tenant) from still causing the crash. If multi-turn session control is not required, disable the session-control feature or block the session endpoints entirely at the proxy layer, accepting the loss of session/branching functionality. Where sessions must stay enabled, add request validation in front of the server that rejects or strips session_params combinations of replace=true with rid=None against sessions that already contain request nodes, and apply per-client rate limiting so repeated crash attempts cannot be trivially looped; both measures add latency and maintenance overhead and are bypassable if the client can reach the backend directly, so network segmentation of the inference service is strongly recommended alongside them. Monitor upstream issue #41470 and the VULDB entry for the merged-fix announcement and re-deploy once an official patched release is available.

Affected VersionsENISA

sglang 0.5.0
sglang 0.5.7
sglang 0.5.10
sglang 0.5.16
sglang 0.5.3
sglang 0.5.1
sglang 0.5.6
sglang 0.5.17
sglang 0.5.5
sglang 0.5.4
sglang 0.5.18
sglang 0.5.14
sglang 0.5.9
sglang 0.5.13
sglang 0.5.19
sglang 0.5.11
sglang 0.5.15
sglang 0.5.2
sglang 0.5.8
sglang 0.5.12

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

SGLang is an open-source LLM serving framework whose session controller (python/sglang/srt/session/session_controller.py) maintains a tree of SessionReqNode objects in the self.req_nodes dictionary, keyed by request ID, with parent/child links that model forked or branched generation requests within a session. CWE-404 (Improper Resource Shutdown or Release) is the root-cause class here: when a request arrives with session_params.replace=true, create_req is supposed to tear down the existing session state before installing the replacement request. The vulnerable implementation iterated the live dictionary - "for _, req_node in self.req_nodes.items(): req_node.clear(self.req_nodes)" - while each req_node.clear() call removes entries from that same dictionary, producing a "dictionary changed size during iteration" RuntimeError (or otherwise corrupting teardown) inside the request-handling path. The proposed fix (PR #41483) takes a snapshot of the values, "for req_node in list(self.req_nodes.values()):", and only invokes clear() on nodes whose parent is None, so each branch root recursively releases its own subtree exactly once instead of every node racing to mutate the shared map. Regression tests added alongside the PR exercise both a unit-level Session.create_req call with a replacement request and an end-to-end path that opens a session via /open_session, creates a root and child generation via /generate, then issues a replace request and verifies the old root request ID is no longer usable. The trigger requires the session-control feature to be enabled and the session_params object to be accepted by the API.

Know when Python 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 (vuldb) PRIMARY 2.1 LOW
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P
vuln.today AI 4.3 MEDIUM

Network-reachable API (AV:N) with no special timing (AC:L) but requiring an authenticated session user (PR:L); only a low availability impact (A:L) from a crashing request, no C/I impact.

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

Primary rating from Vendor (vuldb).

CVSS VectorVendor: vuldb

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

DescriptionCVE.org

A security vulnerability has been detected in sgl-project SGLang up to 0.5.19. Affected by this issue is the function Session.create_req of the file python/sglang/srt/session/session_controller.py of the component Session Cleanup. Such manipulation leads to denial of service. The attack may be performed from remote. The exploit has been disclosed publicly and may be used. The pull request to fix this issue awaits acceptance.

Threat Intelligence Overview

EPSS Score
0.3%
Top 76% exploitable
Prevalence
Medium
popular open-source LLM inference server, not universally deployed
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

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 LOW
CISA KEV No
Public POC No
EPSS 0.3%
Patch available No
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Defer
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

10
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +10
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 Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

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