Security Advisories
CVE-2026-114612: LiteLLM, Admin Takeover, and the Risk of Centralizing Your AI Keys
How a low-privilege LiteLLM user could become proxy admin, what October's compromised release and file-read flaw add, and how to protect the keys an AI gateway holds.
This independent write-up is not affiliated with the vendors named. Patch status reflects public advisories on the date shown, so confirm it against your vendor before acting.
CVE-2026-114612 is a privilege escalation flaw in LiteLLM, a widely used proxy for calling LLM APIs. An authenticated user with internal_user privileges can obtain a forged administrator credential and use it to reach admin functions, including arbitrary commands through the MCP stdio endpoint. It is rated 9.9. From version 1.91.0 onward it is exploitable in the default configuration.
It was also not LiteLLM's only security event of the month. On October 21, a malicious version of LiteLLM was published to PyPI and Docker tags were pointed at a compromised image. On October 27, the project disclosed a critical unauthenticated file read affecting Enterprise proxies.
An AI gateway is a very convenient single place to hold every provider key. That also makes it a very valuable single target. If LiteLLM sits in your stack, it is worth checking three separate things today, and they do not all have the same fix.
/01
How the admin takeover works
According to the project's advisory, the proxy uses one encryption key for two purposes: sealing secrets at rest and minting session tokens. An internal user can get crafted metadata containing a forged admin identity encrypted and returned through the API key flow. When that output is replayed as a bearer token, the proxy decrypts it successfully and trusts it.
This is a textbook reason to keep cryptographic purposes separate. Data encrypted by a system is not automatically something that system should trust as a credential. The exposure depends on who holds internal_user access. It may be a handful of colleagues, or it may be every customer, if your product issues accounts on the proxy.
- Affected: 1.91.0 and later in the default configuration, and 1.87.0 to 1.90.x with EXPERIMENTAL_UI_LOGIN enabled.
- Fixed in 1.100.4, 1.101.3, 1.102.2, 1.103.1, and 1.104.0rc2.
- Workaround: set EXPERIMENTAL_UI_LOGIN=false, which the advisory says breaks CLI SSO and Claude Code gateway login.
/02
The compromised 1.107.0 release
This one needs a different response, because no vulnerable code path is involved. According to LiteLLM's incident report, a malicious litellm==1.107.0 was live on PyPI on October 21 from 11:39:51 to 13:23 UTC. Docker tags v1.107.0, latest, main-latest, and main-stable pointed at a compromised image from 11:46 to 14:20 UTC. The enterprise private registry was not affected.
If anything you run pulled those during that window, upgrading alone is not enough. The project's advice is to rotate everything: every provider key stored in the proxy database, the master and virtual keys, and the database password. Note how easily this could happen without anyone deciding to upgrade. An unpinned install or a container that pulls latest on restart would have been enough.
/03
The Enterprise file read
GHSA-w4c7-34wj-hqm8, published October 27 with no CVE ID, describes an unauthenticated file read on Enterprise proxies. The advisory says reading the process environment exposes LITELLM_MASTER_KEY and provider API keys. Affected versions are those below 1.103.10, 1.104.8, 1.105.6, and 1.106.5 on their respective lines. Open-source deployments without a license are not affected.
/04
What to do now
Pick a target that clears all three issues. That means a version past the fixes above and not 1.107.0. The project's latest release on November 4 was v1.108.0. Pin it exactly and stop deploying from floating tags.
Then decide about secrets. The advisory for CVE-2026-114612 gives no rotation guidance, and we found none in the release notes. Our view is that if any untrusted or semi-trusted account could reach a vulnerable version, you should treat the keys on that proxy as exposed, since admin access and command execution put them within reach. Check LiteLLM's documentation before changing LITELLM_SALT_KEY, because stored credentials are encrypted with it and a careless change can leave them unreadable.
- Check your lockfile, container digests, and deploy history for 1.107.0 during the October 21 window.
- List who holds internal_user access, and remove accounts that do not need it.
- Review admin activity, new keys, and new MCP servers for anything you cannot explain.
- Rotate provider keys, and set spending limits so a stolen key has a visible, bounded cost.
- Keep the proxy off the public internet where possible, and isolate it from other services.
/05
Thinking about gateway risk
None of this means you should stop using a gateway. Routing model calls through one place gives you logging, budgets, and failover, and it can keep provider keys out of application code. It does concentrate risk, though, and the proxy deserves the same care as your production database. It often holds the keys to every model account you have, and frequently sees all of your prompts and responses as well.
Reduce the blast radius where you can. Use separate provider keys per environment, and keep spending limits low. Give the proxy process few privileges, disable MCP or admin features you do not use, and watch provider billing dashboards for unusual activity. A hosted gateway is also a reasonable option if you do not want to run this yourself.
/06
What this means if your AI product earns money
A typical AI-built product added LiteLLM in an afternoon, often from a Compose file that tracks a latest tag. That choice makes sense at the prototype stage. When the product has paying customers, a floating tag means someone else's bad day can quietly become your stolen API keys and an enormous model bill.
The work here is not exotic: pinned versions, verified images, scoped keys, rehearsed rotation, and someone who reads advisories for the tools you depend on. Founders rarely have time for it, and AI assistants do not bring it up. If you would like an experienced engineer to review your AI stack and own this work, that is what our production hardening engagements and retainers are for.
Frequently asked
Questions about this topic.
Which LiteLLM versions fix CVE-2026-114612?
LiteLLM 1.100.4, 1.101.3, 1.102.2, 1.103.1, and 1.104.0rc2 fix it. Choose a current release that also clears the Enterprise file read, avoid the compromised 1.107.0, and pin the version exactly.
Was I affected by the LiteLLM 1.107.0 compromise?
You may be if you installed litellm==1.107.0 from PyPI on October 21, 2026 between 11:39 and 13:23 UTC, or pulled the affected Docker tags between 11:46 and 14:20 UTC. Unpinned installs and latest tags could pull it automatically. If so, follow the project's guidance and rotate all secrets.
Should I rotate my provider keys after CVE-2026-114612?
The advisory does not address this. If people you do not fully trust held accounts on a vulnerable version, we recommend rotating, since an attacker with admin access could reach stored secrets.
Sources