SGLang Has Six Unpatched AI Server Flaws. Can They Expose Your Files And Model Weights?
CERT/CC disclosed six SGLang vulnerabilities involving code execution, local-file access, credential leakage, and model-weight theft. Most need no authentication.
CERT/CC disclosed six SGLang vulnerabilities on July 30, 2026, including paths to run code, read local files and cloud metadata, expose credentials, and extract model weights. Most of the reported flaws do not require authentication. The highest-risk systems are SGLang service interfaces reachable from untrusted networks, and CERT said no maintainer patches were available when it published the alert.
Checked July 30, 2026: OpenVeil reviewed CERT/CC VU#281278, the six CVE records and public GitHub advisories, SGLang's current repository and release state, Python's serialization warning, and Hugging Face's model-file security guidance.
Who This Article Is For
This article is for:
- people running SGLang on a workstation, home server, GPU host, or cloud instance
- teams serving Qwen, DeepSeek, Kimi, GLM, Mistral, or multimodal models
- developers exposing an OpenAI-compatible local or private AI endpoint
- administrators who assume an API key protects every SGLang control path
- model owners worried about weight theft
- privacy-conscious users comparing local inference with hosted private AI
The short answer is:
Running the model on hardware you control can keep inference local, but it does not make the inference server secure by default. If an affected SGLang interface is reachable, an attacker may be able to cross the boundary between "send a model request" and "touch the host, its secrets, or its weights."
That does not mean every SGLang installation has already been compromised. It means operators should treat the same-day CERT disclosure as an exposure-review event, not wait for a normal upgrade notification.
What Is Confirmed
CERT/CC Published One Alert Covering Six SGLang Vulnerabilities
CERT/CC Vulnerability Note VU#281278 identifies six separate CVEs:
| CVE | Reported path | What CERT says could happen | Important condition |
|---|---|---|---|
CVE-2026-15969 |
/load_lora_adapter_from_tensors |
Arbitrary command execution through unsafe deserialization | Crafted serialized input reaches the endpoint |
CVE-2026-15971 |
Optional dumper subsystem | Sandbox escape and code execution during inference requests | DUMPER_SERVER_PORT is set |
CVE-2026-15974 |
image_url in /v1/chat/completions |
Server-side request forgery and local-file access | Multimodal URL input reaches the affected fetch path |
CVE-2026-15976 |
/update_weights_from_disk |
Code execution while loading Hugging Face .bin weights |
The loading path falls back to unsafe pickle deserialization |
CVE-2026-15977 |
/server_info |
API-key and SSL-keyfile information leakage | The reported configuration uses only the admin API key |
CVE-2026-15978 |
Distributed-weight endpoints | Model-weight exfiltration | No API keys are configured and the endpoints are reachable |
This is not one generic "AI is unsafe" warning. The six findings cross several concrete system boundaries:
- untrusted network request to executable serialized object
- remote image reference to internal network or local file
- model-repository file to host process
- diagnostic endpoint to secret material
- distributed-compute feature to proprietary model weights
The official SGLang repository describes the project as a high-performance serving framework for language and multimodal models, compatible with Hugging Face models and OpenAI APIs. During OpenVeil's July 30 review, the repository showed roughly 31,000 stars and 7,500 forks. SGLang's own documentation says it powers more than 400,000 GPUs. That is a project claim, not an independently audited deployment count, but it explains why a six-vulnerability disclosure matters beyond one lab.
Most Of The Reported Paths Do Not Require Authentication
CERT says exploitation does not require authentication in most cases. Some reported paths need only network access, without an API key or user credential.
That makes network reachability the first question:
- Is the SGLang port bound beyond loopback?
- Can another device on the LAN reach it?
- Is it exposed through a reverse proxy, load balancer, tunnel, container port, Kubernetes service, or cloud security group?
- Can a public application relay user-controlled fields to it?
- Can another compromised service on the same network call the control endpoints?
A service does not need to appear in a search engine to be reachable by an attacker. Private-network access, container-to-container access, and an application-side request path can all matter.
Two Findings Involve Python Pickle Deserialization
The code-execution reports for the LoRA tensor endpoint and Hugging Face .bin weight loading both involve Python serialization.
Python's own pickle documentation gives an unusually direct warning: the format is not secure, and malicious pickle data can execute arbitrary code while it is being loaded.
The SGLang finding is therefore not that an AI model "decided" to hack the server. The dangerous transition happens in ordinary application code:
untrusted serialized bytes
↓
deserializer reconstructs Python objects
↓
object reconstruction invokes executable behavior
↓
code runs with the SGLang process's privileges
That distinction matters. Model guardrails, prompt filters, and output moderation do not fix unsafe object deserialization.
The GitHub advisory for CVE-2026-15969 identifies an incomplete denylist in SGLang's SafeUnpickler path. The CVE-2026-15976 advisory says the weight-update path can fall back to torch.load(..., weights_only=False) for .bin files.
One Finding Turns An Image URL Into A Server-Side Data Path
CVE-2026-15974 involves unsanitized image_url input in the multimodal chat-completions endpoint.
An image URL looks like content for the model. To the server, however, it can become an instruction to fetch a location.
If the application does not strictly limit that fetch, the server may be induced to request:
- cloud-instance metadata
- internal administrative services
- private network addresses
- local files
- services reachable from the GPU host but not from the public internet
This is a server-side request forgery boundary. It is different from prompt injection. The dangerous capability is the server's network and file access, not the meaning of the text prompt.
The Disclosure Includes Both Secret Leakage And Model-Weight Theft
Two of the six findings focus on assets surrounding the model:
CVE-2026-15977reportedly exposes API-key and SSL-keyfile information through/server_infoin the documented configuration.CVE-2026-15978reportedly lets an unauthenticated remote caller trigger distributed weight broadcasting and data transfer when no API keys are configured, enabling exfiltration of all model weights.
Those outcomes are materially different.
Credential leakage can expose access to other services, registries, storage, or administrative functions. The blast radius depends on what the credential can do and where else it is accepted.
Model-weight exfiltration can disclose an organization's valuable checkpoint even when user prompts never leave the server. For a commercial or fine-tuned model, the weights may encode expensive training work, licensed material, or proprietary behavior.
Local inference can protect prompt location while still leaving credentials and weights at risk. Privacy, infrastructure security, and intellectual-property custody are separate properties.
CERT Said No Maintainer Patch Was Available At Publication
CERT's July 30 note says no patches were available from SGLang maintainers at publication and coordination attempts had been unsuccessful. Its vendor table lists the project's status as unknown for all six CVEs.
That means operators should not infer safety from:
- having installed the newest version they knew about
- seeing no Dependabot alert
- using a release published before July 30
- placing an ordinary API key on the text-generation endpoint
- running the model on their own hardware
OpenVeil's check found v0.5.16 as the latest public SGLang release during the scan, but neither CERT nor the GitHub CVE records identified it as a fixed version. A later code commit or release may change that. Until an authoritative fix maps versions to CVEs, "latest" and "patched" are not interchangeable.
What Is Still Unclear
The Exact Affected-Version Range Is Not Published
The public GitHub advisory records listed affected and patched versions as unknown during the July 30 review.
That prevents a clean statement such as:
versions below X are vulnerable; version X is safe
Operators must instead inspect which features and endpoints their deployment exposes, apply compensating controls, and watch for an upstream advisory that names fixed commits or releases.
CERT Does Not Report Whether These Flaws Were Exploited In The Wild
The advisory describes impact and reachability. It does not say that attackers have used these six CVEs against production systems.
That absence is not proof of exploitation, and it is not proof of safety. Public disclosure can change attacker interest quickly, particularly when the affected paths are network reachable and the vulnerability class is well understood.
Not Every Deployment Exposes Every Path
Conditions vary:
- the dumper flaw requires the optional subsystem
- the image-fetch flaw concerns multimodal URL handling
- the
.binweight issue requires the affected loading path - the weight-exfiltration report specifies a no-API-key configuration
- network controls can make an endpoint unreachable to an outside attacker
It would be misleading to say all six findings are remotely exploitable against every SGLang server.
It would also be misleading to reduce the response to "we do not use that optional feature." A deployment can still expose one of the other paths.
It Is Not Yet Clear How SGLang Will Patch And Backport The Fixes
CERT notes that SGLang has begun addressing related pickle-deserialization risks and is working toward msgpack, but the environment setting SGLANG_USE_PICKLE_IPC still defaulted to true in the code state CERT reviewed.
What remains unknown includes:
- which release will address each CVE
- whether all six fixes will arrive together
- which older branches will receive backports
- whether endpoint authentication behavior will change
- whether a migration away from pickle will create compatibility changes
- what detection guidance the project will publish
The safest update rule is to map a release to the exact CVE list, not assume any future version bump covers all six.
The Three Trust Boundaries This Disclosure Exposes
The most useful lesson is not memorizing six endpoint names. It is checking three boundaries around a local AI server.
Boundary 1: Who Can Reach The Server?
Start with the network.
| Deployment | Relative exposure | Why |
|---|---|---|
| Loopback-only personal workstation | Lower | Remote devices cannot directly reach the listening port |
| LAN-accessible home or office server | Higher | Any device or compromised service on that network may become a caller |
| Private cloud network | Variable | Security groups, service identities, and east-west traffic determine reachability |
| Public reverse proxy or tunnel | Highest | Untrusted internet callers may reach application or control paths |
| Public app relaying user fields | High even if SGLang is private | The app can become a bridge to an internal endpoint |
"Not public" is a useful control, but it is not the same as "not reachable by untrusted input."
Boundary 2: What Can A Request Cause The Server To Touch?
Map request fields to capabilities:
- Can a URL field fetch arbitrary destinations?
- Can a request load or update weights?
- Can it load LoRA adapters?
- Can it call diagnostic or administrative endpoints?
- Can it initiate distributed weight transfer?
- Can it read local paths?
- Can it reach instance metadata or internal services?
This is the difference between a narrow inference API and a control plane disguised as one.
Boundary 3: What Can The SGLang Process Access?
Assume the process itself could be compromised and ask:
- Which environment variables are present?
- Are cloud credentials attached to the instance?
- Can the process read SSH keys, TLS keys, model-registry tokens, or user uploads?
- Are proprietary weights mounted read-only or read-write?
- Can it reach databases, vector stores, internal APIs, or the public internet?
- Does it run as root?
- Is it isolated in a dedicated container, VM, or account?
Network isolation reduces who can trigger a flaw. Process isolation reduces what a successful exploit can take.
What SGLang Operators Should Do Now
CERT's mitigations are the starting point. The following checklist turns them into an operational review.
1. Remove Untrusted Network Reachability
Inventory every SGLang listener and route:
- host ports
- Docker port mappings
- Kubernetes Services and Ingress objects
- reverse proxies
- VPN and mesh-network exposure
- development tunnels
- cloud firewall and security-group rules
- application servers that forward requests
Restrict the service to loopback or a tightly controlled private network where possible. Require an authenticated gateway for every necessary remote path.
Do not assume that placing authentication on /v1/chat/completions protects unrelated control endpoints.
2. Disable Unused Features And Endpoints
If a deployment does not need:
- runtime LoRA tensor loading
- weight updates from disk or a repository
- distributed weight broadcasting
- server-information endpoints
- the optional dumper subsystem
- remote image URLs
remove or block those paths at the application, proxy, and network layers.
Reducing attack surface is especially important while no patched release is identified.
3. Set SGLANG_USE_PICKLE_IPC To False
CERT specifically recommends changing SGLANG_USE_PICKLE_IPC to false in environ.py.
Treat that as one mitigation, not a complete fix. The six findings span more than the internal pickle transport, including remote fetches, server information, model files, and weight-distribution behavior.
Test workload compatibility before returning a changed deployment to production.
4. Prefer Safer Weight Formats And Trusted Revisions
Hugging Face's pickle-security guidance warns that loading pickle files can execute code. It recommends trusted publishers and signed commits, and it explains that Hub scanning is not foolproof.
Hugging Face recommends safetensors as a more secure weight format than pickle-backed .bin files.
For every loaded model:
- pin an exact repository revision
- verify the publisher and commit
- prefer
safetensorswhen the runtime and model support it - review repository-supplied custom code
- preserve hashes
- do not let a remote caller choose an arbitrary model repository or path
Safer weight serialization directly addresses one class of risk. It does not fix exposed management endpoints or SSRF.
5. Block Cloud Metadata And Internal Destinations
The multimodal URL finding makes outbound-request policy part of AI-server security.
At minimum, prevent the inference process from fetching:
- link-local metadata addresses
- loopback and private-network destinations it does not need
- local file schemes
- internal administrative domains
- arbitrary protocols
Use a strict allowlist for remote media sources where remote fetching is necessary. A denylist alone is easy to get wrong across redirects, DNS resolution, IPv4/IPv6 forms, and alternate URL encodings.
6. Reduce The Process's Privileges
Run the service:
- as a non-root account
- with only required filesystem mounts
- with secrets delivered narrowly
- without general cloud-instance credentials
- in a dedicated container or VM
- with restricted outbound network access
- with read-only model storage where practical
If the process is compromised, least privilege can turn a host-wide incident into a narrower service incident.
7. Rotate Secrets If The Service Was Exposed
If an affected interface was reachable by untrusted callers, identify and rotate credentials the SGLang process could read or reveal:
- API keys
- Hugging Face tokens
- cloud credentials
- model-registry tokens
- TLS private keys
- database passwords
- storage credentials
Rotation should follow evidence preservation. Save logs, network-flow records, container metadata, process history, and deployment configuration before destroying useful forensic context.
8. Look For Impact, Not Only Error Messages
Review:
- calls to the six named endpoints
- unexpected
image_urldestinations - requests for internal, loopback, link-local, or file locations
- unplanned LoRA loads or weight updates
- unexplained distributed-weight transfers
- outbound connections from the inference host
- access to secrets or model files
- child processes launched by the SGLang service account
- unexplained model-file changes
A successful unsafe-deserialization attack may look like ordinary server-side code execution, not like a suspicious model response.
9. Track The Exact CVEs Through A Confirmed Fix
The fix gate should name:
- fixed SGLang version or commit
- all six CVEs
- required configuration migrations
- endpoints or features affected
- any secret-rotation or compromise-assessment guidance
Keep compensating controls in place until that mapping exists and the deployment has been retested.
What This Disclosure Does Not Prove
The six vulnerabilities do not prove that:
- every SGLang deployment is internet exposed
- every SGLang operator has been hacked
- every model on Hugging Face is malicious
safetensorsfixes all six issues- local AI is inherently less private than hosted AI
- a model generated the exploit
- API authentication alone fixes the control plane
- a hosted AI provider is immune to infrastructure vulnerabilities
- OpenVeil protects an SGLang server
The narrow conclusion is serious enough: local model execution inherits the security of the server, operating system, network, model files, and administrative endpoints around it.
Where OpenVeil Fits
OpenVeil does not patch SGLang, audit a user's GPU server, or turn a vulnerable local deployment into a safe one.
OpenVeil offers a different tradeoff: a paid privacy-focused AI chat workspace with browser-local chat history, no server-side chat-history record for private chat sessions, and web search, uploads, voice, and image tools where enabled.
That means a user does not have to install and operate an inference server. It does not mean OpenVeil is fully offline, anonymous, provider-blind, or protected from every infrastructure risk. Active requests may still be processed by OpenVeil and necessary AI, hosting, routing, search, upload, security, billing, and infrastructure providers.
Choose local AI when controlling inference hardware and keeping processing on infrastructure you operate are requirements—and when you are prepared to secure that full stack.
Consider OpenVeil when you want a hosted privacy-focused workspace without maintaining the model server yourself, while accepting the active-processing boundary in the OpenVeil privacy policy.
For the broader tradeoff, read:
- Private AI Chat vs Local AI: Which Should You Use?
- Does Using Ollama Mean Your AI Is Always Local?
- Can Kimi K3 Really Run Privately? The 2.8T Hardware Catch
- What To Check Before Trusting Any AI Privacy Claim
Frequently Asked Questions
What Is SGLang?
SGLang is an open-source framework for serving large language, vision-language, embedding, reward, and diffusion models. It supports models including Llama, Qwen, DeepSeek, Kimi, GLM, Gemma, and Mistral and provides OpenAI-compatible APIs.
Are The New SGLang Vulnerabilities Patched?
CERT/CC said no maintainer patches were available when it published VU#281278 on July 30, 2026. The public CVE records did not identify affected or fixed version ranges during OpenVeil's review. Check CERT, the SGLang project, and the individual CVEs for updates before treating any release as fixed.
Is SGLang Safe If It Is Only On My Local Computer?
Loopback-only exposure materially reduces remote reachability. Risk can remain if a local application forwards untrusted input, a malicious process already runs on the machine, an untrusted model file is loaded, or the service is actually reachable through a container mapping, LAN address, tunnel, or browser-accessible bridge.
Does An SGLang API Key Fix These Flaws?
Not by itself. CERT says most reported paths do not require authentication, and one finding specifically concerns information leaked when only the admin API key is configured. Treat network isolation, endpoint restriction, authentication, process isolation, and safe model loading as separate layers.
Can A Hugging Face Model Execute Code?
Some model repositories contain custom code, and pickle-backed weight files can execute code if loaded unsafely. Python warns never to unpickle untrusted data. Prefer trusted publishers, pinned revisions, reviewed code, and safer formats such as safetensors where supported.
Does safetensors Fix The SGLang Vulnerabilities?
It helps avoid the pickle-backed .bin weight risk described in one finding. It does not fix the LoRA endpoint, optional dumper, remote image fetching, server-information leakage, or distributed weight-exfiltration paths.
Can The Image-URL Flaw Read Prompts?
The public advisory focuses on server-side requests and local-file access through image_url, including access to internal metadata, secrets, and services. It does not specifically document prompt-history theft. What an attacker could obtain would depend on the files and services reachable from the affected process.
Should I Take My SGLang Server Offline?
If the service is reachable from an untrusted network and compensating controls cannot be applied confidently, removing that reachability is the prudent immediate step. A production decision should account for which endpoints are enabled, what the process can access, and whether the deployment can be isolated while awaiting a confirmed patch.
Does Local AI Still Have Privacy Benefits?
Yes. Properly designed local inference can keep prompts and outputs on infrastructure you control. The SGLang disclosure shows that locality is one part of privacy, not the whole claim. Network exposure, software vulnerabilities, model-file provenance, logging, secrets, backups, and process privileges still matter.
The Bottom Line
CERT/CC's July 30 disclosure turns a familiar local-AI assumption upside down: the weights can stay on your server while the server's endpoints still expose files, credentials, code execution, or the weights themselves.
The immediate response is concrete:
- remove untrusted network reachability
- disable unused control paths and remote fetching
- set
SGLANG_USE_PICKLE_IPCto false - prefer trusted, pinned
safetensorsmodel artifacts - restrict the process's files, secrets, privileges, and egress
- rotate exposed credentials and review evidence
- track all six CVEs to an authoritative patched release
Local AI can provide meaningful control. But local model weights do not automatically create a secure local AI system.
Sources
- CERT/CC VU#281278: six SGLang vulnerabilities
- GitHub advisory for CVE-2026-15969: LoRA tensor endpoint code execution
- GitHub advisory for CVE-2026-15971: optional dumper code execution
- GitHub advisory for CVE-2026-15974: SSRF and local-file access
- GitHub advisory for CVE-2026-15976: unsafe
.binweight loading - GitHub advisory for CVE-2026-15977: server-information credential leakage
- GitHub advisory for CVE-2026-15978: model-weight exfiltration
- Official SGLang repository
- Official SGLang documentation
- Python
picklesecurity warning - Hugging Face pickle-scanning and model-file security guidance
- Hugging Face guide to converting weights to
safetensors