SGLang's debugging dumper accepted a filter expression from the HTTP control route and evaluated it in the scheduler process. The code removed __builtins__ from the immediate evaluation globals, but supplied callable regex functions as allowed helpers. Python function objects expose their defining module globals. In the reported reproduction, the untrusted…
Case · DiggingBeagle record
SGLang debug dumper executes caller-controlled Python inside its inference scheduler
With a reused exposed debug route, an ordinary model API key could configure an evaluated filter; a published proof of concept created a marker file inside the model server process.
SGLang inference servers with the reused-port dumper enabled and insufficient administrative route separation.
Assessment profile
Assessment method- Setting
- research demonstration
- Exploitation
- demonstrated
- Evidence
- Grade B
- AI role
- AGAINST AI
Basis and provenance
A maintainer-facing SGLang issue includes an authenticated ordinary-API-key reproduction of scheduler-process Python code execution when the dumper reused a reachable port. The author observed a marker file, but exposed-deployment prevalence, production compromise and an independently verified fixed release are not established.
Assessed Oct 17, 2026 using diggingbeagle.assessment/1.
Evidence basis: CLM-SGLANG-EVAL-ROUTE · CLM-SGLANG-MARKER-RCE · SGLang issue 44188: scheduler-process code execution through dumper filter eval
At a glance
No verified production compromise or exploitation scale. Patch merge and exact fixed release must be checked against maintained source and changelogs.
Limits and uncertaintyFull account
SGLang's debugging dumper accepted a filter expression from the HTTP control route and evaluated it in the scheduler process. The code removed __builtins__ from the immediate evaluation globals, but supplied callable regex functions as allowed helpers. Python function objects expose their defining module globals. In the reported reproduction, the untrusted expression used that path to reach imports and run arbitrary Python; the test wrote a marker file from inside the scheduler.
The exploit depends on deployment configuration, not every ordinary inference request. The issue documents DUMPER_SERVER_PORT=reuse, a reachable /dumper/configure endpoint, subsequent model execution, and absence of a separately enforced admin credential, or possession of it. An ordinary model API key was sufficient in the controlled setup, while unauthenticated access would depend on the server's API configuration. The report includes a proposed AST-restricted evaluator, but a pull-request discussion is not proof that every deployed version is fixed.
The observed effect is controlled scheduler-code execution. It can imply access to files and credentials available to that process, but no live victim, stolen production secret or downstream campaign is confirmed.
Timeline
- Oct 14, 2026disclosure
Public disclosure
Claims & evidence
CLM-SGLANG-EVAL-ROUTEIssue 44188 shows /dumper/configure sending an HTTP-provided filter expression into Python eval in the model scheduler under the reused-port debug configuration.supported
Basis: reported finding
- supportsSGLang issue 44188: scheduler-process code execution through dumper filter evalprimary disclosure
Describe the bug; source paths
CLM-SGLANG-MARKER-RCEThe reporter reproduced scheduler-process Python execution using an ordinary configured model API key, evidenced by an on-disk marker.supported
Basis: reported finding
- supportsSGLang issue 44188: scheduler-process code execution through dumper filter evalprimary disclosure
Reproduction; dynamic v0.5.19 observations
Controls and mitigations
- Disable the exposed dumper in production and require separate enforced administrative authentication where debugging is needed.
- Replace eval of user-provided expressions with a constrained parser whose object graph cannot reach Python globals.
- Treat the debug dumper as a separate administrative control plane. Keep it disabled or unreachable to ordinary inference principals in production.
- Eliminate Python eval for attacker-supplied dumper filters and verify a restricted parser cannot traverse helper-function globals or other objects.
Unknowns and contradictions
- No verified production compromise or exploitation scale.
- Patch merge and exact fixed release must be checked against maintained source and changelogs.
Sources and citation
Material revision history
- Oct 17, 2026 · Canonical change recorded · new in release · revision 163